From 4ebc9c3b5e4cbdd4cdf3e08906fef7ea49fed508 Mon Sep 17 00:00:00 2001 From: Yulong Wang Date: Tue, 27 Apr 2021 00:04:25 -0700 Subject: [PATCH] [JS] onnxruntime-web (#7394) * add web * add script and test * fix lint * add test/data/ops * add test/data/node/ to gitignore * modify scripts * add onnxjs * fix tests * fix test-runner * fix sourcemap * fix onnxjs profiling * update test list * update README * resolve comments * set wasm as default backend * rename package * update copyright header * do not use class "Buffer" in browser context * revise readme --- js/.eslintrc.js | 25 +- js/.vscode/launch.json | 34 + js/.vscode/settings.json | 4 +- js/README.md | 27 +- js/common/README.md | 13 + js/common/lib/backend.ts | 7 +- js/common/lib/inference-session-impl.ts | 7 + js/common/lib/inference-session.ts | 14 + js/common/tsconfig.json | 2 +- js/common/webpack.config.js | 6 +- js/node/README.md | 12 +- js/node/lib/backend.ts | 6 + js/node/script/build.ts | 3 + js/node/script/prepack.ts | 3 + js/node/test/test-runner.ts | 4 +- js/node/tsconfig.json | 24 +- js/tsconfig.json | 3 +- js/web/.gitignore | 19 + js/web/README.md | 153 + js/web/karma.conf.js | 177 + js/web/lib/backend-onnxjs.ts | 56 + js/web/lib/backend-wasm.ts | 50 + js/web/lib/index.ts | 10 + js/web/lib/onnxjs/attribute.ts | 201 + js/web/lib/onnxjs/backend.ts | 146 + js/web/lib/onnxjs/backends/backend-webgl.ts | 77 + .../onnxjs/backends/webgl/glsl-array-lib.ts | 74 + .../backends/webgl/glsl-coordinate-lib.ts | 1215 + .../onnxjs/backends/webgl/glsl-definitions.ts | 119 + .../backends/webgl/glsl-encoding-lib.ts | 99 + .../backends/webgl/glsl-fragcolor-lib.ts | 45 + .../backends/webgl/glsl-function-inliner.ts | 53 + .../backends/webgl/glsl-preprocessor.ts | 129 + .../backends/webgl/glsl-registered-libs.ts | 18 + .../backends/webgl/glsl-shape-utils-lib.ts | 171 + .../lib/onnxjs/backends/webgl/glsl-source.ts | 103 + .../lib/onnxjs/backends/webgl/glsl-vec-lib.ts | 113 + .../backends/webgl/inference-handler.ts | 283 + .../onnxjs/backends/webgl/op-resolve-rules.ts | 108 + .../backends/webgl/ops/batch-normalization.ts | 43 + .../onnxjs/backends/webgl/ops/binary-op.ts | 252 + js/web/lib/onnxjs/backends/webgl/ops/clip.ts | 41 + .../lib/onnxjs/backends/webgl/ops/concat.ts | 149 + js/web/lib/onnxjs/backends/webgl/ops/conv.ts | 284 + .../lib/onnxjs/backends/webgl/ops/dropout.ts | 22 + js/web/lib/onnxjs/backends/webgl/ops/elu.ts | 39 + .../lib/onnxjs/backends/webgl/ops/flatten.ts | 17 + .../lib/onnxjs/backends/webgl/ops/gather.ts | 70 + js/web/lib/onnxjs/backends/webgl/ops/gemm.ts | 80 + .../onnxjs/backends/webgl/ops/image-scaler.ts | 60 + .../webgl/ops/instance-normalization.ts | 149 + .../onnxjs/backends/webgl/ops/leaky-relu.ts | 39 + .../lib/onnxjs/backends/webgl/ops/matmul.ts | 55 + js/web/lib/onnxjs/backends/webgl/ops/pack.ts | 149 + .../backends/webgl/ops/packing_utils.ts | 32 + js/web/lib/onnxjs/backends/webgl/ops/pad.ts | 137 + js/web/lib/onnxjs/backends/webgl/ops/pool.ts | 293 + .../lib/onnxjs/backends/webgl/ops/reduce.ts | 138 + .../lib/onnxjs/backends/webgl/ops/reshape.ts | 38 + js/web/lib/onnxjs/backends/webgl/ops/slice.ts | 100 + .../lib/onnxjs/backends/webgl/ops/softmax.ts | 217 + js/web/lib/onnxjs/backends/webgl/ops/split.ts | 62 + .../lib/onnxjs/backends/webgl/ops/squeeze.ts | 15 + js/web/lib/onnxjs/backends/webgl/ops/sum.ts | 39 + js/web/lib/onnxjs/backends/webgl/ops/tile.ts | 46 + .../onnxjs/backends/webgl/ops/transpose.ts | 74 + .../onnxjs/backends/webgl/ops/uint8-encode.ts | 86 + .../lib/onnxjs/backends/webgl/ops/unary-op.ts | 172 + .../lib/onnxjs/backends/webgl/ops/unpack.ts | 82 + .../onnxjs/backends/webgl/ops/unsqueeze.ts | 15 + .../lib/onnxjs/backends/webgl/ops/upsample.ts | 193 + .../onnxjs/backends/webgl/program-manager.ts | 185 + .../onnxjs/backends/webgl/session-handler.ts | 68 + .../backends/webgl/texture-data-encoder.ts | 160 + .../backends/webgl/texture-layout-strategy.ts | 227 + .../onnxjs/backends/webgl/texture-manager.ts | 199 + js/web/lib/onnxjs/backends/webgl/types.ts | 132 + js/web/lib/onnxjs/backends/webgl/utils.ts | 64 + .../backends/webgl/webgl-context-factory.ts | 91 + .../onnxjs/backends/webgl/webgl-context.ts | 473 + js/web/lib/onnxjs/execution-plan.ts | 163 + js/web/lib/onnxjs/graph.ts | 553 + js/web/lib/onnxjs/instrument.ts | 386 + js/web/lib/onnxjs/model.ts | 36 + js/web/lib/onnxjs/operators.ts | 18 + js/web/lib/onnxjs/ops/argMax.ts | 35 + js/web/lib/onnxjs/ops/batch-normalization.ts | 57 + js/web/lib/onnxjs/ops/binary-op.ts | 35 + js/web/lib/onnxjs/ops/cast.ts | 33 + js/web/lib/onnxjs/ops/clip.ts | 35 + js/web/lib/onnxjs/ops/concat.ts | 49 + js/web/lib/onnxjs/ops/conv.ts | 91 + js/web/lib/onnxjs/ops/dropout.ts | 35 + js/web/lib/onnxjs/ops/elu.ts | 33 + js/web/lib/onnxjs/ops/expand.ts | 33 + js/web/lib/onnxjs/ops/flatten.ts | 43 + js/web/lib/onnxjs/ops/gather.ts | 42 + js/web/lib/onnxjs/ops/gemm.ts | 62 + js/web/lib/onnxjs/ops/image-scaler.ts | 39 + .../lib/onnxjs/ops/instance-normalization.ts | 45 + js/web/lib/onnxjs/ops/leaky-relu.ts | 33 + js/web/lib/onnxjs/ops/lrn.ts | 44 + js/web/lib/onnxjs/ops/matmul.ts | 41 + js/web/lib/onnxjs/ops/pad.ts | 37 + js/web/lib/onnxjs/ops/pool.ts | 87 + js/web/lib/onnxjs/ops/reduce-op.ts | 35 + js/web/lib/onnxjs/ops/reshape.ts | 33 + js/web/lib/onnxjs/ops/shape.ts | 21 + js/web/lib/onnxjs/ops/slice.ts | 65 + js/web/lib/onnxjs/ops/softmax.ts | 33 + js/web/lib/onnxjs/ops/split.ts | 39 + js/web/lib/onnxjs/ops/squeeze.ts | 34 + js/web/lib/onnxjs/ops/sum.ts | 47 + js/web/lib/onnxjs/ops/tile.ts | 37 + js/web/lib/onnxjs/ops/transpose.ts | 33 + js/web/lib/onnxjs/ops/unary-op.ts | 31 + js/web/lib/onnxjs/ops/unsqueeze.ts | 34 + js/web/lib/onnxjs/ops/upsample.ts | 80 + js/web/lib/onnxjs/opset.ts | 66 + js/web/lib/onnxjs/session-handler.ts | 44 + js/web/lib/onnxjs/session.ts | 257 + js/web/lib/onnxjs/tensor.ts | 430 + js/web/lib/onnxjs/util.ts | 1209 + js/web/lib/wasm/binding/index.ts | 42 + js/web/lib/wasm/binding/onnxruntime_wasm.d.ts | 32 + js/web/lib/wasm/index.ts | 5 + js/web/lib/wasm/session-handler.ts | 315 + js/web/package-lock.json | 5312 + js/web/package.json | 67 + js/web/script/build.ts | 59 + js/web/script/prepare-test-data.ts | 52 + js/web/script/test-runner-cli-args.ts | 391 + js/web/script/test-runner-cli.ts | 596 + js/web/test/data/ops/abs.jsonc | 77 + js/web/test/data/ops/absr.jsonc | 26 + js/web/test/data/ops/abss.jsonc | 76 + js/web/test/data/ops/acos.jsonc | 86 + js/web/test/data/ops/add.jsonc | 213 + js/web/test/data/ops/add_int32.jsonc | 31 + js/web/test/data/ops/and.jsonc | 119 + js/web/test/data/ops/asin.jsonc | 86 + js/web/test/data/ops/ceil.jsonc | 77 + js/web/test/data/ops/conv.jsonc | 163 + js/web/test/data/ops/cos.jsonc | 86 + js/web/test/data/ops/div.jsonc | 213 + js/web/test/data/ops/equal.jsonc | 141 + js/web/test/data/ops/exp.jsonc | 86 + js/web/test/data/ops/floor.jsonc | 77 + js/web/test/data/ops/gather.jsonc | 97 + js/web/test/data/ops/gemm.jsonc | 41 + .../test/data/ops/global-average-pool.jsonc | 199 + js/web/test/data/ops/greater.jsonc | 141 + js/web/test/data/ops/identity.jsonc | 60 + js/web/test/data/ops/image-scaler.jsonc | 79 + js/web/test/data/ops/leaky-relu.jsonc | 67 + js/web/test/data/ops/less.jsonc | 141 + js/web/test/data/ops/log.jsonc | 86 + js/web/test/data/ops/matmul.jsonc | 1354 + js/web/test/data/ops/mul.jsonc | 213 + js/web/test/data/ops/mul_int32.jsonc | 31 + js/web/test/data/ops/neg.jsonc | 77 + js/web/test/data/ops/not.jsonc | 77 + js/web/test/data/ops/or.jsonc | 119 + js/web/test/data/ops/pad-big.jsonc | 99883 ++++++++++++++++ js/web/test/data/ops/pad.jsonc | 1291 + js/web/test/data/ops/pow-big-number.jsonc | 82 + js/web/test/data/ops/pow.jsonc | 141 + js/web/test/data/ops/reduce-min.jsonc | 67 + js/web/test/data/ops/relu.jsonc | 43 + js/web/test/data/ops/reshape.jsonc | 97 + js/web/test/data/ops/sin.jsonc | 86 + js/web/test/data/ops/softmax.jsonc | 36 + js/web/test/data/ops/split.jsonc | 79 + js/web/test/data/ops/sqrt.jsonc | 60 + js/web/test/data/ops/sub.jsonc | 213 + js/web/test/data/ops/sub_int32.jsonc | 31 + js/web/test/data/ops/tan.jsonc | 86 + js/web/test/data/ops/transpose.jsonc | 470 + js/web/test/data/ops/upsample.jsonc | 518 + js/web/test/data/ops/xor.jsonc | 119 + js/web/test/test-main.ts | 113 + js/web/test/test-runner.ts | 547 + js/web/test/test-shared.ts | 48 + js/web/test/test-suite-whitelist.jsonc | 362 + js/web/test/test-types.ts | 141 + .../webgl/test_glsl_function_inliner.ts | 67 + .../backends/webgl/test_pack_unpack.ts | 396 + js/web/test/unittests/index.ts | 9 + js/web/test/unittests/opset.ts | 102 + js/web/tsconfig.json | 9 + js/web/webpack.config.js | 156 + 191 files changed, 129412 insertions(+), 43 deletions(-) create mode 100644 js/.vscode/launch.json create mode 100644 js/common/README.md create mode 100644 js/web/.gitignore create mode 100644 js/web/README.md create mode 100644 js/web/karma.conf.js create mode 100644 js/web/lib/backend-onnxjs.ts create mode 100644 js/web/lib/backend-wasm.ts create mode 100644 js/web/lib/index.ts create mode 100644 js/web/lib/onnxjs/attribute.ts create mode 100644 js/web/lib/onnxjs/backend.ts create mode 100644 js/web/lib/onnxjs/backends/backend-webgl.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-array-lib.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-coordinate-lib.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-definitions.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-encoding-lib.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-fragcolor-lib.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-function-inliner.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-preprocessor.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-registered-libs.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-shape-utils-lib.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-source.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/glsl-vec-lib.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/inference-handler.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/op-resolve-rules.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/batch-normalization.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/binary-op.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/clip.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/concat.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/conv.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/dropout.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/elu.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/flatten.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/gather.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/gemm.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/image-scaler.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/instance-normalization.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/leaky-relu.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/matmul.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/pack.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/packing_utils.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/pad.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/pool.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/reduce.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/reshape.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/slice.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/softmax.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/split.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/squeeze.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/sum.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/tile.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/transpose.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/uint8-encode.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/unary-op.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/unpack.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/unsqueeze.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/ops/upsample.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/program-manager.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/session-handler.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/texture-data-encoder.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/texture-layout-strategy.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/texture-manager.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/types.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/utils.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/webgl-context-factory.ts create mode 100644 js/web/lib/onnxjs/backends/webgl/webgl-context.ts create mode 100644 js/web/lib/onnxjs/execution-plan.ts create mode 100644 js/web/lib/onnxjs/graph.ts create mode 100644 js/web/lib/onnxjs/instrument.ts create mode 100644 js/web/lib/onnxjs/model.ts create mode 100644 js/web/lib/onnxjs/operators.ts create mode 100644 js/web/lib/onnxjs/ops/argMax.ts create mode 100644 js/web/lib/onnxjs/ops/batch-normalization.ts create mode 100644 js/web/lib/onnxjs/ops/binary-op.ts create mode 100644 js/web/lib/onnxjs/ops/cast.ts create mode 100644 js/web/lib/onnxjs/ops/clip.ts create mode 100644 js/web/lib/onnxjs/ops/concat.ts create mode 100644 js/web/lib/onnxjs/ops/conv.ts create mode 100644 js/web/lib/onnxjs/ops/dropout.ts create mode 100644 js/web/lib/onnxjs/ops/elu.ts create mode 100644 js/web/lib/onnxjs/ops/expand.ts create mode 100644 js/web/lib/onnxjs/ops/flatten.ts create mode 100644 js/web/lib/onnxjs/ops/gather.ts create mode 100644 js/web/lib/onnxjs/ops/gemm.ts create mode 100644 js/web/lib/onnxjs/ops/image-scaler.ts create mode 100644 js/web/lib/onnxjs/ops/instance-normalization.ts create mode 100644 js/web/lib/onnxjs/ops/leaky-relu.ts create mode 100644 js/web/lib/onnxjs/ops/lrn.ts create mode 100644 js/web/lib/onnxjs/ops/matmul.ts create mode 100644 js/web/lib/onnxjs/ops/pad.ts create mode 100644 js/web/lib/onnxjs/ops/pool.ts create mode 100644 js/web/lib/onnxjs/ops/reduce-op.ts create mode 100644 js/web/lib/onnxjs/ops/reshape.ts create mode 100644 js/web/lib/onnxjs/ops/shape.ts create mode 100644 js/web/lib/onnxjs/ops/slice.ts create mode 100644 js/web/lib/onnxjs/ops/softmax.ts create mode 100644 js/web/lib/onnxjs/ops/split.ts create mode 100644 js/web/lib/onnxjs/ops/squeeze.ts create mode 100644 js/web/lib/onnxjs/ops/sum.ts create mode 100644 js/web/lib/onnxjs/ops/tile.ts create mode 100644 js/web/lib/onnxjs/ops/transpose.ts create mode 100644 js/web/lib/onnxjs/ops/unary-op.ts create mode 100644 js/web/lib/onnxjs/ops/unsqueeze.ts create mode 100644 js/web/lib/onnxjs/ops/upsample.ts create mode 100644 js/web/lib/onnxjs/opset.ts create mode 100644 js/web/lib/onnxjs/session-handler.ts create mode 100644 js/web/lib/onnxjs/session.ts create mode 100644 js/web/lib/onnxjs/tensor.ts create mode 100644 js/web/lib/onnxjs/util.ts create mode 100644 js/web/lib/wasm/binding/index.ts create mode 100644 js/web/lib/wasm/binding/onnxruntime_wasm.d.ts create mode 100644 js/web/lib/wasm/index.ts create mode 100644 js/web/lib/wasm/session-handler.ts create mode 100644 js/web/package-lock.json create mode 100644 js/web/package.json create mode 100644 js/web/script/build.ts create mode 100644 js/web/script/prepare-test-data.ts create mode 100644 js/web/script/test-runner-cli-args.ts create mode 100644 js/web/script/test-runner-cli.ts create mode 100644 js/web/test/data/ops/abs.jsonc create mode 100644 js/web/test/data/ops/absr.jsonc create mode 100644 js/web/test/data/ops/abss.jsonc create mode 100644 js/web/test/data/ops/acos.jsonc create mode 100644 js/web/test/data/ops/add.jsonc create mode 100644 js/web/test/data/ops/add_int32.jsonc create mode 100644 js/web/test/data/ops/and.jsonc create mode 100644 js/web/test/data/ops/asin.jsonc create mode 100644 js/web/test/data/ops/ceil.jsonc create mode 100644 js/web/test/data/ops/conv.jsonc create mode 100644 js/web/test/data/ops/cos.jsonc create mode 100644 js/web/test/data/ops/div.jsonc create mode 100644 js/web/test/data/ops/equal.jsonc create mode 100644 js/web/test/data/ops/exp.jsonc create mode 100644 js/web/test/data/ops/floor.jsonc create mode 100644 js/web/test/data/ops/gather.jsonc create mode 100644 js/web/test/data/ops/gemm.jsonc create mode 100644 js/web/test/data/ops/global-average-pool.jsonc create mode 100644 js/web/test/data/ops/greater.jsonc create mode 100644 js/web/test/data/ops/identity.jsonc create mode 100644 js/web/test/data/ops/image-scaler.jsonc create mode 100644 js/web/test/data/ops/leaky-relu.jsonc create mode 100644 js/web/test/data/ops/less.jsonc create mode 100644 js/web/test/data/ops/log.jsonc create mode 100644 js/web/test/data/ops/matmul.jsonc create mode 100644 js/web/test/data/ops/mul.jsonc create mode 100644 js/web/test/data/ops/mul_int32.jsonc create mode 100644 js/web/test/data/ops/neg.jsonc create mode 100644 js/web/test/data/ops/not.jsonc create mode 100644 js/web/test/data/ops/or.jsonc create mode 100644 js/web/test/data/ops/pad-big.jsonc create mode 100644 js/web/test/data/ops/pad.jsonc create mode 100644 js/web/test/data/ops/pow-big-number.jsonc create mode 100644 js/web/test/data/ops/pow.jsonc create mode 100644 js/web/test/data/ops/reduce-min.jsonc create mode 100644 js/web/test/data/ops/relu.jsonc create mode 100644 js/web/test/data/ops/reshape.jsonc create mode 100644 js/web/test/data/ops/sin.jsonc create mode 100644 js/web/test/data/ops/softmax.jsonc create mode 100644 js/web/test/data/ops/split.jsonc create mode 100644 js/web/test/data/ops/sqrt.jsonc create mode 100644 js/web/test/data/ops/sub.jsonc create mode 100644 js/web/test/data/ops/sub_int32.jsonc create mode 100644 js/web/test/data/ops/tan.jsonc create mode 100644 js/web/test/data/ops/transpose.jsonc create mode 100644 js/web/test/data/ops/upsample.jsonc create mode 100644 js/web/test/data/ops/xor.jsonc create mode 100644 js/web/test/test-main.ts create mode 100644 js/web/test/test-runner.ts create mode 100644 js/web/test/test-shared.ts create mode 100644 js/web/test/test-suite-whitelist.jsonc create mode 100644 js/web/test/test-types.ts create mode 100644 js/web/test/unittests/backends/webgl/test_glsl_function_inliner.ts create mode 100644 js/web/test/unittests/backends/webgl/test_pack_unpack.ts create mode 100644 js/web/test/unittests/index.ts create mode 100644 js/web/test/unittests/opset.ts create mode 100644 js/web/tsconfig.json create mode 100644 js/web/webpack.config.js diff --git a/js/.eslintrc.js b/js/.eslintrc.js index 6bb76e1209..2cfc21079c 100644 --- a/js/.eslintrc.js +++ b/js/.eslintrc.js @@ -108,13 +108,14 @@ module.exports = { 'jsdoc/newline-after-description': 'error', } }, { - files: ['node/script/**/*.ts', 'node/test/**/*.ts'], rules: { + files: ['node/script/**/*.ts', 'node/test/**/*.ts', 'web/script/**/*.ts', 'web/test/**/*.ts'], rules: { '@typescript-eslint/naming-convention': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-require-imports': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-unnecessary-type-assertion': 'off', 'camelcase': 'off', 'prefer-arrow/prefer-arrow-functions': 'off', 'import/no-extraneous-dependencies': 'off', @@ -124,6 +125,28 @@ module.exports = { 'no-empty': 'off', 'no-unused-expressions': 'off', } + }, { + files: ['web/lib/**/*.ts'], rules: { + 'no-underscore-dangle': 'off', + } + }, { + files: ['web/lib/onnxjs/**/*.ts'], rules: { + // TODO: those rules are useful. should turn on them in future (webgl refactor) + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/no-unnecessary-type-assertion': 'off', + '@typescript-eslint/restrict-plus-operands': 'off', + 'import/no-internal-modules': 'off', + 'prefer-arrow/prefer-arrow-functions': 'off', + 'no-param-reassign': 'off', + 'guard-for-in': 'off' + } + }, { + files: ['web/lib/wasm/binding/**/*.ts'], rules: { + '@typescript-eslint/naming-convention': 'off' + } }], extends: [ 'eslint:recommended', diff --git a/js/.vscode/launch.json b/js/.vscode/launch.json new file mode 100644 index 0000000000..5c986ec6c9 --- /dev/null +++ b/js/.vscode/launch.json @@ -0,0 +1,34 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "attach", + "name": "Attach to Chrome", + "port": 9333, + "webRoot": "${workspaceFolder}", + "sourceMapPathOverrides": { + "webpack://ort/*": "${webRoot}/common/*", + "webpack:///*": "${webRoot}/web/*" + }, + "sourceMaps": true, + "smartStep": true + }, + { + "name": "Remote Browser via Webkit Adaptor", + "type": "chrome", + "request": "attach", + "port": 9000, + "webRoot": "${workspaceFolder}", + "sourceMapPathOverrides": { + "webpack://ort/*": "${webRoot}/common/*", + "webpack:///*": "${webRoot}/web/*" + }, + "sourceMaps": true, + "smartStep": true + } + ] +} diff --git a/js/.vscode/settings.json b/js/.vscode/settings.json index 8ee70c6569..0795a5c586 100644 --- a/js/.vscode/settings.json +++ b/js/.vscode/settings.json @@ -26,7 +26,9 @@ "common/lib/**/*.js.map": true, "common/lib/**/*.js": true, "node/lib/**/*.js.map": true, - "node/lib/**/*.js": true + "node/lib/**/*.js": true, + "web/lib/**/*.js.map": true, + "web/lib/**/*.js": true }, "files.insertFinalNewline": true, "files.trimTrailingWhitespace": true, diff --git a/js/README.md b/js/README.md index 23ac6609cc..fee9a6bedb 100644 --- a/js/README.md +++ b/js/README.md @@ -102,13 +102,34 @@ It should be able to consumed by from projects that uses NPM packages (through a > language: typescript -> dependency: onnxruntime-common, onnxruntime_wasm.wasm +> dependency: onnxruntime-common, ONNXRuntime WebAssembly > folder: /js/web -NOTE: This is the successor of ONNX.js. +This project is a library for running ONNX models on browsers. It is the successor of [ONNX.js](https://github.com/Microsoft/onnxjs). - +### Requirements + +Node.js v12+ (recommended v14+) + +### Build + +1. Install NPM packages + + 1. in `/js/`, run `npm ci`. + 2. in `/js/common/`, run `npm ci`. + 3. in `/js/web/`, run `npm ci`. + +2. Follow [instructions](https://www.onnxruntime.ai/docs/how-to/build.html#apis-and-language-bindings) for building ONNX Runtime WebAssembly. + +3. Copy files `onnxruntime_wasm.*` from build output folder to `/js/web/lib/wasm/binding/`. + +4. Use following command in folder `/js/web` to build: + ``` + npm run build + ``` + +### Distribution It should be able to consumed by both from projects that uses NPM packages (through a Node.js folder structure of `node_modules` folder that generated by `npm install onnxruntime-web`) and from a CDN service that serves a `.min.js` file and one or multiple `.wasm` file(s). diff --git a/js/common/README.md b/js/common/README.md new file mode 100644 index 0000000000..acbf790984 --- /dev/null +++ b/js/common/README.md @@ -0,0 +1,13 @@ +# ONNX Runtime JavaScript API + +ONNX Runtime JavaScript API is a unified API for all JavaScript usages. It's dependency of the following NPM packages: + +- onnxruntime-node +- onnxruntime-web +- onnxruntime-react-native + +This package (onnxruntime-common) is not designed for using directly. Please consider to install one of the NPM packages above according to target platform. + +## License + +License information can be found [here](../../README.md#license). diff --git a/js/common/lib/backend.ts b/js/common/lib/backend.ts index 4d55a0700b..aabfe0bdc4 100644 --- a/js/common/lib/backend.ts +++ b/js/common/lib/backend.ts @@ -16,8 +16,11 @@ export declare namespace SessionHandler { export interface SessionHandler { dispose(): Promise; - readonly inputNames: string[]; - readonly outputNames: string[]; + readonly inputNames: readonly string[]; + readonly outputNames: readonly string[]; + + startProfiling(): void; + endProfiling(): void; run(feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType, options: InferenceSession.RunOptions): Promise; diff --git a/js/common/lib/inference-session-impl.ts b/js/common/lib/inference-session-impl.ts index 7a7bb5feb7..c43ea7e419 100644 --- a/js/common/lib/inference-session-impl.ts +++ b/js/common/lib/inference-session-impl.ts @@ -190,6 +190,13 @@ export class InferenceSession implements InferenceSessionInterface { return new InferenceSession(handler); } + startProfiling(): void { + this.handler.startProfiling(); + } + endProfiling(): void { + this.handler.endProfiling(); + } + get inputNames(): readonly string[] { return this.handler.inputNames; } diff --git a/js/common/lib/inference-session.ts b/js/common/lib/inference-session.ts index b2232184e4..9447fa1305 100644 --- a/js/common/lib/inference-session.ts +++ b/js/common/lib/inference-session.ts @@ -212,6 +212,20 @@ export interface InferenceSession { //#endregion + //#region profiling + + /** + * Start profiling. + */ + startProfiling(): void; + + /** + * End profiling. + */ + endProfiling(): void; + + //#endregion + //#region metadata /** diff --git a/js/common/tsconfig.json b/js/common/tsconfig.json index ebe1194113..5bb2264203 100644 --- a/js/common/tsconfig.json +++ b/js/common/tsconfig.json @@ -3,5 +3,5 @@ "compilerOptions": { "declarationDir": "./types" }, - "include": ["lib/"] + "include": ["lib"] } diff --git a/js/common/webpack.config.js b/js/common/webpack.config.js index b0b8c17d66..a282bb6700 100644 --- a/js/common/webpack.config.js +++ b/js/common/webpack.config.js @@ -40,8 +40,10 @@ function buildConfig({ module.exports = (env, argv) => { return [ - buildConfig({ format: 'umd', mode: 'development', devtool: 'inline-source-map', target: 'es5' }), - buildConfig({ format: 'umd', suffix: '.min', target: 'es5' }), + buildConfig({ suffix: '.es6', mode: 'development', devtool: 'inline-source-map', target: 'es6' }), + buildConfig({ mode: 'development', devtool: 'inline-source-map', target: 'es5' }), + buildConfig({ suffix: '.es6.min', target: 'es6' }), + buildConfig({ suffix: '.min', target: 'es5' }), buildConfig({ format: 'commonjs', suffix: '.node', target: 'es5' }), ]; }; diff --git a/js/node/README.md b/js/node/README.md index 665a7e5bc0..62fc8b9d24 100644 --- a/js/node/README.md +++ b/js/node/README.md @@ -1,4 +1,4 @@ -# ONNX Runtime Node.js API +# ONNX Runtime Node.js Binding ONNX Runtime Node.js binding enables Node.js applications to run ONNX model inference. @@ -7,13 +7,7 @@ ONNX Runtime Node.js binding enables Node.js applications to run ONNX model infe Install the latest stable version: ``` -npm install onnxruntime -``` - -Install the latest dev version: - -``` -npm install onnxruntime@dev +npm install onnxruntime-node ``` Refer to [Node.js samples](../../samples/nodejs/README.md) for samples and tutorials. @@ -32,4 +26,4 @@ To use on platforms without pre-built binaries, you can build Node.js binding fr ## License -License information can be found [here](../README.md#license). +License information can be found [here](../../README.md#license). diff --git a/js/node/lib/backend.ts b/js/node/lib/backend.ts index d91995c069..6fb3d51da8 100644 --- a/js/node/lib/backend.ts +++ b/js/node/lib/backend.ts @@ -25,6 +25,12 @@ class OnnxruntimeSessionHandler implements SessionHandler { readonly inputNames: string[]; readonly outputNames: string[]; + startProfiling(): void { + // TODO: implement profiling + } + endProfiling(): void { + // TODO: implement profiling + } async run(feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType, options: InferenceSession.RunOptions): Promise { diff --git a/js/node/script/build.ts b/js/node/script/build.ts index f18136ed3b..bfa717a1be 100644 --- a/js/node/script/build.ts +++ b/js/node/script/build.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + import {execSync, spawnSync} from 'child_process'; import * as fs from 'fs-extra'; import minimist from 'minimist'; diff --git a/js/node/script/prepack.ts b/js/node/script/prepack.ts index 82de1b0f50..0d09084967 100644 --- a/js/node/script/prepack.ts +++ b/js/node/script/prepack.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + import * as fs from 'fs-extra'; import klawSync from 'klaw-sync'; import * as path from 'path'; diff --git a/js/node/test/test-runner.ts b/js/node/test/test-runner.ts index 009f29178a..853c44b5b9 100644 --- a/js/node/test/test-runner.ts +++ b/js/node/test/test-runner.ts @@ -88,12 +88,12 @@ export function run(testDataFolder: string): void { } if (session !== null) { - const feeds = {}; + const feeds: Record = {}; if (inputs.length !== session.inputNames.length) { throw new RangeError('input length does not match name list'); } for (let i = 0; i < inputs.length; i++) { - feeds[session.inputNames[i]] = inputs[i]; + feeds[session.inputNames[i]] = inputs[i]!; } const outputs = await session.run(feeds); diff --git a/js/node/tsconfig.json b/js/node/tsconfig.json index 85d6d1fcc6..cb68ecf28e 100644 --- a/js/node/tsconfig.json +++ b/js/node/tsconfig.json @@ -1,24 +1,8 @@ { - "include": ["lib", "script", "test"], - "compileOnSave": true, + "extends": "../tsconfig.json", "compilerOptions": { "module": "CommonJS", - "moduleResolution": "node", - "declaration": true, - "declarationDir": "./types", - "esModuleInterop": true, - "target": "es2015", - "lib": ["es2015", "ESNext.BigInt"], - "sourceMap": true, - "noUnusedLocals": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": true, - "noUnusedParameters": false, - "pretty": true, - "allowUnreachableCode": false, - "experimentalDecorators": true, - "downlevelIteration": true - } + "declarationDir": "./types" + }, + "include": ["lib", "script", "test"] } diff --git a/js/tsconfig.json b/js/tsconfig.json index e688783e64..b685a91da2 100644 --- a/js/tsconfig.json +++ b/js/tsconfig.json @@ -19,6 +19,5 @@ "experimentalDecorators": true, "downlevelIteration": true, "incremental": true - }, - "exclude": ["node_modules/"] + } } diff --git a/js/web/.gitignore b/js/web/.gitignore new file mode 100644 index 0000000000..4ec6ca918a --- /dev/null +++ b/js/web/.gitignore @@ -0,0 +1,19 @@ +/.vscode/ipch/ + +node_modules/ +types/ +dist/ + +tsconfig.tsbuildinfo + +lib/**/*.js +lib/**/*.js.map +test/**/*.js +test/**/*.js.map +script/**/*.js +script/**/*.js.map + +lib/wasm/binding/**/*.wasm +!lib/wasm/binding/**/*.d.ts + +test/data/node/ diff --git a/js/web/README.md b/js/web/README.md new file mode 100644 index 0000000000..ea706e168c --- /dev/null +++ b/js/web/README.md @@ -0,0 +1,153 @@ +# ONNX Runtime Web + +ONNX Runtime Web is a Javascript library for running ONNX models on browsers and on Node.js. + +ONNX Runtime Web has adopted WebAssembly and WebGL technologies for providing an optimized ONNX model inference runtime for both CPUs and GPUs. + +### Why ONNX models + +The [Open Neural Network Exchange](http://onnx.ai/) (ONNX) is an open standard for representing machine learning models. The biggest advantage of ONNX is that it allows interoperability across different open source AI frameworks, which itself offers more flexibility for AI frameworks adoption. See [Getting ONNX Models](#Getting-ONNX-models). + +### Why ONNX Runtime Web + +With ONNX Runtime Web, web developers can score pre-trained ONNX models directly on browsers with various benefits of reducing server-client communication and protecting user privacy, as well as offering install-free and cross-platform in-browser ML experience. + +ONNX Runtime Web can run on both CPU and GPU. For running on CPU, [WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly) is adopted to execute the model at near-native speed. Furthermore, ONNX Runtime Web utilizes [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) to provide a "multi-threaded" environment to parallelize data processing. Empirical evaluation shows very promising performance gains on CPU by taking full advantage of WebAssembly and Web Workers. For running on GPUs, a popular standard for accessing GPU capabilities - WebGL is adopted. ONNX Runtime Web has further adopted several novel optimization techniques for reducing data transfer between CPU and GPU, as well as some techniques to reduce GPU processing cycles to further push the performance to the maximum. + +See [Compatibility](#Compatibility) and [Operators Supported](#Operators) for a list of platforms and operators ONNX Runtime Web currently supports. + +## Getting Started + +There are multiple ways to use ONNX Runtime Web in a project: + +### Using ` + + + + +``` + + + +### Using NPM and bundling tools + +Modern browser based applications are usually built by frameworks like [Angular](https://angular.io/), [React](https://reactjs.org/), [Vue.js](https://vuejs.org/) and so on. This solution usually builds the source code into one or more bundle file(s). The following TypeScript example shows how to use ONNX Runtime Web in an async context: + +1. Import `Tensor` and `InferenceSession`. + +```ts +import { Tensor, InferenceSession } from "onnxruntime-web"; +``` + +2. Create an instance of `InferenceSession` and load ONNX model. + +```ts +// use the following in an async method +const url = "./data/models/resnet/model.onnx"; +const session = await InferenceSession.create(url); +``` + +3. Create your input Tensor(s) similar to the example below. You need to do any pre-processing required by + your model at this stage. For that refer to the documentation of the model you have: + +```javascript +// creating an array of input Tensors is the easiest way. For other options see the API documentation +const input0 = new Tensor(new Float32Array([1.0, 2.0, 3.0, 4.0]), [2, 2]); +``` + +4. Run the model with the input Tensors. The output Tensor(s) are available once the run operation is complete: + +```javascript +// run this in an async method: +// assume model's input name is 'input_0' and output name is 'output_0' +const outputs = await session.run({ input_0: input0 }); +const outputTensor = outputs.output_0; +``` + +5. Bundle your code. All web application frameworks offer bundling tools and instructions. Specifically, you can specify onnxruntime-web as an external dependency: + +```js + // a webpack example + externals: { + 'onnxruntime-web': 'ort', // add this line in your webpack.config.js + // ... + } +``` + +so that you can consume the file `ort.min.js` from a CDN provider demonstrated as above. + + + +## Documents + +### Developers + +For information on ONNX.js development, please check [Development](./docs/development.md) + +For API reference, please check [API](./docs/api.md). + +### Getting ONNX models + +You can get ONNX models easily in multiple ways: + +- Choose a pre-trained ONNX model from the [ONNX Model Zoo](https://github.com/onnx/models) +- Convert models from mainstream frameworks, e.g. PyTorch, TensorFlow and Keras, by following [ONNX tutorials](https://github.com/onnx/tutorials) +- Use your data to generate a customized ONNX model from [Azure Custom Vision service](https://docs.microsoft.com/en-us/azure/cognitive-services/Custom-Vision-Service/home) +- [Train a custom model in AzureML](https://github.com/Azure/MachineLearningNotebooks/tree/master/training) and save it in the ONNX format + +Learn more about ONNX + +- [ONNX website](http://onnx.ai/) +- [ONNX on GitHub](https://github.com/onnx/onnx) + +### Compatibility + +| OS/Browser | Chrome | Edge | Safari | Electron | +| :--------------: | :----------------: | :----------------: | :----------------: | :----------------: | +| Windows 10 | :heavy_check_mark: | :heavy_check_mark: | - | :heavy_check_mark: | +| macOS | :heavy_check_mark: | - | :heavy_check_mark: | :heavy_check_mark: | +| Ubuntu LTS 18.04 | :heavy_check_mark: | - | - | :heavy_check_mark: | +| iOS | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | +| Android | :heavy_check_mark: | - | - | - | + +### Operators + +#### WebAssembly backend + +ONNX Runtime Web currently support all operators in [ai.onnx](https://github.com/onnx/onnx/blob/master/docs/Operators.md) and [ai.onnx.ml](https://github.com/onnx/onnx/blob/master/docs/Operators-ml.md). + +#### WebGL backend + +ONNX Runtime Web currently supports most operators in [ai.onnx](https://github.com/onnx/onnx/blob/rel-1.2.3/docs/Operators.md) operator set v7 (opset v7). See [operators.md](./docs/operators.md) for a complete, detailed list of which ONNX operators are supported by WebGL backend. + +## License + +License information can be found [here](../../README.md#license). diff --git a/js/web/karma.conf.js b/js/web/karma.conf.js new file mode 100644 index 0000000000..c297d40536 --- /dev/null +++ b/js/web/karma.conf.js @@ -0,0 +1,177 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +const bundleMode = require('minimist')(process.argv)['bundle-mode'] || 'dev'; // 'dev'|'perf'|undefined; +const karmaPlugins = require('minimist')(process.argv)['karma-plugins'] || undefined; +const commonFile = bundleMode === 'dev' ? '../common/dist/ort-common.js' : '../common/dist/ort-common.min.js' +const mainFile = bundleMode === 'dev' ? 'test/ort.dev.js' : 'test/ort.perf.js'; + +// it's a known issue that Safari does not work with "localhost" in BrowserStack: +// https://www.browserstack.com/question/663 +// +// we need to read machine IP address to replace "localhost": +// https://stackoverflow.com/a/8440736 +// +function getMachineIpAddress() { + var os = require('os'); + var ifaces = os.networkInterfaces(); + + for (const ifname in ifaces) { + for (const iface of ifaces[ifname]) { + if ('IPv4' !== iface.family || iface.internal !== false) { + // skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses + continue; + } + + // returns the first available IP address + return iface.address; + } + } + + // if no available IP address, fallback to "localhost". + return 'localhost'; +} + +module.exports = function (config) { + config.set({ + // global config of your BrowserStack account + browserStack: { + username: process.env.BROWSER_STACK_USERNAME, + accessKey: process.env.BROWSER_STACK_ACCESS_KEY, + forceLocal: true, + startTunnel: true, + }, + frameworks: ['mocha'], + files: [ + { pattern: commonFile }, + { pattern: 'test/testdata-config.js' }, + { pattern: mainFile }, + { pattern: 'test/testdata-file-cache-*.json', included: false }, + //{ pattern: 'test/onnx-worker.js', included: false }, + { pattern: 'test/data/**/*', included: false, nocache: true }, + { pattern: 'dist/onnxruntime_wasm.wasm', included: false }, + { pattern: 'dist/onnxruntime_wasm_threads.wasm', included: false }, + { pattern: 'dist/onnxruntime_wasm_threads.worker.js', included: false }, + ], + proxies: { + '/base/test/onnxruntime_wasm.wasm': '/base/dist/onnxruntime_wasm.wasm', + '/onnxruntime_wasm_threads.wasm': '/base/dist/onnxruntime_wasm_threads.wasm', + '/onnxruntime_wasm_threads.worker.js': '/base/dist/onnxruntime_wasm_threads.worker.js', + }, + plugins: karmaPlugins, + client: { captureConsole: true, mocha: { expose: ['body'], timeout: 60000 } }, + preprocessors: { mainFile: ['sourcemap'] }, + reporters: ['mocha', 'BrowserStack'], + browsers: [], + captureTimeout: 120000, + reportSlowerThan: 100, + browserDisconnectTimeout: 600000, + browserNoActivityTimeout: 300000, + browserDisconnectTolerance: 0, + browserSocketTimeout: 60000, + hostname: getMachineIpAddress(), + customLaunchers: { + ChromeTest: { base: 'Chrome', flags: ['--window-size=1,1'] }, + ChromeDebug: { debug: true, base: 'Chrome', flags: ['--remote-debugging-port=9333'] }, + // + // ==== BrowserStack browsers ==== + // + + // Windows + // + BS_WIN_10_Chrome_73: { + base: 'BrowserStack', + browser: 'Chrome', + browser_version: '73.0', + os: 'Windows', + os_version: '10', + }, + BS_WIN_10_Edge_18: { + base: 'BrowserStack', + os: 'Windows', + os_version: '10', + browser: 'Edge', + browser_version: '18.0', + }, + BS_WIN_10_Firefox_66: { + base: 'BrowserStack', + os: 'Windows', + os_version: '10', + browser: 'Firefox', + browser_version: '66.0', + }, + BS_WIN_7_Chrome_63: { + base: 'BrowserStack', + browser: 'Chrome', + browser_version: '63.0', + os: 'Windows', + os_version: '7', + }, + + // macOS + // + BS_MAC_10_14_Safari_12: { + base: 'BrowserStack', + os: 'OS X', + os_version: 'Mojave', + browser: 'Safari', + browser_version: '12.0', + }, + BS_MAC_10_14_Chrome_73: { + base: 'BrowserStack', + os: 'OS X', + os_version: 'Mojave', + browser: 'Chrome', + browser_version: '73.0', + }, + BS_MAC_10_13_Safari_11_1: { + base: 'BrowserStack', + os: 'OS X', + os_version: 'High Sierra', + browser: 'Safari', + browser_version: '11.1', + }, + + // iPhone + // + BS_IOS_12_1_iPhoneXS: { + base: 'BrowserStack', + device: 'iPhone XS', + real_mobile: true, + os: 'ios', + os_version: '12.1', + }, + BS_IOS_11_iPhoneX: { + base: 'BrowserStack', + device: 'iPhone X', + real_mobile: true, + os: 'ios', + os_version: '11', + }, + BS_IOS_10_3_iPhone7: { + base: 'BrowserStack', + device: 'iPhone 7', + real_mobile: true, + os: 'ios', + os_version: '10.3', + }, + + // Android + // + BS_ANDROID_9_Pixel_3: { + base: 'BrowserStack', + device: 'Google Pixel 3', + real_mobile: true, + os: 'android', + os_version: '9.0', + }, + BS_ANDROID_7_1_Galaxy_Note_8: { + base: 'BrowserStack', + device: 'Samsung Galaxy Note 8', + real_mobile: true, + os: 'android', + os_version: '7.1', + }, + } + }); +}; diff --git a/js/web/lib/backend-onnxjs.ts b/js/web/lib/backend-onnxjs.ts new file mode 100644 index 0000000000..7bbaeb7c7e --- /dev/null +++ b/js/web/lib/backend-onnxjs.ts @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +/* eslint-disable import/no-internal-modules */ +import {Backend, env, InferenceSession, SessionHandler} from 'onnxruntime-common'; +import {Session} from './onnxjs/session'; +import {OnnxjsSessionHandler} from './onnxjs/session-handler'; + +class OnnxjsBackend implements Backend { + // eslint-disable-next-line @typescript-eslint/no-empty-function + async init(): Promise {} + + async createSessionHandler(pathOrBuffer: string|Uint8Array, options?: InferenceSession.SessionOptions): + Promise { + // NOTE: Session.Config(from onnx.js) is not compatible with InferenceSession.SessionOptions(from + // onnxruntime-common). + // In future we should remove Session.Config and use InferenceSession.SessionOptions. + // Currently we allow this to happen to make test runner work. + const session = new Session(options as unknown as Session.Config); + + // typescript cannot merge method override correctly (so far in 4.2.3). need if-else to call the method. + if (typeof pathOrBuffer === 'string') { + await session.loadModel(pathOrBuffer); + } else { + await session.loadModel(pathOrBuffer); + } + + return new OnnxjsSessionHandler(session); + } +} + +export const onnxjsBackend = new OnnxjsBackend(); + +export interface WebGLFlags { + /** + * set or get the WebGL Context ID (webgl or webgl2) + */ + contextId?: 'webgl'|'webgl2'; + /** + * set or get the maximum batch size for matmul. 0 means to disable batching. + */ + matmulMaxBatchSize?: number; + /** + * set or get the texture cache mode + */ + textureCacheMode?: 'initializerOnly'|'full'; + /** + * set or get the packed texture mode + */ + pack?: boolean; +} + +/** + * Represent a set of flags for ONNX.js backend. + */ +export const flags: WebGLFlags = env.webgl = env.webgl as WebGLFlags || {}; diff --git a/js/web/lib/backend-wasm.ts b/js/web/lib/backend-wasm.ts new file mode 100644 index 0000000000..35cd12b828 --- /dev/null +++ b/js/web/lib/backend-wasm.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Backend, env, InferenceSession, SessionHandler} from 'onnxruntime-common'; + +import {init, OnnxruntimeWebAssemblySessionHandler} from './wasm'; + +class OnnxruntimeWebAssemblyBackend implements Backend { + async init(): Promise { + await init(); + } + createSessionHandler(path: string, options?: InferenceSession.SessionOptions): Promise; + createSessionHandler(buffer: Uint8Array, options?: InferenceSession.SessionOptions): Promise; + async createSessionHandler(pathOrBuffer: string|Uint8Array, _options?: InferenceSession.SessionOptions): + Promise { + let buffer: Uint8Array; + if (typeof pathOrBuffer === 'string') { + const response = await fetch(pathOrBuffer); + const arrayBuffer = await response.arrayBuffer(); + buffer = new Uint8Array(arrayBuffer); + } else { + buffer = pathOrBuffer; + } + const handler = new OnnxruntimeWebAssemblySessionHandler(); + // TODO: support SessionOptions + handler.loadModel(buffer); + return Promise.resolve(handler); + } +} + +export const wasmBackend = new OnnxruntimeWebAssemblyBackend(); + +export interface WebAssemblyFlags { + /** + * set or get number of worker(s) + * + * This setting is available only when WebAssembly multithread feature is available in current context. + */ + worker?: number; + + /** + * set or get a number specifying the timeout for initialization of WebAssembly backend, in milliseconds. + */ + initTimeout?: number; +} + +/** + * Represent a set of flags for WebAssembly backend. + */ +export const flags: WebAssemblyFlags = env.wasm = env.wasm as WebAssemblyFlags || {}; diff --git a/js/web/lib/index.ts b/js/web/lib/index.ts new file mode 100644 index 0000000000..ae0c747d70 --- /dev/null +++ b/js/web/lib/index.ts @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +export * from 'onnxruntime-common'; +import {registerBackend} from 'onnxruntime-common'; +import {onnxjsBackend} from './backend-onnxjs'; +import {wasmBackend} from './backend-wasm'; + +registerBackend('webgl', onnxjsBackend, 1); +registerBackend('wasm', wasmBackend, 2); diff --git a/js/web/lib/onnxjs/attribute.ts b/js/web/lib/onnxjs/attribute.ts new file mode 100644 index 0000000000..362f965a27 --- /dev/null +++ b/js/web/lib/onnxjs/attribute.ts @@ -0,0 +1,201 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import Long from 'long'; +import {onnx} from 'onnx-proto'; + +import {Tensor} from './tensor'; +import {LongUtil} from './util'; + +export declare namespace Attribute { + export interface DataTypeMap { + float: number; + int: number; + string: string; + tensor: Tensor; + floats: number[]; + ints: number[]; + strings: string[]; + tensors: Tensor[]; + } + + export type DataType = keyof DataTypeMap; +} + +type ValueTypes = Attribute.DataTypeMap[Attribute.DataType]; + +type Value = [ValueTypes, Attribute.DataType]; + +export class Attribute { + constructor(attributes: onnx.IAttributeProto[]|null|undefined) { + this._attributes = new Map(); + if (attributes !== null && attributes !== undefined) { + for (const attr of attributes) { + this._attributes.set(attr.name!, [Attribute.getValue(attr), Attribute.getType(attr)]); + } + + if (this._attributes.size < attributes.length) { + throw new Error('duplicated attribute names'); + } + } + } + + set(key: string, type: Attribute.DataType, value: ValueTypes): void { + this._attributes.set(key, [value, type]); + } + delete(key: string): void { + this._attributes.delete(key); + } + + getFloat(key: string, defaultValue?: Attribute.DataTypeMap['float']) { + return this.get(key, 'float', defaultValue); + } + + getInt(key: string, defaultValue?: Attribute.DataTypeMap['int']) { + return this.get(key, 'int', defaultValue); + } + + getString(key: string, defaultValue?: Attribute.DataTypeMap['string']) { + return this.get(key, 'string', defaultValue); + } + + getTensor(key: string, defaultValue?: Attribute.DataTypeMap['tensor']) { + return this.get(key, 'tensor', defaultValue); + } + + getFloats(key: string, defaultValue?: Attribute.DataTypeMap['floats']) { + return this.get(key, 'floats', defaultValue); + } + + getInts(key: string, defaultValue?: Attribute.DataTypeMap['ints']) { + return this.get(key, 'ints', defaultValue); + } + + getStrings(key: string, defaultValue?: Attribute.DataTypeMap['strings']) { + return this.get(key, 'strings', defaultValue); + } + + getTensors(key: string, defaultValue?: Attribute.DataTypeMap['tensors']) { + return this.get(key, 'tensors', defaultValue); + } + + private get( + key: string, type: Attribute.DataType, defaultValue?: V): V { + const valueAndType = this._attributes.get(key); + if (valueAndType === undefined) { + if (defaultValue !== undefined) { + return defaultValue; + } + throw new Error(`required attribute not found: ${key}`); + } + if (valueAndType[1] !== type) { + throw new Error(`type mismatch: expected ${type} but got ${valueAndType[1]}`); + } + return valueAndType[0] as V; + } + + private static getType(attr: onnx.IAttributeProto): Attribute.DataType { + switch (attr.type!) { + case onnx.AttributeProto.AttributeType.FLOAT: + return 'float'; + case onnx.AttributeProto.AttributeType.INT: + return 'int'; + case onnx.AttributeProto.AttributeType.STRING: + return 'string'; + case onnx.AttributeProto.AttributeType.TENSOR: + return 'tensor'; + case onnx.AttributeProto.AttributeType.FLOATS: + return 'floats'; + case onnx.AttributeProto.AttributeType.INTS: + return 'ints'; + case onnx.AttributeProto.AttributeType.STRINGS: + return 'strings'; + case onnx.AttributeProto.AttributeType.TENSORS: + return 'tensors'; + default: + throw new Error(`attribute type is not supported yet: ${onnx.AttributeProto.AttributeType[attr.type!]}`); + } + } + + private static getValue(attr: onnx.IAttributeProto) { + if (attr.type === onnx.AttributeProto.AttributeType.GRAPH || + attr.type === onnx.AttributeProto.AttributeType.GRAPHS) { + throw new Error('graph attribute is not supported yet'); + } + + const value = this.getValueNoCheck(attr); + + // cast LONG to number + if (attr.type === onnx.AttributeProto.AttributeType.INT && Long.isLong(value)) { + return value.toNumber(); + } + + // cast LONG[] to number[] + if (attr.type === onnx.AttributeProto.AttributeType.INTS) { + const arr = (value as Array); + const numberValue: number[] = new Array(arr.length); + + for (let i = 0; i < arr.length; i++) { + const maybeLong = arr[i]; + numberValue[i] = LongUtil.longToNumber(maybeLong); + } + + return numberValue; + } + + // cast onnx.TensorProto to onnxjs.Tensor + if (attr.type === onnx.AttributeProto.AttributeType.TENSOR) { + return Tensor.fromProto(value as onnx.ITensorProto); + } + + // cast onnx.TensorProto[] to onnxjs.Tensor[] + if (attr.type === onnx.AttributeProto.AttributeType.TENSORS) { + const tensorProtos = value as onnx.ITensorProto[]; + return tensorProtos.map(value => Tensor.fromProto(value)); + } + + // cast Uint8Array to string + if (attr.type === onnx.AttributeProto.AttributeType.STRING) { + const utf8String = value as Uint8Array; + return Buffer.from(utf8String.buffer, utf8String.byteOffset, utf8String.byteLength).toString(); + } + + // cast Uint8Array[] to string[] + if (attr.type === onnx.AttributeProto.AttributeType.STRINGS) { + const utf8Strings = value as Uint8Array[]; + return utf8Strings.map( + utf8String => Buffer.from(utf8String.buffer, utf8String.byteOffset, utf8String.byteLength).toString()); + } + + return value as ValueTypes; + } + + private static getValueNoCheck(attr: onnx.IAttributeProto) { + switch (attr.type!) { + case onnx.AttributeProto.AttributeType.FLOAT: + return attr.f; + case onnx.AttributeProto.AttributeType.INT: + return attr.i; + case onnx.AttributeProto.AttributeType.STRING: + return attr.s; + case onnx.AttributeProto.AttributeType.TENSOR: + return attr.t; + case onnx.AttributeProto.AttributeType.GRAPH: + return attr.g; + case onnx.AttributeProto.AttributeType.FLOATS: + return attr.floats; + case onnx.AttributeProto.AttributeType.INTS: + return attr.ints; + case onnx.AttributeProto.AttributeType.STRINGS: + return attr.strings; + case onnx.AttributeProto.AttributeType.TENSORS: + return attr.tensors; + case onnx.AttributeProto.AttributeType.GRAPHS: + return attr.graphs; + default: + throw new Error(`unsupported attribute type: ${onnx.AttributeProto.AttributeType[attr.type!]}`); + } + } + + protected _attributes: Map; +} diff --git a/js/web/lib/onnxjs/backend.ts b/js/web/lib/onnxjs/backend.ts new file mode 100644 index 0000000000..a363ec9f21 --- /dev/null +++ b/js/web/lib/onnxjs/backend.ts @@ -0,0 +1,146 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {WebGLBackend} from './backends/backend-webgl'; +import {Graph} from './graph'; +import {Operator} from './operators'; +import {OpSet} from './opset'; +import {Session} from './session'; + +export interface InferenceHandler { + /** + * dispose the inference handler. it will be called as the last step in Session.run() + */ + dispose(): void; +} + +export interface SessionHandler { + /** + * transform the graph at initialization time + * @param graphTransformer the graph transformer to manipulate the model graph + */ + transformGraph?(graphTransformer: Graph.Transformer): void; + + /** + * create an instance of InferenceHandler to use in a Session.run() call + */ + createInferenceHandler(): InferenceHandler; + + /** + * dispose the session handler. it will be called when a session is being disposed explicitly + */ + dispose(): void; + + /** + * Resolves the operator from the name and opset version; backend specific + * @param node the node to resolve + * @param opsets a list of opsets that exported from the model + * @param graph the completely initialized graph + */ + resolve(node: Graph.Node, opsets: readonly OpSet[], graph: Graph): Operator; + + /** + * This method let's the sessionHandler know that the graph initialization is complete + * @param graph the completely initialized graph + */ + onGraphInitialized?(graph: Graph): void; + + /** + * a reference to the corresponding backend + */ + readonly backend: Backend; + + /** + * a reference to the session context + */ + readonly context: Session.Context; +} + +export interface Backend { + /** + * initialize the backend. will be called only once, when the first time the + * backend it to be used + */ + initialize(): boolean|Promise; + + /** + * create an instance of SessionHandler to use in a Session object's lifecycle + */ + createSessionHandler(context: Session.Context): SessionHandler; + + /** + * dispose the backend. currently this will not be called + */ + dispose(): void; +} + +// caches all initialized backend instances +const backendsCache: Map = new Map(); + +export const backend: {[name: string]: Backend} = { + webgl: new WebGLBackend(), +}; + +/** + * Resolve a reference to the backend. If a hint is specified, the corresponding + * backend will be used. + */ +export async function resolveBackend(hint?: string|readonly string[]): Promise { + if (!hint) { + return resolveBackend(['webgl']); + } else { + const hints = typeof hint === 'string' ? [hint] : hint; + + for (const backendHint of hints) { + const cache = backendsCache.get(backendHint); + if (cache) { + return cache; + } + + const backend = await tryLoadBackend(backendHint); + if (backend) { + return backend; + } + } + } + + throw new Error('no available backend to use'); +} + +async function tryLoadBackend(backendHint: string): Promise { + const backendObj = backend; + + if (typeof backendObj[backendHint] !== 'undefined' && isBackend(backendObj[backendHint])) { + const backend = backendObj[backendHint]; + let init = backend.initialize(); + if (typeof init === 'object' && 'then' in init) { + init = await init; + } + if (init) { + backendsCache.set(backendHint, backend); + return backend; + } + } + + return undefined; +} + +function isBackend(obj: unknown) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const o = obj as any; + + // check if an object is a Backend instance + if ( + 'initialize' in o && typeof o.initialize === 'function' && // initialize() + 'createSessionHandler' in o && typeof o.createSessionHandler === 'function' && // createSessionHandler() + 'dispose' in o && typeof o.dispose === 'function' // dispose() + ) { + return true; + } + + return false; +} + +export type BackendType = Backend; +export type SessionHandlerType = ReturnType; +export type InferenceHandlerType = ReturnType; diff --git a/js/web/lib/onnxjs/backends/backend-webgl.ts b/js/web/lib/onnxjs/backends/backend-webgl.ts new file mode 100644 index 0000000000..1b6900dc42 --- /dev/null +++ b/js/web/lib/onnxjs/backends/backend-webgl.ts @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {flags} from '../../backend-onnxjs'; +import {Backend, SessionHandler} from '../backend'; +import {Logger} from '../instrument'; +import {Session} from '../session'; + +import {WebGLSessionHandler} from './webgl/session-handler'; +import {WebGLContext} from './webgl/webgl-context'; +import {createWebGLContext} from './webgl/webgl-context-factory'; + +/** + * WebGLBackend is the entry point for all WebGL opeartions + * When it starts it created the WebGLRenderingContext + * and other main framework components such as Program and Texture Managers + */ +export class WebGLBackend implements Backend { + glContext: WebGLContext; + + get contextId(): 'webgl'|'webgl2'|undefined { + return flags.contextId; + } + set contextId(value: 'webgl'|'webgl2'|undefined) { + flags.contextId = value; + } + + get matmulMaxBatchSize(): number|undefined { + return flags.matmulMaxBatchSize; + } + set matmulMaxBatchSize(value: number|undefined) { + flags.matmulMaxBatchSize = value; + } + + get textureCacheMode(): 'initializerOnly'|'full'|undefined { + return flags.textureCacheMode; + } + set textureCacheMode(value: 'initializerOnly'|'full'|undefined) { + flags.textureCacheMode = value; + } + + get pack(): boolean|undefined { + return flags.pack; + } + set pack(value: boolean|undefined) { + flags.pack = value; + } + + initialize(): boolean { + try { + this.glContext = createWebGLContext(this.contextId); + if (typeof this.matmulMaxBatchSize !== 'number') { + this.matmulMaxBatchSize = 16; + } + if (typeof this.textureCacheMode !== 'string') { + this.textureCacheMode = 'full'; + } + if (typeof this.pack !== 'boolean') { + this.pack = false; + } + Logger.verbose( + 'WebGLBackend', + `Created WebGLContext: ${typeof this.glContext} with matmulMaxBatchSize: ${ + this.matmulMaxBatchSize}; textureCacheMode: ${this.textureCacheMode}; pack: ${this.pack}.`); + return true; + } catch (e) { + Logger.warning('WebGLBackend', `Unable to initialize WebGLBackend. ${e}`); + return false; + } + } + createSessionHandler(context: Session.Context): SessionHandler { + return new WebGLSessionHandler(this, context); + } + dispose(): void { + this.glContext.dispose(); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-array-lib.ts b/js/web/lib/onnxjs/backends/webgl/glsl-array-lib.ts new file mode 100644 index 0000000000..f5c7252f3c --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-array-lib.ts @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions'; +/** + * This library produces routines needed for non-constant access to uniform arrays + */ +export class ArrayGlslLib extends GlslLib { + getFunctions(): {[name: string]: GlslLibRoutine} { + return this.generate(); + } + getCustomTypes(): {[name: string]: string} { + return {}; + } + constructor(context: GlslContext) { + super(context); + } + protected generate(): {[name: string]: GlslLibRoutine} { + const result: {[name: string]: GlslLibRoutine} = {}; + for (let i = 1; i <= 16; i++) { + result[`setItem${i}`] = new GlslLibRoutine(this.generateSetItem(i)); + result[`getItem${i}`] = new GlslLibRoutine(this.generateGetItem(i)); + } + return result; + } + protected generateSetItem(length: number): string { + let block = ` + if(index < 0) + index = ${length} + index; + if (index == 0) + a[0] = value; + `; + for (let i = 1; i < length - 1; ++i) { + block += ` + else if (index == ${i}) + a[${i}] = value; + `; + } + block += ` + else + a[${length - 1}] = value; + `; + const body = ` + void setItem${length}(out float a[${length}], int index, float value) { + ${block} + } + `; + return body; + } + protected generateGetItem(length: number): string { + let block = ` + if(index < 0) + index = ${length} + index; + if (index == 0) + return a[0]; + `; + for (let i = 1; i < length - 1; ++i) { + block += ` + else if (index == ${i}) + return a[${i}]; + `; + } + block += ` + else + return a[${length - 1}]; + `; + const body = ` + float getItem${length}(float a[${length}], int index) { + ${block} + } + `; + return body; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-coordinate-lib.ts b/js/web/lib/onnxjs/backends/webgl/glsl-coordinate-lib.ts new file mode 100644 index 0000000000..cbf90124fa --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-coordinate-lib.ts @@ -0,0 +1,1215 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {ArrayUtil, BroadcastUtil, ShapeUtil} from '../../util'; + +import {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions'; +import {getGlsl} from './glsl-source'; +import {squeezeShape} from './texture-layout-strategy'; +import {TextureLayout} from './types'; +import {generateShaderFuncNameFromInputSamplerName} from './utils'; +import {generateShaderFuncNameFromInputSamplerNameAtOutCoords,} from './utils'; +import {getCoordsDataType, getSqueezedParams, squeezeInputShape} from './utils'; + +/** + * GLSL Library responsible for data types and routines for manipulating + * coordinates and mapping to/from tensor indices + */ +export class CoordsGlslLib extends GlslLib { + returnType: string; + + constructor(context: GlslContext) { + super(context); + } + getFunctions(): {[name: string]: GlslLibRoutine} { + return { + ...this.offsetToCoords(), + ...this.coordsToOffset(), + ...this.toVec(), + ...this.valueFrom(), + // TODO return these only when packing is enabled. + ...this.getCommonUtilFuncs(), + ...this.getInputsSamplingSnippets(), + ...this.getOutputSamplingSnippet() + }; + } + getCustomTypes() { + return {}; + } + /** + * Produces a function that can map from + * 2D normalzied coordinates (s,t) to a flat offset + */ + protected offsetToCoords(): {[name: string]: GlslLibRoutine} { + const funcName = 'offsetToCoords'; + return { + offsetToCoords: new GlslLibRoutine(` + vec2 ${funcName}(int offset, int width, int height) { + int t = offset / width; + int s = offset - t*width; + vec2 coords = (vec2(s,t) + vec2(0.5,0.5)) / vec2(width, height); + return coords; + } + `) + }; + } + + /** + * Produces a function that can map from + * 2D normalzied coordinates (s,t) to a flat offset + */ + protected coordsToOffset(): {[name: string]: GlslLibRoutine} { + const funcName = 'coordsToOffset'; + return { + coordsToOffset: new GlslLibRoutine(` + int ${funcName}(vec2 coords, int width, int height) { + float s = coords.s * float(width); + float t = coords.t * float(height); + int offset = int(t) * width + int(s); + return offset; + } + `) + }; + } + + /** + * Generates code for output sampler. + */ + + protected getOutputSamplingSnippet(): {[name: string]: GlslLibRoutine} { + const outputLayout = this.context.programInfo.outputLayout; + if (outputLayout.isPacked) { + return this.getPackedOutputSamplingSnippet(outputLayout); + } else { + return this.getUnpackedOutputSamplingSnippet(outputLayout); + } + } + + /** + * Generates code for packed output sampler. + */ + protected getPackedOutputSamplingSnippet(outputLayout: TextureLayout): {[name: string]: GlslLibRoutine} { + const outShape = outputLayout.shape; + const outTexShape = [outputLayout.width, outputLayout.height]; + const result: {[name: string]: GlslLibRoutine} = {}; + const funcName = 'getOutputCoords'; + switch (outShape.length) { + case 0: + result[funcName] = this.getOutputScalarCoords(); + break; + case 1: + result[funcName] = this.getOutputPacked1DCoords(outShape as [number], outTexShape as [number, number]); + break; + case 2: + result[funcName] = this.getOutputPacked2DCoords(outShape as [number, number], outTexShape as [number, number]); + break; + case 3: + result[funcName] = + this.getOutputPacked3DCoords(outShape as [number, number, number], outTexShape as [number, number]); + break; + default: + result[funcName] = this.getOutputPackedNDCoords(outShape, outTexShape as [number, number]); + } + const glsl = getGlsl(this.context.glContext.version); + // TODO we need this to properly return a packed vec4 from kernels. + // Replace all '{glsl.output} = result' with 'setOutput(result)' in all kernels. + const floatTextureSetRGBASource = ` + void setOutput(vec4 val) { + ${glsl.output} = val; + } + `; + const floatTextureSetRGBAFuncName = 'floatTextureSetRGBA'; + result[floatTextureSetRGBAFuncName] = new GlslLibRoutine(floatTextureSetRGBASource); + return result; + } + + /** + * Generates code for unpacked output sampler. + */ + protected getUnpackedOutputSamplingSnippet(outputLayout: TextureLayout): {[name: string]: GlslLibRoutine} { + const outShape = outputLayout.unpackedShape; + const outTexShape = [outputLayout.width, outputLayout.height]; + const result: {[name: string]: GlslLibRoutine} = {}; + const funcName = 'getOutputCoords'; + switch (outShape.length) { + case 0: + result[funcName] = this.getOutputScalarCoords(); + break; + case 1: + result[funcName] = this.getOutputUnpacked1DCoords(outShape as [number], outTexShape as [number, number]); + break; + case 2: + result[funcName] = + this.getOutputUnpacked2DCoords(outShape as [number, number], outTexShape as [number, number]); + break; + case 3: + result[funcName] = + this.getOutputUnpacked3DCoords(outShape as [number, number, number], outTexShape as [number, number]); + break; + case 4: + result[funcName] = this.getOutputUnpacked4DCoords( + outShape as [number, number, number, number], outTexShape as [number, number]); + break; + case 5: + result[funcName] = this.getOutputUnpacked5DCoords( + outShape as [number, number, number, number, number], outTexShape as [number, number]); + break; + default: + throw new Error(`Unsupported output dimensionality: ${outShape.length}`); + } + const glsl = getGlsl(this.context.glContext.version); + // TODO we need this to properly return a packed vec4 from kernels. + // Replace all '{glsl.output} = result' with 'setOutput(result)' in all kernels. + const floatTextureSetRSource = ` + void setOutput(float val) { + ${glsl.output} = vec4(val, 0, 0, 0); + } + `; + const floatTextureSetRFuncName = 'floatTextureSetR'; + result[floatTextureSetRFuncName] = new GlslLibRoutine(floatTextureSetRSource); + return result; + } + + /** + * Scalar output coordinates. + */ + protected getOutputScalarCoords(): GlslLibRoutine { + return new GlslLibRoutine(` + int getOutputCoords() { + return 0; + } + `); + } + + /** + * 1D packed output coordinates. + */ + protected getOutputPacked1DCoords(shape: [number], texShape: [number, number]): GlslLibRoutine { + const packedTexShape = texShape; + let source = ''; + if (packedTexShape[0] === 1) { + source = ` + int getOutputCoords() { + return 2 * int(TexCoords.y * ${packedTexShape[1]}.0); + } + `; + return new GlslLibRoutine(source); + } + + if (packedTexShape[1] === 1) { + source = ` + int getOutputCoords() { + return 2 * int(TexCoords.x * ${packedTexShape[0]}.0); + } + `; + return new GlslLibRoutine(source); + } + + source = ` + int getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${packedTexShape[0]}, ${packedTexShape[1]})); + return 2 * (resTexRC.y * ${packedTexShape[0]} + resTexRC.x); + } + `; + return new GlslLibRoutine(source); + } + + /** + * 2D packed output coordinates. + */ + protected getOutputPacked2DCoords(shape: [number, number], texShape: [number, number]): GlslLibRoutine { + let source = ''; + if (ArrayUtil.arraysEqual(shape, texShape)) { + source = ` + ivec2 getOutputCoords() { + return 2 * ivec2(TexCoords.xy * vec2(${texShape[0]}, ${texShape[1]})); + } + `; + return new GlslLibRoutine(source); + } + + const packedTexShape = texShape; + // texels needed to accommodate a logical row + const texelsInLogicalRow = shape[1]; + + /** + * getOutputCoords + * + * resTexRC: The rows and columns of the texels. If you move over one + * texel to the right in the packed texture, you are moving over one column + * (not two). + * + * index: The texel index + */ + source = ` + ivec2 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${packedTexShape[0]}, ${packedTexShape[1]})); + + int index = resTexRC.y * ${packedTexShape[0]} + resTexRC.x; + + // reverse r and c order for packed texture + int r = imod(index, ${texelsInLogicalRow}) * 2; + int c = 2 * (index / ${texelsInLogicalRow}); + + return ivec2(r, c); + } + `; + return new GlslLibRoutine(source); + } + + /** + * 3D packed output coordinates. + */ + protected getOutputPacked3DCoords(shape: [number, number, number], texShape: [number, number]): GlslLibRoutine { + const packedTexShape = [texShape[0], texShape[1]]; + const texelsInLogicalRow = shape[2]; + const texelsInBatch = texelsInLogicalRow * shape[1]; + const source = ` + ivec3 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${packedTexShape[0]}, ${packedTexShape[1]})); + int index = resTexRC.y * ${packedTexShape[0]} + resTexRC.x; + + int b = index / ${texelsInBatch}; + index -= b * ${texelsInBatch}; + + // reverse r and c order for packed texture + int r = imod(index, ${texelsInLogicalRow}) * 2; + int c = 2 * (index / ${texelsInLogicalRow}); + + return ivec3(b, r, c); + } + `; + return new GlslLibRoutine(source); + } + + /** + * ND packed output coordinates. + */ + protected getOutputPackedNDCoords(shape: readonly number[], texShape: [number, number]): GlslLibRoutine { + const packedTexShape = [texShape[0], texShape[1]]; + + const texelsInLogicalRow = shape[shape.length - 1]; + const texelsInBatch = texelsInLogicalRow * shape[shape.length - 2]; + let texelsInBatchN = texelsInBatch; + let batches = ''; + let coords = 'b, r, c'; + + for (let b = 2; b < shape.length - 1; b++) { + texelsInBatchN *= shape[shape.length - b - 1]; + batches = ` + int b${b} = index / ${texelsInBatchN}; + index -= b${b} * ${texelsInBatchN}; + ` + batches; + coords = `b${b}, ` + coords; + } + const source = ` + ivec${shape.length} getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${packedTexShape[0]}, ${packedTexShape[1]})); + int index = resTexRC.y * ${packedTexShape[0]} + resTexRC.x; + + ${batches} + + int b = index / ${texelsInBatch}; + index -= b * ${texelsInBatch}; + + // reverse r and c order for packed texture + int r = imod(index, ${texelsInLogicalRow}) * 2; + int c = 2 * (index / ${texelsInLogicalRow}); + + return ivec${shape.length}(${coords}); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Unpacked 1D output coordinates. + */ + protected getOutputUnpacked1DCoords(shape: [number], texShape: [number, number]): GlslLibRoutine { + const source = ` + int getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${texShape[0]}, ${texShape[1]})); + return resTexRC.y * ${texShape[0]} + resTexRC.x; + } + `; + return new GlslLibRoutine(source); + } + + /** + * Unpacked 2D output coordinates. + */ + protected getOutputUnpacked2DCoords(shape: [number, number], texShape: [number, number]): GlslLibRoutine { + const source = ` + ivec2 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${texShape[0]}, ${texShape[1]})); + int index = resTexRC.y * ${texShape[0]} + resTexRC.x; + int r = index / ${shape[1]}; + int c = index - r * ${shape[1]}; + return ivec2(r, c); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Unpacked 3D output coordinates. + */ + protected getOutputUnpacked3DCoords(shape: [number, number, number], texShape: [number, number]): GlslLibRoutine { + let source = ''; + const rank = shape.length; + + let strides = null; + if (rank < 2) { + strides = []; + } + + strides = new Array(rank - 1); + strides[rank - 2] = shape[rank - 1]; + for (let i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * shape[i + 1]; + } + const coordsToCompute = ['r', 'c', 'd']; + const coordsFromIndexSnippet = + strides + .map((stride, i) => { + const line1 = `int ${coordsToCompute[i]} = index / ${stride}`; + const line2 = i === strides.length - 1 ? + `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` : + `index -= ${coordsToCompute[i]} * ${stride}`; + return `${line1}; ${line2};`; + }) + .join(''); + + source = ` + ivec3 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${texShape[0]}, ${texShape[1]})); + int index = resTexRC.y * ${texShape[0]} + resTexRC.x; + ${coordsFromIndexSnippet} + return ivec3(r, c, d); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Unpacked 4D output coordinates. + */ + protected getOutputUnpacked4DCoords(shape: [number, number, number, number], texShape: [number, number]): + GlslLibRoutine { + let source = ''; + const rank = shape.length; + + let strides = null; + if (rank < 2) { + strides = []; + } + + strides = new Array(rank - 1); + strides[rank - 2] = shape[rank - 1]; + for (let i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * shape[i + 1]; + } + const coordsToCompute = ['r', 'c', 'd', 'd2']; + const coordsFromIndexSnippet = + strides + .map((stride, i) => { + const line1 = `int ${coordsToCompute[i]} = index / ${stride}`; + const line2 = i === strides.length - 1 ? + `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` : + `index -= ${coordsToCompute[i]} * ${stride}`; + return `${line1}; ${line2};`; + }) + .join(''); + + source = ` + ivec4 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${texShape[0]}, ${texShape[1]})); + int index = resTexRC.y * ${texShape[0]} + resTexRC.x; + ${coordsFromIndexSnippet} + return ivec4(r, c, d, d2); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Unpacked 5D output coordinates. + */ + protected getOutputUnpacked5DCoords(shape: [number, number, number, number, number], texShape: [number, number]): + GlslLibRoutine { + let source = ''; + const rank = shape.length; + + let strides = null; + if (rank < 2) { + strides = []; + } + + strides = new Array(rank - 1); + strides[rank - 2] = shape[rank - 1]; + for (let i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * shape[i + 1]; + } + const coordsToCompute = ['r', 'c', 'd', 'd2', 'd3']; + const coordsFromIndexSnippet = + strides + .map((stride, i) => { + const line1 = `int ${coordsToCompute[i]} = index / ${stride}`; + const line2 = i === strides.length - 1 ? + `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` : + `index -= ${coordsToCompute[i]} * ${stride}`; + return `${line1}; ${line2};`; + }) + .join(''); + + source = ` + ivec5 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.yx * + vec2(${texShape[0]}, ${texShape[1]})); + int index = resTexRC.y * ${texShape[1]} + resTexRC.x; + ${coordsFromIndexSnippet} + return ivec5(r, c, d, d2, d3); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Generates code for common UV coords computation utility functions. + */ + protected getCommonUtilFuncs(): {[name: string]: GlslLibRoutine} { + const result: {[name: string]: GlslLibRoutine} = {}; + let funcName = 'uvFromFlat'; + result[funcName] = new GlslLibRoutine(` + vec2 uvFromFlat(int texNumR, int texNumC, int index) { + int texC = index / texNumR; + int texR = index - texC * texNumR; + //TODO: swap texR, texC order in following function so row is corresponding to u and column is corresponding to v. + return (vec2(texR, texC) + halfCR) / vec2(texNumR, texNumC); + } + `); + funcName = 'packedUVfrom1D'; + result[funcName] = new GlslLibRoutine(` + vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { + int texelIndex = index / 2; + int texR = texelIndex / texNumC; + int texC = texelIndex - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `); + funcName = 'packedUVfrom2D'; + result[funcName] = new GlslLibRoutine(` + vec2 packedUVfrom2D(int texNumR, int texNumC, int texelsInLogicalRow, int row, int col) { + int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); + int texR = texelIndex / texNumC; + int texC = texelIndex - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `); + funcName = 'packedUVfrom3D'; + result[funcName] = new GlslLibRoutine(` + vec2 packedUVfrom3D(int texNumR, int texNumC, + int texelsInBatch, int texelsInLogicalRow, int b, + int row, int col) { + int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2); + int texR = index / texNumC; + int texC = index - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `); + funcName = 'sampleTexture'; + const glsl = getGlsl(this.context.glContext.version); + result[funcName] = new GlslLibRoutine(` + float sampleTexture(sampler2D textureSampler, vec2 uv) { + return ${glsl.texture2D}(textureSampler, uv).r; + }`); + return result; + } + + /** + * Constructing snippets for inputs + */ + protected getInputsSamplingSnippets(): {[name: string]: GlslLibRoutine} { + const result: {[name: string]: GlslLibRoutine} = {}; + const outputLayout = this.context.programInfo.outputLayout; + this.context.programInfo.samplers.forEach((samplerName, i) => { + const inputLayout = this.context.programInfo.inputLayouts[i]; + const funcName = generateShaderFuncNameFromInputSamplerName(samplerName); + if (inputLayout.isPacked) { + result[funcName] = this.getPackedSamplerFromInput(funcName, samplerName, inputLayout); + } else { + result[funcName] = this.getUnpackedSamplerFromInput(funcName, samplerName, inputLayout); + } + + const outCoordFuncName = generateShaderFuncNameFromInputSamplerNameAtOutCoords(samplerName); + if (inputLayout.unpackedShape.length <= outputLayout.unpackedShape.length) { + if (inputLayout.isPacked) { + result[outCoordFuncName] = + this.getPackedSamplerAtOutputCoords(outCoordFuncName, inputLayout, outputLayout, samplerName); + } else { + result[outCoordFuncName] = + this.getUnpackedSamplerAtOutputCoords(outCoordFuncName, inputLayout, outputLayout, samplerName); + } + } + }); + + return result; + } + + /** + * Constructing snippets for output coordinates of samplers + */ + protected getPackedSamplerAtOutputCoords( + funcName: string, inputLayout: TextureLayout, outputLayout: TextureLayout, name: string): GlslLibRoutine { + const inShape = inputLayout.unpackedShape; + const outShape = outputLayout.unpackedShape; + const texName = name; + const texFuncSnippet = generateShaderFuncNameFromInputSamplerName(texName); + + const inRank = inShape.length; + const outRank = outShape.length; + + const broadcastDims = BroadcastUtil.getBroadcastDims(inShape, outShape); + + const type = getCoordsDataType(outRank); + const rankDiff = outRank - inRank; + let coordsSnippet: string; + const fields = ['x', 'y', 'z', 'w', 'u', 'v']; + + if (inRank === 0) { + coordsSnippet = ''; + } else if (outRank < 2 && broadcastDims.length >= 1) { + coordsSnippet = 'coords = 0;'; + } else { + coordsSnippet = broadcastDims.map(d => `coords.${fields[d + rankDiff]} = 0;`).join('\n'); + } + let unpackedCoordsSnippet = ''; + if (outRank < 2 && inRank > 0) { + unpackedCoordsSnippet = 'coords'; + } else { + unpackedCoordsSnippet = inShape.map((s, i) => `coords.${fields[i + rankDiff]}`).join(', '); + } + + let output = 'return outputValue;'; + const inSize = ShapeUtil.size(inShape); + const isInputScalar = inSize === 1; + const outSize = ShapeUtil.size(outShape); + const isOutputScalar = outSize === 1; + + if (inRank === 1 && !isInputScalar && !isOutputScalar) { + output = ` + return vec4(outputValue.xy, outputValue.xy); + `; + } else if (isInputScalar && !isOutputScalar) { + if (outRank === 1) { + output = ` + return vec4(outputValue.x, outputValue.x, 0., 0.); + `; + } else { + output = ` + return vec4(outputValue.x); + `; + } + } else if (broadcastDims.length) { + const rows = inRank - 2; + const cols = inRank - 1; + + if (broadcastDims.indexOf(rows) > -1 && broadcastDims.indexOf(cols) > -1) { + output = 'return vec4(outputValue.x);'; + } else if (broadcastDims.indexOf(rows) > -1) { + output = 'return vec4(outputValue.x, outputValue.y, ' + + 'outputValue.x, outputValue.y);'; + } else if (broadcastDims.indexOf(cols) > -1) { + output = 'return vec4(outputValue.xx, outputValue.zz);'; + } + } + const source = ` + vec4 ${funcName}() { + ${type} coords = getOutputCoords(); + ${coordsSnippet} + vec4 outputValue = ${texFuncSnippet}(${unpackedCoordsSnippet}); + ${output} + } + `; + return new GlslLibRoutine(source); + } + + /** + * Constructing snippets for unpacked output coordinates of samplers + */ + protected getUnpackedSamplerAtOutputCoords( + funcName: string, inputLayout: TextureLayout, outputLayout: TextureLayout, name: string): GlslLibRoutine { + const outTexShape = [outputLayout.width, outputLayout.height]; + const inTexShape = [inputLayout.width, inputLayout.height]; + const inRank = inputLayout.unpackedShape.length; + const outRank = outputLayout.unpackedShape.length; + const inShape = inputLayout.unpackedShape; + const outShape = outputLayout.unpackedShape; + const texFuncSnippet = generateShaderFuncNameFromInputSamplerName(name); + + if (inRank === outRank && ArrayUtil.arraysEqual(inTexShape, outTexShape)) { + const source = ` + float ${funcName}() { + return sampleTexture(${name}, TexCoords); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + + const type = getCoordsDataType(outRank); + const broadcastDims = BroadcastUtil.getBroadcastDims(inShape, outShape); + const rankDiff = outRank - inRank; + let coordsSnippet: string; + const fields = ['x', 'y', 'z', 'w', 'u', 'v']; + + if (inRank === 0) { + coordsSnippet = ''; + } else if (outRank < 2 && broadcastDims.length >= 1) { + coordsSnippet = 'coords = 0;'; + } else { + coordsSnippet = broadcastDims.map(d => `coords.${fields[d + rankDiff]} = 0;`).join('\n'); + } + let unpackedCoordsSnippet = ''; + if (outRank < 2 && inRank > 0) { + unpackedCoordsSnippet = 'coords'; + } else { + unpackedCoordsSnippet = inputLayout.unpackedShape.map((s, i) => `coords.${fields[i + rankDiff]}`).join(', '); + } + const source = ` + float ${funcName}() { + ${type} coords = getOutputCoords(); + ${coordsSnippet} + return ${texFuncSnippet}(${unpackedCoordsSnippet}); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Constructing snippets for packed operations. + */ + protected getPackedSamplerFromInput(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + switch (inputLayout.unpackedShape.length) { + case 0: + return this.getPackedSamplerScalar(funcName, name); + case 1: + return this.getPackedSampler1D(funcName, name, inputLayout); + case 2: + return this.getPackedSampler2D(funcName, name, inputLayout); + case 3: + return this.getPackedSampler3D(funcName, name, inputLayout); + default: + return this.getPackedSamplerND(funcName, name, inputLayout); + } + } + + /** + * Constructing snippets for unpacked operations. + */ + protected getUnpackedSamplerFromInput(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + switch (shape.length) { + case 0: + return this.getUnpackedSamplerScalar(funcName, name, inputLayout); + case 1: + return this.getUnpackedSampler1D(funcName, name, inputLayout); + case 2: + return this.getUnpackedSampler2D(funcName, name, inputLayout); + case 3: + return this.getUnpackedSampler3D(funcName, name, inputLayout); + case 4: + return this.getUnpackedSampler4D(funcName, name, inputLayout); + case 5: + return this.getUnpackedSampler5D(funcName, name, inputLayout); + default: + // TODO support more dimensionalities + throw new Error(`Unsupported dimension ${shape.length}-D`); + } + } + + /** + * Packed scalar snippet. + */ + protected getPackedSamplerScalar(funcName: string, name: string): GlslLibRoutine { + const glsl = getGlsl(this.context.glContext.version); + const source = ` + vec4 ${funcName}() { + return ${glsl.texture2D}(${name}, halfCR); + } + `; + return new GlslLibRoutine(source); + } + + /** + * Packed 1D snippet. + */ + protected getPackedSampler1D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const texShape = [inputLayout.width, inputLayout.height]; + const packedTexShape = [texShape[1], texShape[0]]; + const glsl = getGlsl(this.context.glContext.version); + + const packedSampler = `vec4 ${funcName}(int index) { + vec2 uv = packedUVfrom1D( + ${packedTexShape[0]}, ${packedTexShape[1]}, index); + return ${glsl.texture2D}(${name}, uv); + }`; + const source = packedSampler; + return new GlslLibRoutine(source, ['coordinates.packedUVfrom1D']); + } + + /** + * Packed 2D snippet. + */ + protected getPackedSampler2D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + const texShape = [inputLayout.width, inputLayout.height]; + const glsl = getGlsl(this.context.glContext.version); + const texNumR = texShape[0]; + const texNumC = texShape[1]; + + if (texShape != null && ArrayUtil.arraysEqual(shape, texShape)) { + const packedSampler = `vec4 ${funcName}(int row, int col) { + vec2 uv = (vec2(col, row) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0); + return ${glsl.texture2D}(${name}, uv); + }`; + + return new GlslLibRoutine(packedSampler); + } + const packedTexShape = texShape; + const valuesPerRow = Math.ceil(shape[1] / 2); + const packedSampler = `vec4 ${funcName}(int row, int col) { + vec2 uv = packedUVfrom2D(${packedTexShape[1]}, ${packedTexShape[0]}, ${valuesPerRow}, row, col); + return ${glsl.texture2D}(${name}, uv); + }`; + const source = packedSampler; + return new GlslLibRoutine(source, ['coordinates.packedUVfrom2D']); + } + + /** + * Packed 3D snippet. + */ + protected getPackedSampler3D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + const texShape = [inputLayout.width, inputLayout.height]; + const packedTexShape = [texShape[0], texShape[1]]; + const glsl = getGlsl(this.context.glContext.version); + + if (shape[0] === 1) { + const squeezedShape = shape.slice(1); + const keptDims = [1, 2]; + const newInputShape = squeezeInputShape(shape, squeezedShape); + const params = ['b', 'row', 'col']; + // Deep copy of input texture layout. + const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout)); + newInputLayout.unpackedShape = newInputShape; + const packedSampler = `${this.getPackedSamplerFromInput(funcName, name, newInputLayout).routineBody} + vec4 ${funcName}(int b, int row, int col) { + return ${funcName}(${getSqueezedParams(params, keptDims)}); + } `; + const source = packedSampler; + return new GlslLibRoutine(source); + } + const texNumR = packedTexShape[0]; + const texNumC = packedTexShape[1]; + + const valuesPerRow = Math.ceil(shape[2] / 2); + const texelsInBatch = valuesPerRow * Math.ceil(shape[1] / 2); + + const packedSampler = `vec4 ${funcName}(int b, int row, int col) { + vec2 uv = packedUVfrom3D( + ${texNumC}, ${texNumR}, ${texelsInBatch}, ${valuesPerRow}, b, row, col); + return ${glsl.texture2D}(${name}, uv);}`; + const source = packedSampler; + return new GlslLibRoutine(source, ['coordinates.packedUVfrom3D']); + } + /* + * Packed ND snippet. + */ + protected getPackedSamplerND(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + const rank = shape.length; + const texShape = [inputLayout.width, inputLayout.height]; + const glsl = getGlsl(this.context.glContext.version); + + const packedTexShape = [texShape[0], texShape[1]]; + const texNumR = packedTexShape[1]; + const texNumC = packedTexShape[0]; + const valuesPerRow = Math.ceil(shape[rank - 1] / 2); + let texelsInBatch = valuesPerRow * Math.ceil(shape[rank - 2] / 2); + let params = 'int b, int row, int col'; + let index = `b * ${texelsInBatch} + (row / 2) * ${valuesPerRow} + (col / 2)`; + for (let b = 2; b < rank - 1; b++) { + params = `int b${b}, ` + params; + texelsInBatch *= shape[rank - b - 1]; + index = `b${b} * ${texelsInBatch} + ` + index; + } + const packedSampler = `vec4 ${funcName}(${params}) { + int index = ${index}; + int texR = index / ${texNumC}; + int texC = index - texR * ${texNumC}; + vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texNumC}, ${texNumR}); + return ${glsl.texture2D}(${name}, uv); + }`; + const source = packedSampler; + return new GlslLibRoutine(source); + } + + /** + * Unpacked scalar snippet. + */ + protected getUnpackedSamplerScalar(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const [texNumR, texNumC] = [inputLayout.width, inputLayout.height]; + if (texNumR === 1 && texNumC === 1) { + const source = ` + float ${funcName}() { + return sampleTexture(${name}, halfCR); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + + const source = ` + float ${funcName}() { + int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC}); + vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, offset_${name}); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine( + source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + + /** + * Unpacked 1D snippet. + */ + protected getUnpackedSampler1D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const tNumR = inputLayout.width; + const tNumC = inputLayout.height; + + if (tNumC === 1 && tNumR === 1) { + const source = ` + float ${funcName}(int index) { + return sampleTexture(${name}, halfCR); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + + if (tNumC === 1) { + const source = ` + float ${funcName}(int index) { + vec2 uv = vec2((float(index) + 0.5) / ${tNumR}.0, 0.5); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + if (tNumR === 1) { + const source = ` + float ${funcName}(int index) { + vec2 uv = vec2((float(index) + 0.5) / ${tNumC}.0, 0.5); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + const source = ` + float ${funcName}(int index) { + vec2 uv = uvFromFlat(${tNumR}, ${tNumC}, index); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine(source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture']); + } + + /** + * Unpacked 2D snippet. + */ + + protected getUnpackedSampler2D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + + // TODO: modify row/col order for other dimensions. + const texShape = [inputLayout.height, inputLayout.width]; + + if (texShape != null && ArrayUtil.arraysEqual(shape, texShape)) { + const texNumR = texShape[1]; + const texNumC = texShape[0]; + const source = ` + float ${funcName}(int row, int col) { + vec2 uv = (vec2(row, col) + halfCR) / vec2(${texNumR}.0, ${texNumC}.0); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + + const {newShape, keptDims} = squeezeShape(shape as number[]); + const squeezedShape = newShape; + if (squeezedShape.length < shape.length) { + const newInputShape = squeezeInputShape(shape, squeezedShape); + // Deep copy of input texture layout. + const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout)); + newInputLayout.unpackedShape = newInputShape; + + const params = ['row', 'col']; + const source = ` + ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody} + float ${funcName}(int row, int col) { + return ${funcName}(${getSqueezedParams(params, keptDims)}); + } + `; + return new GlslLibRoutine( + source, + ); + } + + const texNumR = texShape[1]; + const texNumC = texShape[0]; + if (texNumC === 1) { + const source = ` + float ${funcName}(int row, int col) { + int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC}); + float index = dot(vec3(row, col, offset_${name}), vec3(${shape[1]}, 1, 1)); + vec2 uv = vec2(0.5, (index + 0.5) / ${texNumR}.0); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + if (texNumR === 1) { + const source = ` + float ${funcName}(int row, int col) { + int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC}); + float index = dot(vec3(row, col, offset_${name}), vec3(${shape[1]}, 1, 1)); + vec2 uv = vec2((index + 0.5) / ${texNumC}.0, 0.5); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + const source = ` + float ${funcName}(int row, int col) { + // Explicitly use integer operations as dot() only works on floats. + int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC}); + int index = row * ${shape[1]} + col + offset_${name}; + vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine( + source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + + /** + * Unpacked 3D snippet. + */ + + protected getUnpackedSampler3D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + const stride0 = shape[1] * shape[2]; + const stride1 = shape[2]; + + const {newShape, keptDims} = squeezeShape(shape as number[]); + const squeezedShape = newShape; + if (squeezedShape.length < shape.length) { + const newInputShape = squeezeInputShape(shape, squeezedShape); + const params = ['batch', 'row', 'col']; + // Deep copy of input texture layout. + const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout)); + newInputLayout.unpackedShape = newInputShape; + const source = ` + ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody} + float ${funcName}(int depth, int row, int col) { + return ${funcName}(${getSqueezedParams(params, keptDims)}); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + + const texNumR = inputLayout.width; + const texNumC = inputLayout.height; + const source = ` + float ${funcName}(int depth, int row, int col) { + // Explicitly use integer operations as dot() only works on floats. + int index = depth * ${stride0} + col * ${stride1} + row; + vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine( + source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + + /** + * Unpacked 4D snippet. + */ + + protected getUnpackedSampler4D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + const stride2 = shape[3]; + const stride1 = shape[2] * stride2; + const stride0 = shape[1] * stride1; + + const {newShape, keptDims} = squeezeShape(shape as number[]); + if (newShape.length < shape.length) { + const newInputShape = squeezeInputShape(shape, newShape); + const params = ['row', 'col', 'depth', 'depth2']; + // Deep copy of input texture layout. + const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout)); + newInputLayout.unpackedShape = newInputShape; + + const source = ` + ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody} + float ${funcName}(int row, int col, int depth, int depth2) { + return ${funcName}(${getSqueezedParams(params, keptDims)}); + } + `; + return new GlslLibRoutine( + source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + + const texNumR = inputLayout.width; + const texNumC = inputLayout.height; + const source = ` + float ${funcName}(int row, int col, int depth, int depth2) { + int index = row * ${stride0} + col * ${stride1} + + depth2 * ${stride2} + depth; + vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine( + source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + + /** + * Unpacked 5D snippet. + */ + protected getUnpackedSampler5D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine { + const shape = inputLayout.unpackedShape; + const stride3 = shape[4]; + const stride2 = shape[3] * stride3; + const stride1 = shape[2] * stride2; + const stride0 = shape[1] * stride1; + + const {newShape, keptDims} = squeezeShape(shape as number[]); + if (newShape.length < shape.length) { + const newInputShape = squeezeInputShape(shape, newShape); + const params = ['row', 'col', 'depth', 'depth2', 'depth3']; + // Deep copy of input texture layout. + const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout)); + newInputLayout.unpackedShape = newInputShape; + + const source = ` + ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody} + float ${funcName}(int row, int col, int depth, int depth2, int depth3) { + return ${funcName}(${getSqueezedParams(params, keptDims)}); + } + `; + return new GlslLibRoutine(source, ['coordinates.sampleTexture']); + } + + const texNumR = inputLayout.width; + const texNumC = inputLayout.height; + const source = ` + float ${funcName}(int row, int col, int depth, int depth2, int depth3) { + int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} + + depth3 * ${stride3} + depth2; + vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); + return sampleTexture(${name}, uv); + } + `; + return new GlslLibRoutine( + source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + + /** + * This is the main function to map from the given texture coordiantes (s,t) + * to logical indices for the output + * There will only be one single variation of this + * Also see coordsToOffset and offsetToIndices for input-specific versions + */ + protected toVec(): {[name: string]: GlslLibRoutine} { + const output = this.context.programInfo.outputLayout; + const rank = output.shape.length; + const strides = output.strides; + const xScale = output.width; + const yScale = output.height; + + const stridesBlock = []; + for (let i = 0; i < rank - 1; ++i) { + stridesBlock.push(` + c[${i}] = offset / ${strides[i]};`); + stridesBlock.push(` + offset -= c[${i}] * ${strides[i]};`); + } + stridesBlock.push(` + c[${rank - 1}] = offset;`); + const body = ` + void toVec(vec2 texCoords, out int c[${rank}]) { + int offset = coordsToOffset(texCoords, ${xScale}, ${yScale}); + ${stridesBlock.join('')} + } + void toVec(int offset, out int c[${rank}]) { + ${stridesBlock.join('')} + } + `; + return {toVec: new GlslLibRoutine(body, ['coordinates.coordsToOffset'])}; + } + /** + * These are value getter functions generated for each input + * Each function is hardwired to the name and dimensions of the input + * An '_T' variation is also produced which accesses values as if the + * input was transposed + */ + protected valueFrom(): {[name: string]: GlslLibRoutine} { + const programInfo = this.context.programInfo; + const result: {[name: string]: GlslLibRoutine} = {}; + this.context.programInfo.samplers.forEach((name, i) => { + const layout = programInfo.inputLayouts[i]; + const shape = layout.shape; + const rank = shape.length; + let funcName = `_${name}`; + result[funcName] = new GlslLibRoutine( + this.getValueFromSingle(name, rank, layout.width, layout.height, false), + [`shapeUtils.indicesToOffset${funcName}`, 'coordinates.offsetToCoords', 'fragcolor.getColorAsFloat']); + funcName = funcName + '_T'; + result[funcName] = new GlslLibRoutine( + this.getValueFromSingle(name, rank, layout.width, layout.height, true), + [`shapeUtils.indicesToOffset${funcName}`, 'coordinates.offsetToCoords', 'fragcolor.getColorAsFloat']); + }); + return result; + } + /** + * Produces one value getter function for the name and rank given + * If a transpose is set proper offsetToCoords mapping will be used + * @param name name of the function + * @param rank rank of the input + * @param transpose whether or not should generate a transpose variation + */ + protected getValueFromSingle(varName: string, rank: number, width: number, height: number, transpose: boolean): + string { + let name = `_${varName}`; + if (transpose) { + name = name + '_T'; + } + const glsl = getGlsl(this.context.glContext.version); + return ` + float ${name}(int m[${rank}]) { + int offset = indicesToOffset${name}(m); + vec2 coords = offsetToCoords(offset, ${width}, ${height}); + float value = getColorAsFloat(${glsl.texture2D}(${varName}, coords)); + return value; + } + `; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-definitions.ts b/js/web/lib/onnxjs/backends/webgl/glsl-definitions.ts new file mode 100644 index 0000000000..5d4c0fee97 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-definitions.ts @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {ProgramInfo} from './types'; +import {WebGLContext} from './webgl-context'; + +/* eslint-disable @typescript-eslint/naming-convention */ +export enum FunctionType { + ValueBased, + Positional +} +export interface GlslFunction { + body: string; + name: string; + type: T; +} +export type GlslValueFunction = GlslFunction; +export interface GlslPositionalFunction extends GlslFunction { + inputShape: readonly number[]; + outputShape: readonly number[]; +} + +export class GlslContext { + constructor(public glContext: WebGLContext, public programInfo: ProgramInfo) {} +} +export abstract class GlslLib { + constructor(public context: GlslContext) {} + abstract getFunctions(): {[name: string]: GlslLibRoutine}; + abstract getCustomTypes(): {[name: string]: string}; +} + +// abstraction to represent a GLSL library routine and it's dependencies +export class GlslLibRoutine { + constructor(public routineBody: string, public dependencies?: string[]) {} +} + +// abstraction to represent a GLSL library routine and it's dependencies AS GRAPH Nodes +// this level of abstraction is used to topologically sort routines before fragment shade inclusion +export class GlslLibRoutineNode { + dependencies: GlslLibRoutineNode[]; + routineBody: string; + constructor(public name: string, routineBody?: string, dependencies?: GlslLibRoutineNode[]) { + if (dependencies) { + this.dependencies = dependencies; + } else { + this.dependencies = []; + } + + if (routineBody) { + this.routineBody = routineBody; + } + } + addDependency(node: GlslLibRoutineNode) { + if (node) { + this.dependencies.push(node); + } + } +} + +// topologically sort GLSL library routines (graph nodes abstraction) before shader script inclusion +export class TopologicalSortGlslRoutines { + static returnOrderedNodes(nodes: GlslLibRoutineNode[]): GlslLibRoutineNode[] { + if (!nodes || nodes.length === 0) { + return []; + } + + if (nodes.length === 1) { + return nodes; + } + + const cycleCheck = new Set(); + const alreadyTraversed = new Set(); + const result = new Array(); + + this.createOrderedNodes(nodes, cycleCheck, alreadyTraversed, result); + return result; + } + + private static createOrderedNodes( + graphNodes: GlslLibRoutineNode[], cycleCheck: Set, alreadyTraversed: Set, + result: GlslLibRoutineNode[]) { + for (let i = 0; i < graphNodes.length; ++i) { + this.dfsTraverse(graphNodes[i], cycleCheck, alreadyTraversed, result); + } + } + + private static dfsTraverse( + root: GlslLibRoutineNode, cycleCheck: Set, alreadyTraversed: Set, result: GlslLibRoutineNode[]) { + // if this root has already been traversed return + if (!root || alreadyTraversed.has(root.name)) { + return; + } + + // cyclic dependency has been detected + if (cycleCheck.has(root.name)) { + throw new Error('Cyclic dependency detected. Can\'t topologically sort routines needed for shader.'); + } + + // hold this node to detect cycles if any + cycleCheck.add(root.name); + + // traverse children in a dfs fashion + const dependencies = root.dependencies; + if (dependencies && dependencies.length > 0) { + for (let i = 0; i < dependencies.length; ++i) { + this.dfsTraverse(dependencies[i], cycleCheck, alreadyTraversed, result); + } + } + + // add to result holder + result.push(root); + + // mark this node as traversed so that we don't traverse from this again + alreadyTraversed.add(root.name); + + // release the hold + cycleCheck.delete(root.name); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-encoding-lib.ts b/js/web/lib/onnxjs/backends/webgl/glsl-encoding-lib.ts new file mode 100644 index 0000000000..9d0656051c --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-encoding-lib.ts @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions'; + +/** + * This GLSL library handles routines converting + * float32 to/from Unsigned byte or float 16 + */ +export class EncodingGlslLib extends GlslLib { + constructor(context: GlslContext) { + super(context); + } + getFunctions(): {[name: string]: GlslLibRoutine} { + return {...this.encodeFloat32(), ...this.decodeFloat32()}; + } + getCustomTypes(): {[name: string]: string} { + return {}; + } + protected encodeFloat32(): {[name: string]: GlslLibRoutine} { + return { + encode: new GlslLibRoutine(`highp vec4 encode(highp float f) { + return vec4(f, 0.0, 0.0, 0.0); + } + `) + }; + } + protected decodeFloat32(): {[name: string]: GlslLibRoutine} { + return { + decode: new GlslLibRoutine(`highp float decode(highp vec4 rgba) { + return rgba.r; + } + `) + }; + } + /** + * returns the routine to encode encode a 32bit float to a vec4 (of unsigned bytes) + * @credit: https://stackoverflow.com/questions/7059962/how-do-i-convert-a-vec4-rgba-value-to-a-float + */ + protected encodeUint8(): {[name: string]: GlslLibRoutine} { + const endianness = EncodingGlslLib.isLittleEndian() ? 'rgba.rgba=rgba.abgr;' : ''; + return { + encode: new GlslLibRoutine(` + highp vec4 encode(highp float f) { + highp float F = abs(f); + highp float Sign = step(0.0,-f); + highp float Exponent = floor(log2(F)); + highp float Mantissa = (exp2(- Exponent) * F); + Exponent = floor(log2(F) + 127.0) + floor(log2(Mantissa)); + highp vec4 rgba; + rgba[0] = 128.0 * Sign + floor(Exponent*exp2(-1.0)); + rgba[1] = 128.0 * mod(Exponent,2.0) + mod(floor(Mantissa*128.0),128.0); + rgba[2] = floor(mod(floor(Mantissa*exp2(23.0 -8.0)),exp2(8.0))); + rgba[3] = floor(exp2(23.0)*mod(Mantissa,exp2(-15.0))); + ${endianness} + rgba = rgba / 255.0; // values need to be normalized to [0,1] + return rgba; + } + `) + }; + } + /** + * returns the routine to encode a vec4 of unsigned bytes to float32 + * @credit: https://stackoverflow.com/questions/7059962/how-do-i-convert-a-vec4-rgba-value-to-a-float + */ + protected decodeUint8(): {[name: string]: GlslLibRoutine} { + const endianness = EncodingGlslLib.isLittleEndian() ? 'rgba.rgba=rgba.abgr;' : ''; + return { + decode: new GlslLibRoutine(` + highp float decode(highp vec4 rgba) { + rgba = rgba * 255.0; // values need to be de-normalized from [0,1] to [0,255] + ${endianness} + highp float Sign = 1.0 - step(128.0,rgba[0])*2.0; + highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0; + highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000); + highp float Result = Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 )); + return Result; + } + `) + }; + } + /** + * Determines if the machine is little endian or not + * @credit: https://gist.github.com/TooTallNate/4750953 + */ + static isLittleEndian(): boolean { + const b = new ArrayBuffer(4); + const a = new Uint32Array(b); + const c = new Uint8Array(b); + a[0] = 0xdeadbeef; + if (c[0] === 0xef) { + return true; + } + if (c[0] === 0xde) { + return false; + } + throw new Error('unknown endianness'); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-fragcolor-lib.ts b/js/web/lib/onnxjs/backends/webgl/glsl-fragcolor-lib.ts new file mode 100644 index 0000000000..03954714f8 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-fragcolor-lib.ts @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions'; +import {getGlsl} from './glsl-source'; + +/** + * This GLSL library handles routines around reading a texlet and writing to it + * Reading and writing could be more than just dealing with one channel + * It may require encoding/decoding to/from 4 channels into one + */ +export class FragColorGlslLib extends GlslLib { + constructor(context: GlslContext) { + super(context); + } + getFunctions(): {[name: string]: GlslLibRoutine} { + return {...this.setFragColor(), ...this.getColorAsFloat()}; + } + getCustomTypes(): {[name: string]: string} { + return {}; + } + protected setFragColor(): {[name: string]: GlslLibRoutine} { + const glsl = getGlsl(this.context.glContext.version); + return { + setFragColor: new GlslLibRoutine( + ` + void setFragColor(float value) { + ${glsl.output} = encode(value); + } + `, + ['encoding.encode']) + }; + } + protected getColorAsFloat(): {[name: string]: GlslLibRoutine} { + return { + getColorAsFloat: new GlslLibRoutine( + ` + float getColorAsFloat(vec4 color) { + return decode(color); + } + `, + ['encoding.decode']) + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-function-inliner.ts b/js/web/lib/onnxjs/backends/webgl/glsl-function-inliner.ts new file mode 100644 index 0000000000..7e371700e4 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-function-inliner.ts @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +const INLINE_FUNC_DEF_REGEX = /@inline[\s\n\r]+(\w+)[\s\n\r]+([0-9a-zA-Z_]+)\s*\(([^)]*)\)\s*{(([^}]|[\n\r])*)}/gm; +const FUNC_CALL_REGEX = '(\\w+)?\\s+([_0-9a-zA-Z]+)\\s+=\\s+__FUNC__\\((.*)\\)\\s*;'; +/** + * GLSL preprocessor responsible for resolving @inline directives + */ +export function replaceInlines(script: string): string { + const inlineDefs: {[name: string]: {params: Array<{type: string; name: string}|null>; body: string}} = {}; + let match; + while ((match = INLINE_FUNC_DEF_REGEX.exec(script)) !== null) { + const params = match[3] + .split(',') + .map(s => { + const tokens = s.trim().split(' '); + if (tokens && tokens.length === 2) { + return {type: tokens[0], name: tokens[1]}; + } + return null; + }) + .filter(v => v !== null); + inlineDefs[match[2]] = {params, body: match[4]}; + } + for (const name in inlineDefs) { + const regexString = FUNC_CALL_REGEX.replace('__FUNC__', name); + const regex = new RegExp(regexString, 'gm'); + while ((match = regex.exec(script)) !== null) { + const type = match[1]; + const variable = match[2]; + const params = match[3].split(','); + const declLine = (type) ? `${type} ${variable};` : ''; + let newBody: string = inlineDefs[name].body; + let paramRedecLine = ''; + inlineDefs[name].params.forEach((v, i) => { + if (v) { + paramRedecLine += `${v.type} ${v.name} = ${params[i]};\n`; + } + }); + newBody = `${paramRedecLine}\n ${newBody}`; + newBody = newBody.replace('return', `${variable} = `); + const replacement = ` + ${declLine} + { + ${newBody} + } + `; + script = script.replace(match[0], replacement); + } + } + script = script.replace(INLINE_FUNC_DEF_REGEX, ''); + return script; +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-preprocessor.ts b/js/web/lib/onnxjs/backends/webgl/glsl-preprocessor.ts new file mode 100644 index 0000000000..52220cd4c3 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-preprocessor.ts @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {GlslContext, GlslLib, GlslLibRoutineNode, TopologicalSortGlslRoutines} from './glsl-definitions'; +import {replaceInlines} from './glsl-function-inliner'; +import {glslRegistry} from './glsl-registered-libs'; +import {getDefaultFragShaderMain, getFragShaderPreamble} from './glsl-source'; +import {ProgramInfo, VariableInfo} from './types'; +import {WebGLContext} from './webgl-context'; + +/** + * Preprocessor for the additions to the GLSL language + * It deals with: + * @include directives + * @inline + * Loop unrolling (not implemented) + * Macro resolution (not implemented) + */ +export class GlslPreprocessor { + readonly context: GlslContext; + readonly libs: {[name: string]: GlslLib} = {}; + readonly glslLibRoutineDependencyGraph: {[routineName: string]: GlslLibRoutineNode} = {}; + + constructor(glContext: WebGLContext, programInfo: ProgramInfo) { + this.context = new GlslContext(glContext, programInfo); + + // construct GlslLibs + Object.keys(glslRegistry).forEach((name: string) => { + const lib = new glslRegistry[name](this.context); + this.libs[name] = lib; + }); + + // construct GlslRoutineDependencyGraph + const map = this.glslLibRoutineDependencyGraph; + for (const libName in this.libs) { + const lib = this.libs[libName]; + const routinesInLib = lib.getFunctions(); + for (const routine in routinesInLib) { + const key = libName + '.' + routine; + let currentNode: GlslLibRoutineNode; + if (map[key]) { + currentNode = map[key]; + currentNode.routineBody = routinesInLib[routine].routineBody; + } else { + currentNode = new GlslLibRoutineNode(key, routinesInLib[routine].routineBody); + map[key] = currentNode; + } + const dependencies = routinesInLib[routine].dependencies; + if (dependencies) { + for (let i = 0; i < dependencies.length; ++i) { + if (!map[dependencies[i]]) { + const node = new GlslLibRoutineNode(dependencies[i]); + map[dependencies[i]] = node; + currentNode.addDependency(node); + } else { + currentNode.addDependency(map[dependencies[i]]); + } + } + } + } + } + } + + preprocess(): string { + const programInfo = this.context.programInfo; + let source = programInfo.shaderSource; + + // append main() function + if (!this.context.programInfo.hasMain) { + source = `${source} + ${getDefaultFragShaderMain(this.context.glContext.version, programInfo.outputLayout.shape.length)}`; + } + // replace inlines + source = replaceInlines(source); + + // concat final source string + return `${getFragShaderPreamble(this.context.glContext.version)} + ${this.getUniforms(programInfo.samplers, programInfo.variables)} + ${this.getImports(source)} + ${source}`; + } + + protected getImports(script: string): string { + const routinesIncluded = this.selectGlslLibRoutinesToBeIncluded(script); + + if (routinesIncluded.length === 0) { + return ''; + } + + let routines = ''; + for (let i = 0; i < routinesIncluded.length; ++i) { + if (routinesIncluded[i].routineBody) { + routines += routinesIncluded[i].routineBody + '\n'; + } else { + throw new Error(`Missing body for the Glsl Library routine: ${routinesIncluded[i].name}`); + } + } + + return routines; + } + private selectGlslLibRoutinesToBeIncluded(script: string): GlslLibRoutineNode[] { + const nodes: GlslLibRoutineNode[] = []; + + Object.keys(this.glslLibRoutineDependencyGraph).forEach(classAndRoutine => { + const routine = classAndRoutine.split('.')[1]; + if (script.indexOf(routine) !== -1) { + nodes.push(this.glslLibRoutineDependencyGraph[classAndRoutine]); + } + }); + + return TopologicalSortGlslRoutines.returnOrderedNodes(nodes); + } + + protected getUniforms(samplers?: string[], variables?: VariableInfo[]): string { + const uniformLines: string[] = []; + if (samplers) { + for (const sampler of samplers) { + uniformLines.push(`uniform sampler2D ${sampler};`); + } + } + if (variables) { + for (const variable of variables) { + uniformLines.push( + `uniform ${variable.type} ${variable.name}${variable.arrayLength ? `[${variable.arrayLength}]` : ''};`); + } + } + return uniformLines.join('\n'); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-registered-libs.ts b/js/web/lib/onnxjs/backends/webgl/glsl-registered-libs.ts new file mode 100644 index 0000000000..5556a9a58d --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-registered-libs.ts @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {CoordsGlslLib} from './glsl-coordinate-lib'; +import {GlslContext, GlslLib} from './glsl-definitions'; +import {EncodingGlslLib} from './glsl-encoding-lib'; +import {FragColorGlslLib} from './glsl-fragcolor-lib'; +import {ShapeUtilsGlslLib} from './glsl-shape-utils-lib'; +import {VecGlslLib} from './glsl-vec-lib'; + +export const glslRegistry: {[name: string]: new (context: GlslContext) => GlslLib} = { + 'encoding': EncodingGlslLib, + 'fragcolor': FragColorGlslLib, + 'vec': VecGlslLib, + 'shapeUtils': ShapeUtilsGlslLib, + 'coordinates': CoordsGlslLib, + // 'arrays': ArrayGlslSLib +}; diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-shape-utils-lib.ts b/js/web/lib/onnxjs/backends/webgl/glsl-shape-utils-lib.ts new file mode 100644 index 0000000000..f337dace84 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-shape-utils-lib.ts @@ -0,0 +1,171 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions'; + +/** + * GLSL Library responsible for data types and routines for manipulating + * coordinates and mapping to/from tensor indices + */ +export class ShapeUtilsGlslLib extends GlslLib { + constructor(context: GlslContext) { + super(context); + } + getFunctions(): {[name: string]: GlslLibRoutine} { + return { + ...this.bcastIndex(), + ...this.bcastMatmulIndex(), + ...this.offsetToIndices(), + ...this.indicesToOffset(), + ...this.incrementIndices() + }; + } + getCustomTypes() { + return {}; + } + protected bcastIndex(): {[name: string]: GlslLibRoutine} { + const programInfo = this.context.programInfo; + const outputRank = programInfo.outputLayout.shape.length; + const result: {[name: string]: GlslLibRoutine} = {}; + this.context.programInfo.samplers.forEach((name, i) => { + const shape = programInfo.inputLayouts[i].shape; + if (shape.length <= outputRank) { + const rank = shape.length; + const dimOffset = outputRank - rank; + const funcName = `bcastIndices_${name}`; + let block = ''; + for (let i = 0; i < rank; ++i) { + block += ` + realIndices[${i}] = int( mod(float(bcastedIndices[${dimOffset + i}]), ${shape[i]}.0) ); + `; + } + const body = ` + void ${funcName} (int bcastedIndices[${outputRank}], out int realIndices[${rank}]) { + ${block} + } + `; + result[funcName] = new GlslLibRoutine(body); + } + }); + return result; + } + protected bcastMatmulIndex(): {[name: string]: GlslLibRoutine} { + const programInfo = this.context.programInfo; + const outputRank = programInfo.outputLayout.shape.length; + const result: {[name: string]: GlslLibRoutine} = {}; + this.context.programInfo.samplers.forEach((name, i) => { + const shape = programInfo.inputLayouts[i].shape; + if (!(shape.length < 2 || shape.length > outputRank)) { + const rank = shape.length; + const dimOffset = outputRank - rank; + const funcName = `bcastMatmulIndices_${name}`; + let block = ''; + for (let i = 0; i < rank - 2; ++i) { + block += ` + realIndices[${i}] = int( mod(float(bcastedIndices[${dimOffset + i}]), ${shape[i]}.0) ); + `; + } + const body = ` + void ${funcName}(int bcastedIndices[${outputRank}], out int realIndices[${rank}]) { + ${block} + realIndices[${rank - 1}] = bcastedIndices[${outputRank - 1}]; + realIndices[${rank - 2}] = bcastedIndices[${outputRank - 2}]; + } + `; + result[funcName] = new GlslLibRoutine(body); + } + }); + return result; + } + protected indicesToOffset(): {[name: string]: GlslLibRoutine} { + const programInfo = this.context.programInfo; + const result: {[name: string]: GlslLibRoutine} = {}; + this.context.programInfo.samplers.forEach((name, i) => { + const shape = programInfo.inputLayouts[i].shape; + const strides = programInfo.inputLayouts[i].strides; + const rank = shape.length; + let funcName = `indicesToOffset_${name}`; + result[funcName] = new GlslLibRoutine(ShapeUtilsGlslLib.indexToOffsetSingle(funcName, rank, strides)); + funcName = `indicesToOffset_${name}_T`; + result[funcName] = + new GlslLibRoutine(ShapeUtilsGlslLib.indexToOffsetSingle(funcName, rank, strides.slice().reverse())); + }); + return result; + } + static indexToOffsetSingle(name: string, rank: number, strides: readonly number[]): string { + let block = ''; + for (let i = rank - 1; i >= 0; --i) { + block += ` + offset += indices[${i}] * ${strides[i]}; + `; + } + return ` + int ${name}(int indices[${rank}]) { + int offset = 0; + ${block} + return offset; + } + `; + } + protected offsetToIndices(): {[name: string]: GlslLibRoutine} { + const programInfo = this.context.programInfo; + const result: {[name: string]: GlslLibRoutine} = {}; + this.context.programInfo.samplers.forEach((name, i) => { + const shape = programInfo.inputLayouts[i].shape; + const strides = programInfo.inputLayouts[i].strides; + const rank = shape.length; + let funcName = `offsetToIndices_${name}`; + result[funcName] = new GlslLibRoutine(ShapeUtilsGlslLib.offsetToIndicesSingle(funcName, rank, strides)); + funcName = `offsetToIndices_${name}_T`; + result[funcName] = + new GlslLibRoutine(ShapeUtilsGlslLib.offsetToIndicesSingle(funcName, rank, strides.slice().reverse())); + }); + return result; + } + static offsetToIndicesSingle(name: string, rank: number, strides: readonly number[]): string { + const stridesBlock = []; + for (let i = 0; i < rank - 1; ++i) { + stridesBlock.push(` + indices[${i}] = offset / ${strides[i]};`); + stridesBlock.push(` + offset -= indices[${i}] * ${strides[i]};`); + } + stridesBlock.push(` + indices[${rank - 1}] = offset;`); + return ` + void ${name}(int offset, out int indices[${rank}]) { + ${stridesBlock.join('')} + } + `; + } + protected incrementIndices(): {[name: string]: GlslLibRoutine} { + const programInfo = this.context.programInfo; + const result: {[name: string]: GlslLibRoutine} = {}; + this.context.programInfo.samplers.forEach((name, i) => { + const shape = programInfo.inputLayouts[i].shape; + const rank = shape.length; + const funcName = `incrementIndices_${name}`; + let shapeInit = ''; + for (let i = 0; i < rank; ++i) { + shapeInit += ` + shape[${i}] = ${shape[i]};`; + } + const body = ` + void ${funcName}(int axis, out int indices[${rank}]) { + int shape[${rank}]; + ${shapeInit}; + for(int i = ${rank} -1 ; i >= 0; --i) { + if(i > axis) continue; + indices[i] += 1; + if(indices[i] < shape[i]) { + break; + } + indices[i] = 0; + } + } + `; + result[funcName] = new GlslLibRoutine(body); + }); + return result; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-source.ts b/js/web/lib/onnxjs/backends/webgl/glsl-source.ts new file mode 100644 index 0000000000..a6cb2e503d --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-source.ts @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +/** + * represent a version irrelevant abstraction of for GLSL source code + */ +export interface Glsl { + readonly version: string; + readonly attribute: string; + readonly varyingVertex: string; + readonly varyingFrag: string; + readonly texture2D: string; + readonly output: string; + readonly outputDeclaration: string; +} + +const GLSL_ES_2_0: Glsl = { + version: '', + attribute: 'attribute', + varyingVertex: 'varying', + varyingFrag: 'varying', + texture2D: 'texture2D', + output: 'gl_FragColor', + outputDeclaration: '', +}; +const GLSL_ES_3_0: Glsl = { + version: '#version 300 es', + attribute: 'in', + varyingVertex: 'out', + varyingFrag: 'in', + texture2D: 'texture', + output: 'outputColor', + outputDeclaration: 'out vec4 outputColor;', +}; + +export function getGlsl(version: 1|2) { + return version === 1 ? GLSL_ES_2_0 : GLSL_ES_3_0; +} + +export function getVertexShaderSource(version: 1|2): string { + const glsl = getGlsl(version); + return `${glsl.version} + precision highp float; + ${glsl.attribute} vec3 position; + ${glsl.attribute} vec2 textureCoord; + + ${glsl.varyingVertex} vec2 TexCoords; + + void main() + { + gl_Position = vec4(position, 1.0); + TexCoords = textureCoord; + }`; +} + +export function getFragShaderPreamble(version: 1|2): string { + const glsl = getGlsl(version); + return `${glsl.version} + precision highp float; + precision highp int; + precision highp sampler2D; + ${glsl.varyingFrag} vec2 TexCoords; + ${glsl.outputDeclaration} + const vec2 halfCR = vec2(0.5, 0.5); + + // Custom vector types to handle higher dimenalities. + struct ivec5 + { + int x; + int y; + int z; + int w; + int u; + }; + + struct ivec6 + { + int x; + int y; + int z; + int w; + int u; + int v; + }; + + int imod(int x, int y) { + return x - y * (x / y); + } + + `; +} + +export function getDefaultFragShaderMain(version: 1|2, outputShapeLength: number): string { + const glsl = getGlsl(version); + return ` + void main() { + int indices[${outputShapeLength}]; + toVec(TexCoords, indices); + vec4 result = vec4(process(indices)); + ${glsl.output} = result; + } + `; +} diff --git a/js/web/lib/onnxjs/backends/webgl/glsl-vec-lib.ts b/js/web/lib/onnxjs/backends/webgl/glsl-vec-lib.ts new file mode 100644 index 0000000000..3c6db2f653 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/glsl-vec-lib.ts @@ -0,0 +1,113 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions'; + +/** + * GLSL Library responsible for vec routines + * Vec is an varible length int array. The length is fixed at the time of + * generating the library functions from the dimensions of the output. + */ +export class VecGlslLib extends GlslLib { + constructor(context: GlslContext) { + super(context); + } + getCustomTypes(): {[name: string]: string} { + return {}; + } + getFunctions(): {[name: string]: GlslLibRoutine} { + return {...this.binaryVecFunctions(), ...this.copyVec(), ...this.setVecItem(), ...this.getVecItem()}; + } + protected binaryVecFunctions(): {[name: string]: GlslLibRoutine} { + const outputLayout = this.context.programInfo.outputLayout; + const rank = outputLayout.shape.length; + const nameOp: {[name: string]: string} = {add: '+=', sub: '-=', mul: '*=', div: '/='}; + const result: {[name: string]: GlslLibRoutine} = {}; + for (const name in nameOp) { + const fname = `${name}Vec`; + let assignmentBlock = ''; + for (let i = 0; i < rank; ++i) { + assignmentBlock += ` + dest[${i}] ${nameOp[name]} src[${i}]; + `; + } + const body = ` + void ${fname}(int src[${rank}], out int dest[${rank}]) { + ${assignmentBlock} + } + `; + result[fname] = new GlslLibRoutine(body); + } + + return result; + } + protected copyVec(): {[name: string]: GlslLibRoutine} { + const outputLayout = this.context.programInfo.outputLayout; + const rank = outputLayout.shape.length; + let assignmentBlock = ''; + for (let i = 0; i < rank; ++i) { + assignmentBlock += ` + dest[${i}] = src[${i}]; + `; + } + const body = ` + void copyVec(int src[${rank}], out int dest[${rank}]) { + ${assignmentBlock} + } + `; + return {copyVec: new GlslLibRoutine(body)}; + } + + protected setVecItem(): {[name: string]: GlslLibRoutine} { + const outputLayout = this.context.programInfo.outputLayout; + const rank = outputLayout.shape.length; + let block = ` + if(index < 0) + index =${rank} + index; + if (index == 0) + m[0] = value; + `; + for (let i = 1; i < rank - 1; ++i) { + block += ` + else if (index == ${i}) + m[${i}] = value; + `; + } + block += ` + else + m[${rank - 1}] = value; + `; + const body = ` + void setVecItem(out int m[${rank}], int index, int value) { + ${block} + } + `; + return {setVecItem: new GlslLibRoutine(body)}; + } + protected getVecItem(): {[name: string]: GlslLibRoutine} { + const outputLayout = this.context.programInfo.outputLayout; + const rank = outputLayout.shape.length; + let block = ` + if(index < 0) + index = ${rank} + index; + if (index == 0) + return m[0]; + `; + for (let i = 1; i < rank - 1; ++i) { + block += ` + else if (index == ${i}) + return m[${i}]; + `; + } + block += ` + else + return m[${rank - 1}]; + `; + const body = ` + int getVecItem(int m[${rank}], int index) { + ${block} + } + `; + return {getVecItem: new GlslLibRoutine(body)}; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/inference-handler.ts b/js/web/lib/onnxjs/backends/webgl/inference-handler.ts new file mode 100644 index 0000000000..c16c2b849e --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/inference-handler.ts @@ -0,0 +1,283 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {InferenceHandler} from '../../backend'; +import {Logger} from '../../instrument'; +import {Tensor} from '../../tensor'; +import {ShapeUtil} from '../../util'; +import {WebGLPack} from './ops/pack'; + +import {WebGLUint8Encode} from './ops/uint8-encode'; +import {WebGLUnpack} from './ops/unpack'; +import {WebGLSessionHandler} from './session-handler'; +import {Encoder} from './texture-data-encoder'; +import {WidthHeightPrefs} from './texture-layout-strategy'; +import {Artifact, RunData, TextureData, TextureLayout, WebGLOperator} from './types'; +import {getPackedShape} from './utils'; + +export class WebGLInferenceHandler implements InferenceHandler { + private textureDataCache: Map; + constructor(public session: WebGLSessionHandler) { + this.textureDataCache = new Map(); + } + + run(op: WebGLOperator, inputs: Tensor[]): Tensor[] { + let artifact = this.session.programManager.getArtifact(op); + if (!artifact) { + const programInfo = op.createProgramInfo(this, inputs); + artifact = this.session.programManager.build(programInfo); + this.session.programManager.setArtifact(op, artifact); + } + const runData = op.createRunData(this, artifact.programInfo, inputs); + this.runProgram(artifact, runData); + return [runData.outputTextureData.tensor]; + } + + runProgram(artifact: Artifact, runData: RunData) { + // pack/unpack inputs + runData.inputTextureDatas.forEach(input => { + if (input.isPacked && !artifact.programInfo.expectPackedInputs) { + // unpack this input + const unpacked = this.unpack(input); + input.height = unpacked.height; + input.isPacked = unpacked.isPacked; + input.texture = unpacked.texture; + input.width = unpacked.width; + + } else if (!input.isPacked && artifact.programInfo.expectPackedInputs) { + // pack this input + const packed = this.pack(input); + input.height = packed.height; + input.isPacked = packed.isPacked; + input.texture = packed.texture; + input.width = packed.width; + } + }); + + // output should match + if (!!runData.outputTextureData.isPacked !== !!artifact.programInfo.expectPackedoutputs) { + throw new Error('output property packed inconsistent'); + } + + this.session.programManager.run(artifact, runData); + } + + /** + * Create a TextureData object from a tensor. + * Usage = Encoder.Usage.UploadOnly. + * If a related texture data is found in cache, returns it; + * Otherwise: + * Creates a new texture layout if not provided; + * Creates WebGLTexture with the layout; + * Upload tensor data to the texture; + * Creates a texture data object associated with the given tensor. + * @param tensor the tensor with data to upload + */ + getOrCreateTextureData(tensor: Tensor, layout?: TextureLayout) { + let td = this.getTextureData(tensor.dataId); + if (!td) { + Logger.verbose('InferenceHandler', `Creating new TextureData for dims: [${tensor.dims}]`); + if (!layout) { + layout = this.createTextureLayoutFromShape(tensor.dims.slice()); + } + // graph inputs or initializers + td = this.createTextureData(layout, tensor.type, tensor.numberData, tensor, Encoder.Usage.UploadOnly); + } else { + Logger.verbose('InferenceHandler', `Retrieving TextureData from cache: [${tensor.dims}]`); + } + return td; + } + + /** + * Create a TextureData object from the given data type and texture layout. + * Usage = Encoder.Usage.Default. + * @param dataType the tensor data type + */ + createTextureDataFromLayout(layout: TextureLayout, dataType: Tensor.DataType): TextureData { + return this.createTextureData(layout, dataType); + } + + /** + * Create a TextureData object using the given data and bind to the given tensor. + * Usage = Encoder.Usage.UploadOnly. + * NOTE: this function is a hack for Conv implementation. should remove this function, after rewriting Conv + * implementation by Graph.Transformer + * @param dataType the tensor data type + * @param data the actual data to upload + * @param tensor the tensor to bind. tensor's data is ignored. + */ + createTextureDataFromLayoutBindTensor( + layout: TextureLayout, dataType: Tensor.DataType, data: Tensor.NumberType, tensor: Tensor): TextureData { + return this.createTextureData(layout, dataType, data, tensor, Encoder.Usage.UploadOnly); + } + + private createTextureData( + layout: TextureLayout, dataType: Tensor.DataType, data?: Tensor.NumberType, tensor?: Tensor, + usage?: Encoder.Usage): TextureData { + Logger.verbose('InferenceHandler', `Creating TextureData: layout:[${JSON.stringify(layout)}]`); + const texture = this.session.textureManager.createTextureFromLayout(dataType, layout, data, usage); + return this.createTextureDataFromTexture(layout, dataType, texture, tensor); + } + + /** + * Create a TextureData object, using the given texture. + * This function does not create new texture. Usually used in scenarios using texture sharing. (eg. Reshape) + * @param dataType the tensor data type + * @param texture the WebGLTexture object to share + * @param tensorId the tensor ID of the shared tensor data + */ + createSharedTextureData(layout: TextureLayout, dataType: Tensor.DataType, texture: WebGLTexture, tensorId: Tensor.Id): + TextureData { + return this.createTextureDataFromTexture(layout, dataType, texture, undefined, tensorId); + } + + private createTextureDataFromTexture( + layout: TextureLayout, dataType: Tensor.DataType, texture: WebGLTexture, tensor?: Tensor, tensorId?: Tensor.Id) { + const textureData: TextureData = { + ...layout, + tensor: tensor || + new Tensor( + layout.unpackedShape, dataType, + (_id: Tensor.Id) => { + const data = this.readTexture(textureData); + if (dataType === 'float32') { + return Float32Array.from(data); + } else if (dataType === 'bool') { + return Uint8Array.from(data); + } + return data; + }, + undefined, undefined, tensorId), + texture + }; + this.setTextureData(textureData.tensor.dataId, textureData); + return textureData; + } + + getTextureData(tensorId: Tensor.Id): TextureData|undefined { + return this.session.isInitializer(tensorId) ? this.session.getTextureData(tensorId) : + this.textureDataCache.get(tensorId); + } + setTextureData(tensorId: Tensor.Id, td: TextureData): void { + if (this.session.isInitializer(tensorId)) { + this.session.setTextureData(tensorId, td); + } else { + this.textureDataCache.set(tensorId, td); + } + } + + /** + * Create a TextureLayout object from a tensor. If a related texture data is found, returns the cached texture layout. + */ + getOrCreateTextureLayout( + tensor: Tensor, channels: 1|4 = 1, isPacked = false, unpackedShape?: readonly number[], + reverseWH = false): TextureLayout { + const td = this.getTextureData(tensor.dataId); + if (td) { + return td; + } + return this.createTextureLayoutFromShape( + channels === 1 || isPacked ? tensor.dims : getPackedShape(tensor.dims), channels, unpackedShape, + isPacked || reverseWH ? {isPacked, reverseWH} : undefined); + } + /** + * Create a TextureLayout object from shape. + */ + createTextureLayoutFromShape( + shape: readonly number[], channels: 1|4 = 1, unpackedShape?: readonly number[], + prefs?: WidthHeightPrefs): TextureLayout { + const isPacked = !!(prefs && prefs.isPacked); + const [texWidth, texHeight] = + this.session.layoutStrategy.computeTextureWH(isPacked ? unpackedShape || shape : shape, prefs); + let [width, height] = [texWidth, texHeight]; + if (prefs && prefs.reverseWH) { + width = texHeight; + height = texWidth; + } + const rank = shape.length; + let inferredDims = shape.slice(0); + if (rank === 0) { + inferredDims = [1]; + } + if (channels === 1) { + // unpackedShape will take `shape` and not `inferredDims` so as to create a scalar Tensor if need be + unpackedShape = shape; + } else if (isPacked) { + if (channels !== 4) { + throw new Error('a packed texture must be 4-channel'); + } + unpackedShape = shape; + if (rank > 0) { + inferredDims[rank - 1] = Math.ceil(inferredDims[rank - 1] / 2); + } + if (rank > 1) { + inferredDims[rank - 2] = Math.ceil(inferredDims[rank - 2] / 2); + } + } else if (!unpackedShape) { + throw new Error('Unpacked shape is needed when using channels > 1'); + } + return { + width, + height, + channels, + isPacked, + shape: inferredDims, + strides: ShapeUtil.computeStrides(inferredDims), + unpackedShape + }; + } + + dispose(): void { + this.session.textureManager.clearActiveTextures(); + this.textureDataCache.forEach(td => this.session.textureManager.releaseTexture(td)); + this.textureDataCache = new Map(); + } + + readTexture(textureData: TextureData): Tensor.NumberType { + if (textureData.isPacked) { + return this.readTexture(this.unpack(textureData)); + } + if (!this.session.backend.glContext.isFloat32DownloadSupported) { + const op = new WebGLUint8Encode(); + const uint8TD = op.runInternal(this, textureData); + return this.session.textureManager.readUint8TextureAsFloat(uint8TD); + } + return this.session.textureManager.readTexture(textureData, textureData.tensor.type, textureData.channels); + } + + pack(input: TextureData): TextureData { + const key = `${input.shape}`; + let op = this.session.packOpCache.get(key); + if (!op) { + op = new WebGLPack(); + this.session.packOpCache.set(key, op); + } + let artifact = this.session.programManager.getArtifact(op); + if (!artifact) { + const programInfo = op.createProgramInfo(this, [input.tensor]); + artifact = this.session.programManager.build(programInfo); + this.session.programManager.setArtifact(op, artifact); + } + const runData = op.createRunData(this, artifact.programInfo, [input.tensor]); + this.runProgram(artifact, runData); + return runData.outputTextureData; + } + + unpack(input: TextureData): TextureData { + const key = `${input.shape}`; + let op = this.session.unpackOpCache.get(key); + if (!op) { + op = new WebGLUnpack(); + this.session.unpackOpCache.set(key, op); + } + let artifact = this.session.programManager.getArtifact(op); + if (!artifact) { + const programInfo = op.createProgramInfo(this, [input.tensor]); + artifact = this.session.programManager.build(programInfo); + this.session.programManager.setArtifact(op, artifact); + } + const runData = op.createRunData(this, artifact.programInfo, [input.tensor]); + this.runProgram(artifact, runData); + return runData.outputTextureData; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/op-resolve-rules.ts b/js/web/lib/onnxjs/backends/webgl/op-resolve-rules.ts new file mode 100644 index 0000000000..6135f368d1 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/op-resolve-rules.ts @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {FLOAT_TYPES, NUMBER_TYPES} from '../../operators'; +import {OpSet} from '../../opset'; + +import {WebGLBatchNormalization} from './ops/batch-normalization'; +import * as binaryOps from './ops/binary-op'; +import {WebGLClip} from './ops/clip'; +import {WebGLConcat} from './ops/concat'; +import {WebGLConv} from './ops/conv'; +import {WebGLDropout} from './ops/dropout'; +import {WebGLElu} from './ops/elu'; +import {WebGLFlatten} from './ops/flatten'; +import {WebGLGather} from './ops/gather'; +import {WebGLGemm} from './ops/gemm'; +import {WebGLImageScaler} from './ops/image-scaler'; +import {WebGLInstanceNormalization} from './ops/instance-normalization'; +import {WebGLLeakyRelu} from './ops/leaky-relu'; +import {WebGLMatMul} from './ops/matmul'; +import {WebGLPad} from './ops/pad'; +import {WebGLAveragePool, WebGLGlobalAveragePool, WebGLGlobalMaxPool, WebGLMaxPool} from './ops/pool'; +import * as reduceOps from './ops/reduce'; +import {WebGLReshape} from './ops/reshape'; +import {WebGLSlice, WebGLSliceV10} from './ops/slice'; +import {WebGLSoftmax} from './ops/softmax'; +import {WebGLSplit} from './ops/split'; +import {WebGLSqueeze} from './ops/squeeze'; +import {WebGLSum} from './ops/sum'; +import {WebGLTile} from './ops/tile'; +import {WebGLTranspose} from './ops/transpose'; +import * as unaryOps from './ops/unary-op'; +import {WebGLUnsqueeze} from './ops/unsqueeze'; +import {WebGLUpsample} from './ops/upsample'; + +export const WEBGL_OP_RESOLVE_RULES: readonly OpSet.ResolveRule[] = [ + ['Abs', '', '6+', () => new unaryOps.WebGLUnaryOp(NUMBER_TYPES, unaryOps.glslAbs())], + ['Acos', '', '7+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslAcos())], + ['Add', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslAdd())], + ['And', '', '7+', () => new binaryOps.WebGLBinaryOp(['bool'], binaryOps.glslAnd())], + ['Asin', '', '7+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslAsin())], + ['Atan', '', '7+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslAtan())], + ['AveragePool', '', '7-10', () => new WebGLAveragePool()], // TODO: support new attributes for AveragePool-10 + ['BatchNormalization', '', '7+', () => new WebGLBatchNormalization()], + ['Ceil', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslCeil())], + ['Clip', '', '6-10', () => new WebGLClip()], + ['Concat', '', '4+', () => new WebGLConcat()], + ['Conv', '', '1+', () => new WebGLConv()], + ['Cos', '', '7+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslCos())], + ['Div', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslDiv())], + ['Dropout', '', '7+', () => new WebGLDropout()], + ['Equal', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslEqual(), undefined, 'bool')], + ['Elu', '', '6+', () => new WebGLElu()], + ['Exp', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslExp())], + ['Flatten', '', '1+', () => new WebGLFlatten()], + ['Floor', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslFloor())], + ['Gather', '', '1+', () => new WebGLGather()], + ['Gemm', '', '7-10', () => new WebGLGemm(false)], + ['Gemm', '', '11+', () => new WebGLGemm(true)], + ['GlobalAveragePool', '', '1+', () => new WebGLGlobalAveragePool()], + ['GlobalMaxPool', '', '1+', () => new WebGLGlobalMaxPool()], + ['Greater', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslGreater(), undefined, 'bool')], + ['Identity', '', '1+', () => new unaryOps.WebGLUnaryOp(NUMBER_TYPES, unaryOps.glslIdentity())], + ['ImageScaler', '', '1+', () => new WebGLImageScaler()], + ['InstanceNormalization', '', '6+', () => new WebGLInstanceNormalization()], + ['LeakyRelu', '', '6+', () => new WebGLLeakyRelu()], + ['Less', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslLess(), undefined, 'bool')], + ['Log', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslLog())], + ['MatMul', '', '1+', () => new WebGLMatMul()], + ['MaxPool', '', '1-9', () => new WebGLMaxPool()], // TODO: support new attributes for MaxPool-8 and MaxPool-10 + ['Mul', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslMul())], + ['Neg', '', '6+', () => new unaryOps.WebGLUnaryOp(NUMBER_TYPES, unaryOps.glslNeg())], + ['Not', '', '1+', () => new unaryOps.WebGLUnaryOp(['bool'], unaryOps.glslNot())], + ['Or', '', '7+', () => new binaryOps.WebGLBinaryOp(['bool'], binaryOps.glslOr())], + ['Pad', '', '2-10', () => new WebGLPad()], + ['Pow', '', '7+', () => new binaryOps.WebGLBinaryOp(FLOAT_TYPES, binaryOps.glslPow())], + ['PRelu', '', '7+', () => new binaryOps.WebGLBinaryOp(FLOAT_TYPES, binaryOps.glslPRelu())], + ['ReduceLogSum', '', '1+', () => new reduceOps.WebGLReduceLogSum()], + ['ReduceMax', '', '1+', () => new reduceOps.WebGLReduceMax()], + ['ReduceMean', '', '1+', () => new reduceOps.WebGLReduceMean()], + ['ReduceMin', '', '1+', () => new reduceOps.WebGLReduceMin()], + ['ReduceProd', '', '1+', () => new reduceOps.WebGLReduceProd()], + ['ReduceSum', '', '1+', () => new reduceOps.WebGLReduceSum()], + ['ReduceSumSquare', '', '1+', () => new reduceOps.WebGLReduceSumSquare()], + ['Relu', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslRelu())], + ['Reshape', '', '5+', () => new WebGLReshape()], + ['Sigmoid', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslSigmoid())], + ['Sin', '', '7+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslSin())], + ['Slice', '', '10+', () => new WebGLSliceV10()], // TODO: support 'steps' for Slice-10 + ['Slice', '', '1-9', () => new WebGLSlice()], + ['Softmax', '', '1+', () => new WebGLSoftmax()], + // 'Split' operator has an optional attribute 'split' + // this attribute determines how the specified axis of input data + // is split. When the attribute is missing, we need the count of number of outputs + // so that we can determine the 'split' attribute from the runtime input to the Operator + ['Split', '', '2+', (node) => new WebGLSplit(node.outputs.length)], + ['Sqrt', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslSqrt())], + ['Squeeze', '', '1+', () => new WebGLSqueeze()], + ['Sub', '', '7+', () => new binaryOps.WebGLBinaryOp(NUMBER_TYPES, binaryOps.glslSub())], + ['Sum', '', '6+', () => new WebGLSum()], // TODO: support multidirectional broadcast for Sum-8 + ['Tan', '', '7+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslTan())], + ['Tanh', '', '6+', () => new unaryOps.WebGLUnaryOp(FLOAT_TYPES, unaryOps.glslTanh())], + ['Tile', '', '6+', () => new WebGLTile()], + ['Transpose', '', '1+', () => new WebGLTranspose()], + ['Upsample', '', '7-8', () => new WebGLUpsample()], + ['Unsqueeze', '', '1+', () => new WebGLUnsqueeze()], + ['Xor', '', '7+', () => new binaryOps.WebGLBinaryOp(['bool'], binaryOps.glslXor())], +]; diff --git a/js/web/lib/onnxjs/backends/webgl/ops/batch-normalization.ts b/js/web/lib/onnxjs/backends/webgl/ops/batch-normalization.ts new file mode 100644 index 0000000000..a1b680fb07 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/batch-normalization.ts @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {BatchNormalization} from '../../../ops/batch-normalization'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData} from '../types'; + +export class WebGLBatchNormalization extends BatchNormalization { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputLayouts = inputs.map(t => handler.getOrCreateTextureLayout(t)); + const outputShape = inputs[0].dims.slice(); + const rank = outputShape.length; + const scale = inputLayouts[1]; + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + float process(int[${rank}] indices) { + vec2 position = offsetToCoords(indices[1], ${scale.width}, ${scale.height}); + float scale = getColorAsFloat(${glsl.texture2D}(Scale, position)); + float mean = getColorAsFloat(${glsl.texture2D}(Mean, position)); + float variance = getColorAsFloat(${glsl.texture2D}(Variance, position)); + float b = getColorAsFloat(${glsl.texture2D}(B, position)); + + return scale * ( (_A(indices) - mean) / sqrt(variance + float(${this.epsilon})) ) + b; + }`; + return { + inputLayouts, + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A', 'Scale', 'B', 'Mean', 'Variance'], + shaderSource + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + inputs.slice(1).forEach(t => inputTDs.push(handler.getOrCreateTextureData(t))); + const outputTD = handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type); + return {inputTextureDatas: inputTDs, outputTextureData: outputTD, uniformData: {}}; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/binary-op.ts b/js/web/lib/onnxjs/backends/webgl/ops/binary-op.ts new file mode 100644 index 0000000000..971683a475 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/binary-op.ts @@ -0,0 +1,252 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {BinaryOp} from '../../../ops/binary-op'; +import {Tensor} from '../../../tensor'; +import {BroadcastUtil, ShapeUtil} from '../../../util'; +import {FunctionType, GlslValueFunction} from '../glsl-definitions'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLBinaryOp extends BinaryOp implements WebGLOperator { + constructor( + typeConstraint: readonly Tensor.DataType[], protected glslFunc: GlslValueFunction, opType?: string, + resultType?: Tensor.DataType) { + super(typeConstraint, opType, resultType); + } + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputLayouts = inputs.map(t => handler.getOrCreateTextureLayout(t)); + const isBroadcast = !ShapeUtil.areEqual(inputs[0].dims, inputs[1].dims); + if (isBroadcast) { + const outputShape = BroadcastUtil.calcShape(inputs[0].dims, inputs[1].dims, false); + if (!outputShape) { + throw new Error('Can\'t perform binary op on the given tensors'); + } + const outputRank = outputShape.length; + const aRank = inputs[0].dims.length !== 0 ? inputs[0].dims.length : 1; + const bRank = inputs[1].dims.length !== 0 ? inputs[1].dims.length : 1; + const aBcast = inputs[0].dims.length !== 0 ? 'bcastIndices_A(indices, aindices);' : 'aindices[0] = 0;'; + const bBcast = inputs[1].dims.length !== 0 ? 'bcastIndices_B(indices, bindices);' : 'bindices[0] = 0;'; + const shaderSource = ` + ${this.glslFunc.body} + float process(int indices[${outputRank}]) { + int aindices[${aRank}]; + int bindices[${bRank}]; + ${aBcast} + ${bBcast} + return ${this.glslFunc.name}(_A(aindices), _B(bindices)); + }`; + return { + inputLayouts, + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A', 'B'], + shaderSource, + }; + } + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + ${this.glslFunc.body} + void main() { + vec4 v1 = ${glsl.texture2D}(A, TexCoords); + vec4 v2 = ${glsl.texture2D}(B, TexCoords); + vec4 result = ${this.glslFunc.name}(v1, v2); + ${glsl.output} = result; + } + `; + return { + hasMain: true, + inputLayouts, + outputLayout: handler.createTextureLayoutFromShape(inputs[0].dims), + samplers: ['A', 'B'], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout( + programInfo.outputLayout, this.resultType ? this.resultType : inputs[0].type), + uniformData: {} + }; + } +} + +export function glslAdd(): GlslValueFunction { + const name = 'add_'; + const body = ` + float ${name}(float a, float b) { + return a + b; + } + vec4 ${name}(vec4 v1, vec4 v2) { + return v1 + v2; + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslDiv(): GlslValueFunction { + const name = 'div_'; + const body = ` + float ${name}(float a, float b) { + return a / b; + } + vec4 ${name}(vec4 v1, vec4 v2) { + return v1 / v2; + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslMul(): GlslValueFunction { + const name = 'mul_'; + const body = ` + float ${name}(float a, float b) { + return a * b; + } + vec4 ${name}(vec4 v1, vec4 v2) { + return v1 * v2; + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslSub(): GlslValueFunction { + const name = 'sub_'; + const body = ` + float ${name}(float a, float b) { + return a - b; + } + vec4 ${name}(vec4 v1, vec4 v2) { + return v1 - v2; + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslEqual(): GlslValueFunction { + const name = 'equal_'; + const body = ` + float ${name}(float a, float b) { + return float(a == b); + } + vec4 ${name}(vec4 v1, vec4 v2) { + return vec4( v1 == v2 ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslGreater(): GlslValueFunction { + const name = 'greater_'; + const body = ` + float ${name}(float a, float b) { + return float(a > b); + } + vec4 ${name}(vec4 v1, vec4 v2) { + return vec4( v1.r > v2.r , + v1.g > v2.g, + v1.b > v2.b, + v1.a > v2.a ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslLess(): GlslValueFunction { + const name = 'less_'; + const body = ` + float ${name}(float a, float b) { + return float(a < b); + } + vec4 ${name}(vec4 v1, vec4 v2) { + return vec4( v1.r < v2.r , + v1.g < v2.g, + v1.b < v2.b, + v1.a < v2.a ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslAnd(): GlslValueFunction { + const name = 'and_'; + const body = ` + float ${name}(float a, float b) { + return float( bool(a) && bool(b) ); + } + vec4 ${name}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r && b2.r , + b1.g && b2.g, + b1.b && b2.b, + b1.a && b2.a ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslOr(): GlslValueFunction { + const name = 'or_'; + const body = ` + float ${name}(float a, float b) { + return float( bool(a) || bool(b) ); + } + vec4 ${name}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r || b2.r , + b1.g || b2.g, + b1.b || b2.b, + b1.a || b2.a ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslXor(): GlslValueFunction { + const name = 'xor_'; + const body = ` + float ${name}(float a, float b) { + return float( bool(a) ^^ bool(b) ); + } + vec4 ${name}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r ^^ b2.r , + b1.g ^^ b2.g, + b1.b ^^ b2.b, + b1.a ^^ b2.a ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslPow(): GlslValueFunction { + return glslBuiltinBinary('pow'); +} +export function glslPRelu(): GlslValueFunction { + const name = 'prelu_'; + const body = ` + float ${name}(float a, float b) { + return a < 0.0 ? a * b: a; + } + vec4 ${name}(vec4 v1, vec4 v2) { + return vec4( + v1.r < 0.0 ? v1.r * v2.r: v1.r, + v1.g < 0.0 ? v1.g * v2.g: v1.g, + v1.b < 0.0 ? v1.b * v2.b: v1.b, + v1.a < 0.0 ? v1.a * v2.a: v1.a + ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} + +function glslBuiltinBinary(fname: string): GlslValueFunction { + const name = `${fname}_`; + const body = ` + float ${name}(float a, float b) { + return ${fname}(a, b); + } + vec4 ${name}(vec4 v1, vec4 v2) { + return ${fname}(v1, v2); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/clip.ts b/js/web/lib/onnxjs/backends/webgl/ops/clip.ts new file mode 100644 index 0000000000..13bbed7467 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/clip.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Clip} from '../../../ops/clip'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLClip extends Clip implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape = inputs[0].dims.slice(); + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + const float min = float(${this.min}); + const float max = float(${this.max}); + void main() { + float v = ${glsl.texture2D}(A, TexCoords).r; + ${glsl.output} = vec4(clamp(v, min, max)); + } + `; + return { + inputLayouts: [handler.getOrCreateTextureLayout(inputs[0])], + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + hasMain: true, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/concat.ts b/js/web/lib/onnxjs/backends/webgl/ops/concat.ts new file mode 100644 index 0000000000..2cb8cdcff4 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/concat.ts @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Concat} from '../../../ops/concat'; +import {Tensor} from '../../../tensor'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLConcat extends Concat implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputShape = inputs[0].dims.slice(); + if (this.axis >= inputShape.length || this.axis < (-1 * inputShape.length)) { + throw new Error('axis specified for concat doesn\'t match input dimensionality'); + } + if (this.axis < 0) { + this.axis = inputShape.length + this.axis; + } + // ensure all of the non-concatenated axes match each other + // calculate the shape of the output tensor while we do that + const outputShape = inputShape.slice(0); + for (let i = 1; i < inputs.length; i++) { + const dataNShape = inputs[i].dims.slice(); + for (let axisIndex = 0; axisIndex < inputShape.length; axisIndex++) { + // add to the placeholder for computing output shape + if (axisIndex === this.axis) { + outputShape[this.axis] += dataNShape[axisIndex]; + } + // ensure all non-cancatenated axes match each other + else if (inputShape[axisIndex] !== dataNShape[axisIndex]) { + throw new Error('non concat dimensions must match'); + } + } + } + + const rank = outputShape.length; + + let getTextureIndexWhereDataResidesMethod = ''; + // in most cases linear search is sufficient, as in most scenarios, only 2 tensors are concatenated + if (inputs.length < 5) { + getTextureIndexWhereDataResidesMethod = this.getTextureIndexWhereDataResidesLinearSearch(inputs.length); + } else { + getTextureIndexWhereDataResidesMethod = this.getTextureIndexWhereDataResidesBinarySearch(inputs.length); + } + + const fetchDataFromCorrectTextureMethod = this.fetchDataFromCorrectTextureMethod(inputs.length, rank); + const getValueFromArrayIndexMethod = this.getValueFromArrayIndexMethod(inputs.length); + const samplers = inputs.map((v, i) => `X${i}`); + const shaderSource = ` + ${fetchDataFromCorrectTextureMethod} + ${getValueFromArrayIndexMethod} + ${getTextureIndexWhereDataResidesMethod} + float process(int indices[${rank}]) { + int textureIndex = getTextureWhereDataResides (indices[${this.axis}]); + + if(textureIndex != 0) { + indices[${this.axis}] = indices[${ + this.axis}] - int(getValueFromArrayIndex(sizeInConcatAxis, textureIndex-int(1))); + } + + return fetchDataFromCorrectTexture(textureIndex, indices); + }`; + return { + inputLayouts: inputs.map(t => handler.getOrCreateTextureLayout(t)), + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers, + variables: [{name: 'sizeInConcatAxis', type: 'int', arrayLength: inputs.length}], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + const sizeInConcatAxis = new Array(programInfo.inputLayouts.length); + let previousSum = 0; + for (let i = 0; i < programInfo.inputLayouts.length; ++i) { + previousSum += programInfo.inputLayouts[i].shape[this.axis]; + sizeInConcatAxis[i] = previousSum; + } + const uniformData = {sizeInConcatAxis}; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData + }; + } + private getTextureIndexWhereDataResidesLinearSearch(numberOfTensors: number): string { + return `int getTextureWhereDataResides(int index) { + for(int i=0; i<${numberOfTensors}; i++) { + if(index < int(sizeInConcatAxis[i])){ + return i; + } + } + }`; + } + + // TODO: Implement BinarySearch in GLSL + private getTextureIndexWhereDataResidesBinarySearch(numberOfTensors: number): string { + return this.getTextureIndexWhereDataResidesLinearSearch(numberOfTensors); + } + + private fetchDataFromCorrectTextureMethod(numberOfTensors: number, tensorRank: number) { + const codeLines: string[] = [`float fetchDataFromCorrectTexture(int textureIndex, int indices[${tensorRank}]) {`]; + for (let i = 0; i < numberOfTensors; ++i) { + if (i === 0) { + codeLines.push( + '\t' + + `if (textureIndex == ${i}) { return _X${i}(indices); }`); + } else if (i === numberOfTensors - 1) { + codeLines.push( + '\t' + + `else { return _X${i}(indices); }`); + } else { + codeLines.push( + '\t' + + `else if (textureIndex == ${i}) { return _X${i}(indices); }`); + } + } + codeLines.push( + '\t' + + '}'); + return codeLines.join('\n'); + } + + private getValueFromArrayIndexMethod(arrayRank: number): string { + const codeLines: string[] = [`int getValueFromArrayIndex(int arr[${arrayRank}], int index) {`]; + for (let i = 0; i < arrayRank; ++i) { + if (i === 0) { + codeLines.push( + '\t' + + `if (index == ${i}) { return arr[${i}]; }`); + } else if (i === arrayRank - 1) { + codeLines.push( + '\t' + + `else { return arr[${i}]; }`); + } else { + codeLines.push( + '\t' + + `else if (index == ${i}) { return arr[${i}]; }`); + } + } + codeLines.push( + '\t' + + '}'); + + return codeLines.join('\n'); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/conv.ts b/js/web/lib/onnxjs/backends/webgl/ops/conv.ts new file mode 100644 index 0000000000..b1bbe758a4 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/conv.ts @@ -0,0 +1,284 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Logger} from '../../../instrument'; +import {Conv} from '../../../ops/conv'; +import {Tensor} from '../../../tensor'; +import {PoolConvUtil} from '../../../util'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {Artifact, ProgramInfo, RunData, TextureLayout} from '../types'; +import {WebGLContext} from '../webgl-context'; + +export class WebGLConv extends Conv { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + const programManager = inferenceHandler.session.programManager; + if (!this.artifacts) { + this.artifacts = []; + const programInfos = this.createProgramInfos(inferenceHandler, inputs); + for (let i = 0; i < programInfos.length; ++i) { + const artifact = inferenceHandler.session.programManager.build(programInfos[i]); + this.artifacts.push(artifact); + } + } + const runDatas = this.createRunDatas(inferenceHandler, this.artifacts.map(a => a.programInfo), inputs); + programManager.run(this.artifacts[0], runDatas[0]); + programManager.run(this.artifacts[1], runDatas[1]); + return [runDatas[1].outputTextureData.tensor]; + } + createProgramInfos(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo[] { + const xshape = inputs[0].dims.slice(); + const kshape = inputs[1].dims.slice(); + // if kernelShape is not specified in the attributes of this op, infer it from the weight tensor dims + if (this.kernelShape.length === 0) { + const wDims = inputs[1].dims; + for (let i = 2; i < wDims.length; ++i) { + this.kernelShape.push(wDims[i]); + } + } + PoolConvUtil.adjustPadsBasedOnAutoPad( + inputs[0].dims, this.strides, this.dilations, this.kernelShape, this.pads, this.autoPad); + Logger.verbose( + 'Conv', + `autpPad:${this.autoPad}, dilations:${this.dilations}, group:${this.group}, kernelShape:${ + this.kernelShape}, pads:${this.pads}, strides:${this.strides}`); + const outputShape = WebGLConv.calcOutputShape(xshape, kshape, this.dilations, this.pads, this.strides); + const im2colProgramInfo = this.createIm2ColProgramInfo(inferenceHandler, inputs, outputShape); + const dotProductProgramInfo = + this.createDotProductProgramInfo(inferenceHandler, im2colProgramInfo.outputLayout, inputs, outputShape); + return [im2colProgramInfo, dotProductProgramInfo]; + } + createRunDatas(inferenceHandler: WebGLInferenceHandler, programInfos: ProgramInfo[], inputs: Tensor[]): RunData[] { + const k = inputs[1]; + const b = inputs.length >= 3 ? inputs[2] : undefined; + let kTD = inferenceHandler.getTextureData(k.dataId); + if (!kTD) { + Logger.verbose('Conv', 'Did not find the adjustedKernel texture in the cache. Creating rew.'); + const newKernelData = + WebGLConv.prepKernelForDotProduct(k.dims.slice(), this.group, 4, k.floatData as Float32Array); + // hack: should use graph transformer to rewrite initializer K + kTD = inferenceHandler.createTextureDataFromLayoutBindTensor( + programInfos[1].inputLayouts[1], k.type, newKernelData, k); + } + const runtDataIm2Col = { + inputTextureDatas: [inferenceHandler.getOrCreateTextureData(inputs[0])], + outputTextureData: inferenceHandler.createTextureDataFromLayout(programInfos[0].outputLayout, inputs[0].type), + uniformData: {} + }; + const inputTDs = [runtDataIm2Col.outputTextureData, kTD]; + if (b) { + inputTDs.push(inferenceHandler.getOrCreateTextureData(b)); + } + const outputTD = inferenceHandler.createTextureDataFromLayout(programInfos[1].outputLayout, inputs[0].type); + const runDataDotProduct = { + inputTextureDatas: inputTDs, + outputTextureData: outputTD, + uniformData: {}, + draw: (glContext: WebGLContext, artifact: Artifact) => { + const gl = glContext.gl; + const sharedDim = artifact.programInfo.params!.sharedDim as number; + const sharedDimReadSize = artifact.programInfo.params!.sharedDimReadSize as number; + const sharedDimOffsetLocation = artifact.uniformLocations.find(l => l.name === 'sharedDimOffset')!.location; + let blend = false; + for (let k = 0; k < sharedDim; k += sharedDimReadSize) { + Logger.verbose('MatMul2D', `k = ${k}, sharedDim: ${sharedDim}, readSize = ${sharedDimReadSize}`); + + if (k === sharedDimReadSize) { + blend = true; + gl.enable(gl.BLEND); + glContext.checkError(); + gl.blendEquation(gl.FUNC_ADD); + glContext.checkError(); + gl.blendFunc(gl.ONE, gl.ONE); + glContext.checkError(); + } + + gl.uniform1i(sharedDimOffsetLocation, k); + glContext.checkError(); + glContext.draw(); + } + + if (blend) { + gl.disable(gl.BLEND); + glContext.checkError(); + } + } + }; + return [runtDataIm2Col, runDataDotProduct]; + } + createIm2ColProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], outputShape: number[]): + ProgramInfo { + const xshape = inputs[0].dims.slice(); + const kshape = inputs[1].dims.slice(); + + const rank = outputShape.length; + const im2colDims = WebGLConv.calcIm2ColDims(xshape, kshape, outputShape, 4); + const outputLayout = inferenceHandler.createTextureLayoutFromShape( + im2colDims, 4, [im2colDims[0], im2colDims[1], im2colDims[2], im2colDims[3] * 4], {breakAxis: 3}); + const shaderSource = ` + const int XC = ${xshape[1]}; + const int XH = ${xshape[2]}; + const int XW = ${xshape[3]}; + const int KH = ${this.kernelShape[0]}; + const int KW = ${this.kernelShape[1]}; + const int dilationH = ${this.dilations[0]}; + const int dilationW = ${this.dilations[1]}; + const int strideH = ${this.strides[0]}; + const int strideW = ${this.strides[1]}; + const int padH = ${this.pads[0]}; + const int padW = ${this.pads[1]}; + const int KHKW = KH*KW; + const int XCKHKW = XC * KHKW; + const int outputChannels = 4; + + vec4 process(int indices[${rank}]) { + int b = indices[0]; // batch size + int oh = indices[1] * strideH - padH; //output height + int ow = indices[2] * strideW - padW; //output width + int p = indices[3] * outputChannels; //patch + vec4 v = vec4(0.0); + for(int i=0; i < outputChannels; ++i) { + if(p < XCKHKW) { + int patchC = p / KHKW; + int patchH = (p - patchC*KHKW) / KW; + int patchW = (p - patchC*KHKW) - patchH * KW; + int xh2 = oh + patchH * dilationH; + int xw2 = ow + patchW * dilationW; + int x[${xshape.length}]; + x[0] = b; + x[1] = patchC; + x[2] = xh2; + x[3] = xw2; + if(xh2 >= 0 && + xh2 < XH && + xw2 >= 0 && + xw2 < XW) { + v[i] = _X(x); + } + } + ++p; + } + return v; + } + `; + return { + inputLayouts: [inferenceHandler.createTextureLayoutFromShape(xshape)], + outputLayout, + samplers: ['X'], + shaderSource, + }; + } + createDotProductProgramInfo( + inferenceHandler: WebGLInferenceHandler, im2colLayout: TextureLayout, inputs: Tensor[], + outputShape: number[]): ProgramInfo { + const xshape = inputs[0].dims.slice(); + const kshape = inputs[1].dims.slice(); + const adjustedKernelShape = [kshape[0], Math.ceil((xshape[1] * kshape[2] * kshape[3]) / 4)]; + const kLayout = inferenceHandler.createTextureLayoutFromShape( + adjustedKernelShape, 4, [adjustedKernelShape[0], adjustedKernelShape[1] * 4], {breakAxis: 1}); + + let bLayout: TextureLayout|undefined; + const rank = outputShape.length; + + const inputLayouts = [im2colLayout, kLayout]; + if (inputs.length === 3) { + bLayout = inferenceHandler.createTextureLayoutFromShape(inputs[2].dims.slice()); + inputLayouts.push(bLayout); + } + const outputLayout = inferenceHandler.createTextureLayoutFromShape(outputShape); + const initValue = (inputs.length < 3) ? '0.0' : '_B(b)'; + const sharedDim = im2colLayout.shape[3]; + const blendEnabled = inferenceHandler.session.backend.glContext.isBlendSupported; + const sharedDimReadSize = blendEnabled && inferenceHandler.session.backend.matmulMaxBatchSize ? + this.calcSharedDimReadSize(inferenceHandler.session.backend.matmulMaxBatchSize, sharedDim) : + sharedDim; + const samplers = ['Im2Col', 'K']; + if (inputs.length === 3) { + samplers.push('B'); + } + const glsl = getGlsl(inferenceHandler.session.backend.glContext.version); + const shaderSource = ` + float process(int indices[${rank}]) { + int b[1]; + b[0] = indices[1]; + int im2col[${im2colLayout.shape.length}]; + im2col[0] = indices[0]; + im2col[1] = indices[2]; + im2col[2] = indices[3]; + int im2colOffset = im2col[0] * ${im2colLayout.strides[0]} + im2col[1] * ${ + im2colLayout.strides[1]} + im2col[2] * ${im2colLayout.strides[2]} + sharedDimOffset; + int kernelOffset = indices[1] * ${kLayout.strides[0]} + sharedDimOffset; + float sum = sharedDimOffset == 0 ? ${initValue} : 0.0; + for (int i = 0; i < ${sharedDimReadSize}; ++i) { + vec2 im2colCoords = offsetToCoords(im2colOffset, ${im2colLayout.width}, ${im2colLayout.height}); + vec2 kernelCoords = offsetToCoords(kernelOffset, ${kLayout.width}, ${kLayout.height}); + sum += dot(${glsl.texture2D}(Im2Col, im2colCoords), ${glsl.texture2D}(K, kernelCoords)); + ++im2colOffset; + ++kernelOffset; + } + return sum; + }`; + return { + inputLayouts: inputs.length === 3 ? [im2colLayout, kLayout, bLayout!] : [im2colLayout, kLayout], + outputLayout, + shaderSource, + samplers, + variables: [{name: 'sharedDimOffset', type: 'int'}], + params: {sharedDim, sharedDimReadSize} + }; + } + static prepKernelForDotProduct(shape: number[], group: number, channels: number, kernel: Float32Array): Float32Array { + if (group === 1 && (channels === 1 || (shape[2] * shape[3]) % channels === 0)) { + return kernel; + } + const numFeatureMaps = shape[0]; + const oldRowSize = shape[1] * shape[2] * shape[3]; + const newRowSize = Math.ceil(oldRowSize * group / channels) * channels; + const newSize = numFeatureMaps * newRowSize; + const buffer = new Float32Array(newSize); + for (let f = 0; f < numFeatureMaps; ++f) { + const oldOffset = f * oldRowSize; + const newOffset = f * newRowSize + f % group * oldRowSize; + buffer.set(kernel.subarray(oldOffset, oldOffset + oldRowSize), newOffset); + } + return buffer; + } + static calcIm2ColDims(inputShape: number[], kernelShape: number[], outputShape: number[], channels = 1): number[] { + return [ + outputShape[0], outputShape[2], outputShape[3], + Math.ceil(inputShape[1] * kernelShape[2] * kernelShape[3] / channels) + ]; + } + static calcOutputShape( + inputShape: number[], kernelShape: number[], dilations: number[], adjustPads: number[], + strides: number[]): number[] { + const batchSize = inputShape[0]; + const inputSpatialShape = inputShape.slice(2); + const spatialRank = inputSpatialShape.length; + const outChannels = kernelShape[0]; + const kernelSpatialShape = kernelShape.slice(2); + const dilatedKernelShape = kernelSpatialShape.map((v, i) => v + (v - 1) * (dilations[i] - 1)); + const inputSpatialShapeWithPad = inputSpatialShape.map((v, i) => v + adjustPads[i] + adjustPads[i + spatialRank]); + const outputSpatialShape = + inputSpatialShapeWithPad.map((v, i) => Math.floor((v - dilatedKernelShape[i] + strides[i]) / strides[i])); + const outputShape = [batchSize, outChannels].concat(...outputSpatialShape); + return outputShape; + } + protected calcSharedDimReadSize(preferredBatchSize: number, sharedDim: number): number { + if (preferredBatchSize <= 0 || sharedDim < preferredBatchSize || sharedDim % preferredBatchSize !== 0) { + return sharedDim; + } + return preferredBatchSize; + } + protected calcBlockSize(outputLayout: TextureLayout): [number, number]|undefined { + const preferredRowCount = 64; + const preferredColCount = 64; + if (outputLayout.height < preferredRowCount) { + return undefined; + } + return [preferredColCount, preferredRowCount]; + } + protected artifacts: Artifact[]; + protected readSize = 8; + protected blockSize = 64; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/dropout.ts b/js/web/lib/onnxjs/backends/webgl/ops/dropout.ts new file mode 100644 index 0000000000..bfc236622d --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/dropout.ts @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Dropout} from '../../../ops/dropout'; +import {Tensor} from '../../../tensor'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLDropout extends Dropout implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + if (this.testMode) { + return [inputs[0]]; + } + throw new Error('Non test mode Dropout is not implemented yet'); + } + createProgramInfo(_handler: WebGLInferenceHandler, _inputs: Tensor[]): ProgramInfo { + throw new Error('Non test mode Dropout is not implemented yet'); + } + createRunData(_handler: WebGLInferenceHandler, _programInfo: ProgramInfo, _inputs: Tensor[]): RunData { + throw new Error('Non test mode Dropout is not implemented yet'); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/elu.ts b/js/web/lib/onnxjs/backends/webgl/ops/elu.ts new file mode 100644 index 0000000000..8707e46d2e --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/elu.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Elu} from '../../../ops/elu'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLElu extends Elu implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape = inputs[0].dims.slice(); + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + void main() { + float v = ${glsl.texture2D}(A, TexCoords).r; + ${glsl.output} = vec4(v >= 0.0 ? v: (exp(v) - 1.0) * ${this.alpha.toExponential()}); /* float number format */ + } + `; + return { + inputLayouts: [handler.getOrCreateTextureLayout(inputs[0])], + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + hasMain: true, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/flatten.ts b/js/web/lib/onnxjs/backends/webgl/ops/flatten.ts new file mode 100644 index 0000000000..4d4c318fa1 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/flatten.ts @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Flatten} from '../../../ops/flatten'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; + +import {reshape} from './reshape'; + +export class WebGLFlatten extends Flatten { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + const outputDims = ShapeUtil.flattenShape(inputs[0].dims, this.axis); + + return [reshape(inferenceHandler, inputs[0], outputDims)]; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/gather.ts b/js/web/lib/onnxjs/backends/webgl/ops/gather.ts new file mode 100644 index 0000000000..76da551f5d --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/gather.ts @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Gather} from '../../../ops/gather'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLGather extends Gather implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputShape = inputs[0].dims.slice(); + const indexDataShape = inputs[1].dims.slice(); + const outputShape = new Array(inputShape.length + indexDataShape.length - 1); + + const axis = ShapeUtil.normalizeAxis(this.axis, inputShape.length); + const indexCopyOps: string[] = []; + for (let i = 0; i < outputShape.length; i++) { + // outputShape is divided into three parts: A, B, C + // |0 axis| axis + indexDataShape.length | end| + // | A | B | C | + // + // inputIdx: [A, inputs[1][B], C] + if (i < axis) { // A + outputShape[i] = inputShape[i]; + indexCopyOps.push(`inputIdx[${i}] = outputIdx[${i}];`); + } else { + if (i < axis + indexDataShape.length) { // B + outputShape[i] = indexDataShape[i - axis]; + indexCopyOps.push(`indexDataIdx[${i - axis}] = outputIdx[${i}];`); + } else { // C + outputShape[i] = inputShape[i - indexDataShape.length + 1]; // skip 1 for axis + indexCopyOps.push(`inputIdx[${i - indexDataShape.length + 1}] = outputIdx[${i}];`); + } + } + } + + const orank = outputShape.length || 1; + const irank = inputShape.length; + const iDrank = indexDataShape.length || 1; + const shaderSource = ` + float process(int outputIdx[${orank}]) { + int inputIdx[${irank}]; + int indexDataIdx[${iDrank}]; + indexDataIdx[0] = 0; + ${indexCopyOps.join('\n ')} + int idx = int(_B(indexDataIdx)); + inputIdx[${axis}] = idx < 0 ? idx + ${inputShape[axis]} : idx; + return _A(inputIdx); + }`; + return { + inputLayouts: inputs.map(t => handler.getOrCreateTextureLayout(t)), + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A', 'B'], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/gemm.ts b/js/web/lib/onnxjs/backends/webgl/ops/gemm.ts new file mode 100644 index 0000000000..794d8c14de --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/gemm.ts @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Gemm} from '../../../ops/gemm'; +import {Tensor} from '../../../tensor'; +import {GemmUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLGemm extends Gemm implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const aShape = inputs[0].dims.slice(); + const bShape = inputs[1].dims.slice(); + const [M, N] = GemmUtil.getShapeOfGemmResult( + aShape, this.transA, bShape, this.transB, inputs.length === 3 ? inputs[2].dims : undefined); + const oShape = [M, N]; + if (!oShape) { + throw new Error('Can\'t use gemm on the given tensors'); + } + let sharedDim = aShape[aShape.length - 1]; + let line = ''; + if (this.transA) { + sharedDim = aShape[0]; + } + if (this.transA && this.transB) { + line = 'value += _A_T(a) * _B_T(b);'; + } else if (this.transA && !this.transB) { + line = 'value += _A_T(a) * _B(b);'; + } else if (!this.transA && this.transB) { + line = 'value += _A(a) * _B_T(b);'; + } else if (!this.transA && !this.transB) { + line = 'value += _A(a) * _B(b);'; + } + const rank = oShape.length; + const declareC = inputs.length === 3 ? `int c[${inputs[2].dims.length}];` : ''; + const broadcastC = inputs.length === 3 ? 'bcastIndices_C(indices, c);' : ''; + const calculateC = inputs.length === 3 ? 'value += beta * _C(c);' : ''; + const shaderSource = ` + float process(int indices[${rank}]) { + int a[${rank}]; + int b[${rank}]; + ${declareC} + + copyVec(indices, a); + copyVec(indices, b); + ${broadcastC} + + float value = 0.0; + for (int k=0; k<${sharedDim}; ++k) { + a[${rank - 1}] = k; + b[${rank - 2}] = k; + ${line} + } + + value = value * alpha; + ${calculateC} + return value; + }`; + const inputLayouts = inputs.map(t => inferenceHandler.getOrCreateTextureLayout(t)); + return { + inputLayouts, + outputLayout: inferenceHandler.createTextureLayoutFromShape(oShape), + samplers: inputs.length === 3 ? ['A', 'B', 'C'] : ['A', 'B'], + variables: [{name: 'alpha', type: 'float'}, {name: 'beta', type: 'float'}], + shaderSource, + }; + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => inferenceHandler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {'alpha': this.alpha, 'beta': this.beta} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/image-scaler.ts b/js/web/lib/onnxjs/backends/webgl/ops/image-scaler.ts new file mode 100644 index 0000000000..154c203fff --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/image-scaler.ts @@ -0,0 +1,60 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {ImageScaler} from '../../../ops/image-scaler'; +import {Tensor} from '../../../tensor'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLImageScaler extends ImageScaler implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape = inputs[0].dims.slice(); + const rank = outputShape.length; + const getBiasMethod = this.createGetBiasMethod(this.bias.length); + const shaderSource = ` + ${getBiasMethod} + float process(int indices[${rank}]) { + return _X(indices) * scale + getBias(bias, indices[1]); + }`; + return { + inputLayouts: [handler.getOrCreateTextureLayout(inputs[0])], + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['X'], + variables: [{name: 'bias', type: 'float', arrayLength: this.bias.length}, {name: 'scale', type: 'float'}], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {'bias': this.bias, 'scale': this.scale} + }; + } + private createGetBiasMethod(numChannels: number): string { + const codeLines: string[] = [`float getBias(float bias[${numChannels}], int channel) {`]; + for (let i = 0; i < numChannels; ++i) { + if (i === 0) { + codeLines.push( + '\t' + + `if (channel == ${i}) { return bias[${i}]; }`); + } else if (i === numChannels - 1) { + codeLines.push( + '\t' + + `else { return bias[${i}]; }`); + } else { + codeLines.push( + '\t' + + `else if (channel == ${i}) { return bias[${i}]; }`); + } + } + codeLines.push( + '\t' + + '}'); + return codeLines.join('\n'); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/instance-normalization.ts b/js/web/lib/onnxjs/backends/webgl/ops/instance-normalization.ts new file mode 100644 index 0000000000..fbe00c6fed --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/instance-normalization.ts @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {InstanceNormalization} from '../../../ops/instance-normalization'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {Artifact, ProgramInfo, RunData, TextureLayout} from '../types'; + +export class WebGLInstanceNormalization extends InstanceNormalization { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + if (!this.artifacts) { + this.artifacts = []; + const programInfos = this.createProgramInfos(inferenceHandler, inputs); + programInfos.forEach((pi) => { + const artifact = inferenceHandler.session.programManager.build(pi); + this.artifacts.push(artifact); + }); + } + + const runDatas = this.createRunDatas(inferenceHandler, this.artifacts.map(a => a.programInfo), inputs); + runDatas.forEach((v, i) => inferenceHandler.session.programManager.run(this.artifacts[i], v)); + return [runDatas[1].outputTextureData.tensor]; + } + + checkInputTypes(inputs: Tensor[]): boolean { + if (!super.checkInputTypes(inputs)) { + return false; + } + + if (inputs[0].dims.length !== 4) { + // currently webgl implementation only support 4-D input. + return false; + } + + return true; + } + + createMeanAndVarianceProgramInfo(inferenceHandler: WebGLInferenceHandler, xLayout: TextureLayout): ProgramInfo { + const xDims = xLayout.shape; + const channel = xDims[1]; + const channelSize = xDims[2] * xDims[3]; + const outputShape = [xDims[0], channel]; + const outputUnpackedShape = [xDims[0], channel * 4]; + + const shaderSource = ` + vec4 process(int[2] indices) { + vec4 v = vec4(0.0); + int a[4]; + a[0] = indices[0]; + a[1] = indices[1]; + float temp = 0.0; + for(int a2=0; a2<${xDims[2]}; a2++) { + a[2] = a2; + for(int a3=0; a3<${xDims[3]}; a3++) { + a[3] = a3; + float x = _X(a); + temp += x; + } + } + float mean = temp / float(${channelSize}); + temp = 0.0; + for(int a2=0; a2<${xDims[2]}; a2++) { + a[2] = a2; + for(int a3=0; a3<${xDims[3]}; a3++) { + a[3] = a3; + float x = _X(a); + temp += (x - mean) * (x - mean); + } + } + v.r = mean; + v.g = temp / float(${channelSize}); + + return v; + }`; + return { + inputLayouts: [xLayout], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape, 4, outputUnpackedShape), + samplers: ['X'], + shaderSource, + }; + } + + createComputOutputProgramInfo( + inferenceHandler: WebGLInferenceHandler, xLayout: TextureLayout, scaleLayout: TextureLayout, + bLayout: TextureLayout, meanAndVarianceLayout: TextureLayout): ProgramInfo { + const glsl = getGlsl(inferenceHandler.session.backend.glContext.version); + const shaderSource = ` + vec4 get_MeanAndVariance(int[2] mv) { + int offset = indicesToOffset_MeanAndVariance(mv); + vec2 coords = offsetToCoords(offset, ${meanAndVarianceLayout.width}, ${meanAndVarianceLayout.height}); + return ${glsl.texture2D}(MeanAndVariance, coords); + } + + float process(int[4] indices) { + + int mv[2]; + mv[0] = indices[0]; + mv[1] = indices[1]; + vec4 mean_and_variance = get_MeanAndVariance(mv); + float mean = mean_and_variance.r; + float variance = mean_and_variance.g; + + int sb[1]; + sb[0] = indices[1]; + float scale = _Scale(sb); + float b = _B(sb); + + return scale * (_X(indices) - mean) / sqrt(variance + epsilon) + b; + }`; + return { + inputLayouts: [xLayout, meanAndVarianceLayout, scaleLayout, bLayout], + outputLayout: inferenceHandler.createTextureLayoutFromShape(xLayout.shape), + samplers: ['X', 'MeanAndVariance', 'Scale', 'B'], + variables: [{name: 'epsilon', type: 'float'}], + shaderSource, + }; + } + createProgramInfos(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo[] { + const xLayout = inferenceHandler.getOrCreateTextureLayout(inputs[0]); + const scaleLayout = inferenceHandler.getOrCreateTextureLayout(inputs[1]); + const bLayout = inferenceHandler.getOrCreateTextureLayout(inputs[2]); + const meanAndVarianceProgramInfo = this.createMeanAndVarianceProgramInfo(inferenceHandler, xLayout); + const computeOutputProgramInfo = this.createComputOutputProgramInfo( + inferenceHandler, xLayout, scaleLayout, bLayout, meanAndVarianceProgramInfo.outputLayout); + + const programInfos: ProgramInfo[] = [meanAndVarianceProgramInfo, computeOutputProgramInfo]; + return programInfos; + } + createRunDatas(inferenceHandler: WebGLInferenceHandler, programInfos: ProgramInfo[], inputs: Tensor[]): RunData[] { + const dataType = inputs[0].type; + const inputTD = inferenceHandler.getOrCreateTextureData(inputs[0], programInfos[0].inputLayouts[0]); + const scaleTD = inferenceHandler.getOrCreateTextureData(inputs[1], programInfos[1].inputLayouts[2]); + const bTD = inferenceHandler.getOrCreateTextureData(inputs[2], programInfos[1].inputLayouts[3]); + const runDatas: RunData[] = []; + runDatas.push({ + inputTextureDatas: [inputTD], + outputTextureData: inferenceHandler.createTextureDataFromLayout(programInfos[0].outputLayout, dataType), + uniformData: {} + }); + runDatas.push({ + inputTextureDatas: [inputTD, runDatas[0].outputTextureData, scaleTD, bTD], + outputTextureData: inferenceHandler.createTextureDataFromLayout(programInfos[1].outputLayout, dataType), + uniformData: {'epsilon': this.epsilon} + }); + return runDatas; + } + protected artifacts: Artifact[]; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/leaky-relu.ts b/js/web/lib/onnxjs/backends/webgl/ops/leaky-relu.ts new file mode 100644 index 0000000000..77abd1f76c --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/leaky-relu.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {LeakyRelu} from '../../../ops/leaky-relu'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLLeakyRelu extends LeakyRelu implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape = inputs[0].dims.slice(); + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + void main() { + float v = ${glsl.texture2D}(A, TexCoords).r; + ${glsl.output} = vec4(v < 0.0 ? v * float(${this.alpha}) : v); + } + `; + return { + hasMain: true, + inputLayouts: [handler.getOrCreateTextureLayout(inputs[0])], + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/matmul.ts b/js/web/lib/onnxjs/backends/webgl/ops/matmul.ts new file mode 100644 index 0000000000..794bb850a3 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/matmul.ts @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {MatMul} from '../../../ops/matmul'; +import {Tensor} from '../../../tensor'; +import {BroadcastUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLMatMul extends MatMul implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const aShape = inputs[0].dims; + const bShape = inputs[1].dims; + const outputShape = BroadcastUtil.calcShape(aShape, bShape, true); + if (!outputShape) { + throw new Error('Can\'t use matmul on the given tensors'); + } + const rank = outputShape.length; + const arank = aShape.length; + const brank = bShape.length; + const sharedDim = aShape[aShape.length - 1]; + const shaderSource = ` + float process(int indices[${rank}]) { + int a[${arank}]; + int b[${brank}]; + bcastMatmulIndices_A(indices, a); + bcastMatmulIndices_B(indices, b); + + float value; + for (int k=0; k<${sharedDim}; ++k) { + a[${arank - 1}] = k; + b[${brank - 2}] = k; + value += _A(a) * _B(b); + } + return value; + }`; + return { + inputLayouts: inputs.map(t => handler.getOrCreateTextureLayout(t)), + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A', 'B'], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/pack.ts b/js/web/lib/onnxjs/backends/webgl/ops/pack.ts new file mode 100644 index 0000000000..61800e9eb1 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/pack.ts @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; +import {getCoordsDataType} from '../utils'; + +import {getChannels} from './packing_utils'; + +export class WebGLPack implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + if (inputs.length !== 1) { + throw new Error('Pack kernel should have input tensor count to 1.'); + } + + const inputShape = inputs[0].dims; + + const outputLayout = + handler.createTextureLayoutFromShape(inputShape, 4, inputShape, {isPacked: true, reverseWH: true}); + const outputShape = outputLayout.shape; + const inputRank = inputShape.length; + const outputRank = outputShape.length; + + const coordsDataType = getCoordsDataType(outputRank); + const channels = getChannels('rc', outputRank); + const setup = getSetup(outputRank, channels, inputShape[inputShape.length - 2], inputShape[inputShape.length - 1]); + + let reversedInputWH; + if (inputRank === 0) { + reversedInputWH = [1, 1]; + } else if (inputRank === 1) { + reversedInputWH = [inputShape[0], 1]; + } else { + reversedInputWH = [inputShape[outputRank - 1], inputShape[outputRank - 2]]; + } + const outOfBoundsCondition = getOutOfBoundsCondition(outputRank, reversedInputWH, channels); + const output = getOutput(inputShape, channels); + + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + void main() { + ${coordsDataType} rc = getOutputCoords(); + + if(${outOfBoundsCondition}) { + ${glsl.output} = vec4(0); + } else { + ${setup} + + ${glsl.output} = vec4(${output}); + } + } + `; + + return { + inputLayouts: [handler.getOrCreateTextureLayout(inputs[0], 1, false, [], true)], + outputLayout, + samplers: ['A'], + shaderSource, + hasMain: true, + expectPackedInputs: false, + expectPackedoutputs: true, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} + +/** + * check output coordinate location and return false if it is outside input's width/height boundary + */ +function getOutOfBoundsCondition(rank: number, shape: readonly number[], dims: string[]): string { + if (rank === 1) { + return `rc > ${shape[0]}`; + } + + let cond = ''; + for (let i = rank - 2; i < rank; i++) { + cond += `${dims[i]} >= ${shape[i - rank + 2]}`; + if (i < rank - 1) { + cond += '||'; + } + } + + return cond; +} + +/** + * code snippet to sample input texture with output coordiantes + */ +function getOutput(shape: readonly number[], dims: string[]): string { + const rank = shape.length; + + if (rank === 0) { + return 'getA(), 0, 0, 0'; + } + + if (rank === 1) { + return `getA(rc), + rc + 1 >= ${shape[0]} ? 0. : getA(rc + 1), + 0, 0`; + } + + const coord00 = 'r, c'; + const coord01 = 'r, cp1'; + const coord10 = 'rp1, c'; + const coord11 = 'rp1, cp1'; + let D = ''; + if (rank > 2) { + for (let i = 0; i < rank - 2; ++i) { + D = D + `${dims[i]},`; + } + } + return `getA(${D}${coord00}), + rEdge ? 0. : getA(${D}${coord10}), + cEdge ? 0. : getA(${D}${coord01}), + rEdge || cEdge ? 0. : getA(${D}${coord11})`; +} + +/** + * code snippet to setup 4 coordinates and edge conditions + */ +function getSetup(rank: number, dims: string[], rows: number, cols: number): string { + if (rank === 0 || rank === 1) { + return ''; + } + // rank >= 2 for width+height pack. + else { + const setup = ` + int r = ${dims[rank - 2]}; + int c = ${dims[rank - 1]}; + int rp1 = ${dims[rank - 2]} + 1; + int cp1 = ${dims[rank - 1]} + 1; + bool rEdge = rp1 >= ${cols}; + bool cEdge = cp1 >= ${rows}; + `; + return setup; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/packing_utils.ts b/js/web/lib/onnxjs/backends/webgl/ops/packing_utils.ts new file mode 100644 index 0000000000..99a226c976 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/packing_utils.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +export function getVecChannels(name: string, rank: number): string[] { + return ['x', 'y', 'z', 'w', 'u', 'v'].slice(0, rank).map(d => `${name}.${d}`); +} + +export function getChannels(name: string, rank: number): string[] { + if (rank === 1) { + return [name]; + } + return getVecChannels(name, rank); +} + +export function unpackFromChannel(rank: number): string { + if (rank <= 1) { + return ` + float getChannel(vec4 frag, int dim) { + int modCoord = imod(dim, 2); + return modCoord == 0 ? frag.r : frag.g; + } + `; + } + return ` + float getChannel(vec4 frag, vec2 innerDims) { + vec2 modCoord = mod(innerDims, 2.); + return modCoord.x == 0. ? + (modCoord.y == 0. ? frag.r : frag.g) : + (modCoord.y == 0. ? frag.b : frag.a); + } + `; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/pad.ts b/js/web/lib/onnxjs/backends/webgl/ops/pad.ts new file mode 100644 index 0000000000..084a09c4d3 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/pad.ts @@ -0,0 +1,137 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Pad} from '../../../ops/pad'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {getGlsl, Glsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, TextureLayout, WebGLOperator} from '../types'; + +export class WebGLPad extends Pad implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape = ShapeUtil.padShape(inputs[0].dims.slice(), this.pads); + const rank = outputShape.length; + const alayout = inferenceHandler.getOrCreateTextureLayout(inputs[0]); + const padFunction = getPadFunction( + getGlsl(inferenceHandler.session.backend.glContext.version), 'A', alayout, this.mode, this.pads, this.value); + const shaderSource = ` + ${padFunction} + float process(int[${rank}] indices) { + return padA(indices); + }`; + return { + inputLayouts: [alayout], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [inferenceHandler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} +export function getPadFunction( + glsl: Glsl, name: string, inputLayout: TextureLayout, mode: string, pads: number[], value: number): string { + switch (mode) { + case 'constant': + return getPadConstant( + glsl, name, inputLayout.shape, inputLayout.strides, inputLayout.width, inputLayout.height, pads, value); + case 'reflect': + return getPadReflect( + glsl, name, inputLayout.shape, inputLayout.strides, inputLayout.width, inputLayout.height, pads); + case 'edge': + return getPadEdge( + glsl, name, inputLayout.shape, inputLayout.strides, inputLayout.width, inputLayout.height, pads); + default: + throw new Error('Invalid mode'); + } +} +function getPadConstant( + glsl: Glsl, name: string, shape: readonly number[], strides: readonly number[], width: number, height: number, + pads: number[], value: number) { + const rank = shape.length; + let block = ''; + for (let i = rank - 1; i >= 0; --i) { + block += ` + k = m[${i}] - ${pads[i]}; + if (k < 0) return constant; + if (k >= ${shape[i]}) return constant; + offset += k * ${strides[i]}; + `; + } + return ` + float pad${name}(int m[${rank}]) { + const float constant = float(${value}); + int offset = 0; + int k = 0; + ${block} + vec2 coords = offsetToCoords(offset, ${width}, ${height}); + float value = getColorAsFloat(${glsl.texture2D}(${name}, coords)); + return value; + } + `; +} +function getPadReflect( + glsl: Glsl, name: string, shape: readonly number[], strides: readonly number[], width: number, height: number, + pads: number[]) { + const rank = shape.length; + + let block = ''; + for (let i = rank - 1; i >= 0; --i) { + block += ` + k = m[${i}] - ${pads[i]}; + if (k < 0) { k = -k; } + { + const int _2n_1 = ${2 * (shape[i] - 1)}; + k = int( mod( float(k), float(_2n_1) ) ) ; + if(k >= ${shape[i]}) { k = _2n_1 - k; } + } + offset += k * ${strides[i]}; + `; + } + return ` + float pad${name}(int m[${rank}]) { + int offset = 0; + int k = 0; + ${block} + vec2 coords = offsetToCoords(offset, ${width}, ${height}); + float value = getColorAsFloat(${glsl.texture2D}(${name}, coords)); + return value; + } + `; +} +function getPadEdge( + glsl: Glsl, name: string, shape: readonly number[], strides: readonly number[], width: number, height: number, + pads: number[]) { + const rank = shape.length; + + let block = ''; + for (let i = rank - 1; i >= 0; --i) { + block += ` + k = m[${i}] - ${pads[i]}; + if (k < 0) k = 0; + if (k >= ${shape[i]}) k = ${shape[i] - 1}; + offset += k * ${strides[i]}; + `; + } + return ` + float pad${name}(int m[${rank}]) { + int offset = 0; + int k = 0; + ${block} + vec2 coords = offsetToCoords(offset, ${width}, ${height}); + float value = getColorAsFloat(${glsl.texture2D}(${name}, coords)); + return value; + } + `; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/pool.ts b/js/web/lib/onnxjs/backends/webgl/ops/pool.ts new file mode 100644 index 0000000000..2d310c1f7c --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/pool.ts @@ -0,0 +1,293 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {AveragePool, GlobalAveragePool, GlobalMaxPool, MaxPool} from '../../../ops/pool'; +import {Tensor} from '../../../tensor'; +import {PoolConvUtil, ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, TextureLayout, WebGLOperator} from '../types'; + +export class WebGLGlobalAveragePool extends GlobalAveragePool implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + return createAveragePoolProgramInfo( + inferenceHandler, inputs, true, this.kernelShape, this.autoPad, this.strides, this.pads, this.countIncludePad); + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [inferenceHandler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} + +export class WebGLAveragePool extends AveragePool implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + return createAveragePoolProgramInfo( + inferenceHandler, inputs, false, this.kernelShape, this.autoPad, this.strides, this.pads, this.countIncludePad); + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [inferenceHandler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} +function createAveragePoolProgramInfo( + inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], isGlobalOperator: boolean, kernelShape: number[] = [], + autoPad = '', strides: number[] = [], pads: number[] = [], countIncludePad: boolean): ProgramInfo { + const inputShape = inputs[0].dims.slice(); + PoolConvUtil.adjustPoolAttributes(isGlobalOperator, inputShape, kernelShape, strides, pads); + const outputShape = + PoolConvUtil.computePoolOutputShape(isGlobalOperator, inputShape, strides, kernelShape, pads, autoPad); + const kernelSize = ShapeUtil.size(kernelShape); + const op1 = 'value += _X(x);'; + let op2 = ''; + if (countIncludePad) { + op2 += `value /= float(${kernelSize});`; + } else { + op2 += `value /= float(${kernelSize} - pad);`; + } + const inputLayout = inferenceHandler.getOrCreateTextureLayout(inputs[0]); + const poolingCode = generatePoolingCode(inputLayout, kernelShape, pads, strides, op1, op2, '0.0'); + const shaderSource = ` + ${poolingCode} + `; + return { + inputLayouts: [inputLayout], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['X'], + shaderSource, + }; +} + +export class WebGLGlobalMaxPool extends GlobalMaxPool implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + return createMaxPoolProgramInfo( + inferenceHandler, inputs, true, this.kernelShape, this.autoPad, this.strides, this.pads); + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [inferenceHandler.getOrCreateTextureData(inputs[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} + +export class WebGLMaxPool extends MaxPool implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + return createMaxPoolProgramInfo( + inferenceHandler, inputs, false, this.kernelShape, this.autoPad, this.strides, this.pads); + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [inferenceHandler.getOrCreateTextureData(inputs[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} +function createMaxPoolProgramInfo( + inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], isGlobalOperator: boolean, kernelShape: number[] = [], + autoPad = '', strides: number[] = [], pads: number[] = []): ProgramInfo { + const inputShape = inputs[0].dims.slice(); + PoolConvUtil.adjustPoolAttributes(isGlobalOperator, inputShape, kernelShape, strides, pads); + const outputShape = + PoolConvUtil.computePoolOutputShape(isGlobalOperator, inputShape, strides, kernelShape, pads, autoPad); + const op1 = ` + value = max(_X(x), value); + `; + const op2 = ''; + const inputLayout = inferenceHandler.createTextureLayoutFromShape(inputShape); + const poolingCode = generatePoolingCode(inputLayout, kernelShape, pads, strides, op1, op2, '-1e5'); + const shaderSource = ` + ${poolingCode} + `; + return { + inputLayouts: [inputLayout], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['X'], + shaderSource, + }; +} + +export function generatePoolingCode( + x: TextureLayout, kernelShape: number[], pads: number[], strides: number[], op1: string, op2: string, + startVal: string): string { + const inputDims = x.shape; + const rank = x.shape.length; + if (kernelShape.length <= 2) { + const kw = kernelShape[kernelShape.length - 1]; + const sw = strides[strides.length - 1]; + const pwStart = pads[pads.length / 2 - 1]; + const pwEnd = pads[pads.length - 1]; + const dimW = inputDims[rank - 1]; + let codeW = ''; + let codeH = ''; + let codeHEnd = ''; + if (pwStart + pwEnd !== 0) { + codeW = ` + for (int i = 0; i < ${kw}; i++) { + x[${rank} - 1] = indices[${rank} - 1] * ${sw} - ${pwStart} + i; + if (x[${rank} - 1] < 0 || x[${rank} - 1] >= ${dimW}) { + pad++; + continue; + } + ${op1} + }`; + } else { + codeW = ` + for (int i = 0; i < ${kw}; i++) { + x[${rank} - 1] = indices[${rank} - 1] * ${sw} - ${pwStart} + i; + ${op1} + }`; + } + + if (kernelShape.length === 2) { + const kh = kernelShape[kernelShape.length - 2]; + const sh = strides[strides.length - 2]; + const phStart = pads[pads.length / 2 - 2]; + const phEnd = pads[pads.length - 2]; + const dimH = inputDims[rank - 2]; + if (phStart + phEnd !== 0) { + codeH = ` + for (int j = 0; j < ${kh}; j++) { + x[${rank} - 2] = indices[${rank} - 2] * ${sh} - ${phStart} + j; + if (x[${rank} - 2] < 0 || x[${rank} - 2] >= ${dimH}) { + pad+= ${kw}; + continue; + } + `; + } else { + codeH = ` + for (int j = 0; j < ${kh}; j++) { + x[${rank} - 2] = indices[${rank} - 2] * ${sh} - ${phStart} + j; + `; + } + codeHEnd = ` + } + `; + } + + const poolingCode = ` + float process(int indices[${rank}]) { + int x[${rank}]; + copyVec(indices, x); + + float value = ${startVal}; + int pad = 0; + ${codeH} + ${codeW} + ${codeHEnd} + ${op2} + return value; + } + `; + return poolingCode; + } else { + const kernelSize = ShapeUtil.size(kernelShape); + const kernelStrides = ShapeUtil.computeStrides(kernelShape); + const stridesRank = kernelStrides.length; + const padsRank = pads.length; + const offsetToIndicesFunction = offsetToIndices(stridesRank); + const copyInputDims = copyArray(inputDims, 'inputDims'); + const copyPads = copyArray(pads, 'pads'); + const copyKernelStrides = copyArray(kernelStrides, 'kernelStrides'); + const copyStrides = copyArray(strides, 'strides'); + const hasPads = pads.reduce((sum, cur) => sum + cur); + let padCode = ''; + if (hasPads) { + padCode = ` + if (x[j] >= inputDims[j] || x[j] < 0) { + pad++; + isPad = true; + break; + } + } + if (!isPad) { + ${op1} + }`; + } else { + padCode = ` + } + ${op1}`; + } + const poolingCode = ` + ${offsetToIndicesFunction} + float process(int indices[${rank}]) { + int x[${rank}]; + copyVec(indices, x); + int offset[${stridesRank}]; + int pads[${padsRank}]; + int inputDims[${rank}]; + int kernelStrides[${stridesRank}]; + int strides[${stridesRank}]; + ${copyPads} + ${copyInputDims} + ${copyStrides} + ${copyKernelStrides} + + float value = ${startVal}; + int pad = 0; + bool isPad = false; + for (int i = 0; i < ${kernelSize}; i++) { + offsetToIndices(i, kernelStrides, offset); + isPad = false; + for (int j = ${rank} - ${stridesRank}; j < ${rank}; j++) { + x[j] = indices[j] * strides[j - ${rank} + ${stridesRank}] + + offset[j - ${rank} + ${stridesRank}] - pads[j - 2]; + ${padCode} + } + ${op2} + + return value; + }`; + return poolingCode; + } +} + +export function copyArray(array: readonly number[], arrayName: string): string { + let block = ''; + for (let i = 0; i < array.length; i++) { + block += ` + ${arrayName}[${i}] = ${array[i]}; + `; + } + return block; +} + +export function offsetToIndices(rank: number): string { + return ` + void offsetToIndices(int offset, int[${rank}] strides, out int[${rank}] indices) { + if (${rank} == 0) { + return; + } + for (int i = 0; i < ${rank} - 1; ++i) { + indices[i] = offset / strides[i]; + offset -= indices[i] * strides[i]; + } + indices[${rank} - 1] = offset; + }`; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/reduce.ts b/js/web/lib/onnxjs/backends/webgl/ops/reduce.ts new file mode 100644 index 0000000000..964e539349 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/reduce.ts @@ -0,0 +1,138 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {ReduceBase} from '../../../ops/reduce-op'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +abstract class WebGLGenericReduce extends ReduceBase implements WebGLOperator { + abstract getOps(inputs: Tensor[], axes: number[]): string[]; + + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape: number[] = []; + const iRank = inputs[0].dims.length || 1; + + const idxCopy = []; // copy output indexes to input indexes + + const axes = ShapeUtil.normalizeAxes(this.axes, inputs[0].dims.length); + const ops = this.getOps(inputs, axes); // [init ops, reduce ops, final ops] + let reduceOps = ops[1]; + + for (let k = 0; k < inputs[0].dims.length; k++) { + // if this axis is reduced + if (axes.indexOf(k) >= 0 || axes.length === 0) { + if (this.keepDims) { + outputShape.push(1); + } // else { remove the axis from outputShape; } + + // loop over the d-th axis + reduceOps = ` + for(int j${k} = 0; j${k} < ${inputs[0].dims[k]}; j${k}++) { + inputIdx[${k}] = j${k}; + ${reduceOps} + } + `; + } else { + idxCopy.push(`inputIdx[${k}] = outputIdx[${outputShape.length}];`); + + outputShape.push(inputs[0].dims[k]); + } + } + + const oRank = outputShape.length || 1; + + const shaderSource = ` + float process(int outputIdx[${oRank}]) { + float value; // final result + int inputIdx[${iRank}]; // addressing input data + ${idxCopy.join('\n')} + ${ops[0]} // init ops for reduce max/min + ${reduceOps} + ${ops[2]} // final computation for reduce mean + return value; + }`; + + return { + inputLayouts: inputs.map(t => handler.getOrCreateTextureLayout(t)), + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} + +export class WebGLReduceSum extends WebGLGenericReduce { + getOps(_inputs: Tensor[]): string[] { + return ['value = 0.0;', 'value += _A(inputIdx);', '']; + } +} + +export class WebGLReduceMean extends WebGLGenericReduce { + getOps(inputs: Tensor[], axes: number[]): string[] { + let size = 1.0; + for (let k = 0; k < inputs[0].dims.length; k++) { + if (axes.indexOf(k) >= 0 || axes.length === 0) { + size *= inputs[0].dims[k]; + } + } + + return ['value = 0.0;', 'value += _A(inputIdx);', `value /= ${size}.;`]; // ensure real number with `.` + } +} + +export class WebGLReduceMax extends WebGLGenericReduce { + getOps(inputs: Tensor[], axes: number[]): string[] { + const idxZero = []; + for (let k = 0; k < inputs[0].dims.length; k++) { + if (axes.indexOf(k) >= 0 || axes.length === 0) { + idxZero.push(`inputIdx[${k}] = 0;`); // first element + } + } + + return [`${idxZero.join('\n')}\nvalue = _A(inputIdx);`, 'value = max(value, _A(inputIdx));', '']; + } +} + +export class WebGLReduceMin extends WebGLGenericReduce { + getOps(inputs: Tensor[], axes: number[]): string[] { + const idxZero = []; + for (let k = 0; k < inputs[0].dims.length; k++) { + if (axes.indexOf(k) >= 0 || axes.length === 0) { + idxZero.push(`inputIdx[${k}] = 0;`); // first element + } + } + + return [`${idxZero.join('\n')}\nvalue = _A(inputIdx);`, 'value = min(value, _A(inputIdx));', '']; + } +} + +export class WebGLReduceProd extends WebGLGenericReduce { + getOps(_inputs: Tensor[]): string[] { + return ['value = 1.0;', 'value *= _A(inputIdx);', '']; + } +} + +export class WebGLReduceLogSum extends WebGLGenericReduce { + getOps(_inputs: Tensor[]): string[] { + return ['value = 0.0;', 'value += _A(inputIdx);', 'value = log(value);']; + } +} + +export class WebGLReduceSumSquare extends WebGLGenericReduce { + getOps(_inputs: Tensor[]): string[] { + return ['float t; value = 0.0;', 't = _A(inputIdx); value += t * t;', '']; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/reshape.ts b/js/web/lib/onnxjs/backends/webgl/ops/reshape.ts new file mode 100644 index 0000000000..f33ff91aee --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/reshape.ts @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Reshape} from '../../../ops/reshape'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {TextureLayout} from '../types'; +import {getPackedShape} from '../utils'; + +export class WebGLReshape extends Reshape { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + const reshapedDims = ShapeUtil.calculateReshapedDims(inputs[0].dims, inputs[1].integerData); + const reshapedTensor = reshape(inferenceHandler, inputs[0], reshapedDims); + return [reshapedTensor]; + } +} + +export function reshape( + inferenceHandler: WebGLInferenceHandler, input: Tensor, reshapedDims: readonly number[]): Tensor { + const inputTD = inferenceHandler.getOrCreateTextureData(input); + let packedShape = reshapedDims; + if (inputTD.channels === 4) { + packedShape = getPackedShape(reshapedDims); + } + const newTextureLayout: TextureLayout = { + channels: inputTD.channels, + height: inputTD.height, + width: inputTD.width, + // handle reshaping into scalar Tensors + shape: packedShape.length !== 0 ? packedShape : [1], + strides: ShapeUtil.computeStrides(packedShape), + unpackedShape: reshapedDims, + }; + + const newTextureData = inferenceHandler.createSharedTextureData(newTextureLayout, input.type, inputTD.texture, {}); + return newTextureData.tensor; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/slice.ts b/js/web/lib/onnxjs/backends/webgl/ops/slice.ts new file mode 100644 index 0000000000..66cfcc8faf --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/slice.ts @@ -0,0 +1,100 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Slice, SliceV10} from '../../../ops/slice'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLSlice extends Slice implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + return createProgramInfo(handler, inputs[0], this.starts, this.ends, this.axes); + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + return createRunData(handler, programInfo, inputs); + } +} + +export class WebGLSliceV10 extends SliceV10 implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + if (!handler.session.isInitializer(inputs[1].dataId) || !handler.session.isInitializer(inputs[2].dataId) || + (inputs.length >= 4 && !handler.session.isInitializer(inputs[3].dataId)) || + (inputs.length >= 5 && !handler.session.isInitializer(inputs[4].dataId))) { + throw new Error('dynamic slice attributes are not allowed'); + } + if (inputs.length >= 5 && inputs[4].integerData.some((i: number) => i !== 1)) { + throw new Error('currently non-1 steps is not supported for Slice'); + } + const starts = Array.from(inputs[1].integerData); + const ends = Array.from(inputs[2].integerData); + const axes = inputs.length >= 4 ? Array.from(inputs[3].integerData) : []; + + return createProgramInfo(handler, inputs[0], starts, ends, axes); + } + + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + return createRunData(handler, programInfo, inputs); + } +} + +function createProgramInfo( + handler: WebGLInferenceHandler, x: Tensor, starts: readonly number[], ends: readonly number[], + axes: readonly number[]): ProgramInfo { + if (axes.length === 0) { + axes = x.dims.slice(0).map((val, ind) => ind); + } + axes = ShapeUtil.normalizeAxes(axes, x.dims.length); + starts = starts.map((start, ind) => { + if (start > x.dims[axes[ind]] - 1) { + return x.dims[axes[ind]]; + } + return ShapeUtil.normalizeAxis(start, x.dims[axes[ind]]); + }); + ends = ends.map((end, ind) => { + if (end > x.dims[axes[ind]] - 1) { + return x.dims[axes[ind]]; + } + return ShapeUtil.normalizeAxis(end, x.dims[axes[ind]]); + }); + + const outputShape = x.dims.slice(); + + const sliceOps: string[] = []; + for (let i = 0; i < axes.length; i++) { + outputShape[axes[i]] = ends[i] - starts[i]; + if (starts[i] > 0) { + sliceOps.push(`outputIdx[${axes[i]}] += ${starts[i]};`); + } // else { sliceOps.push(`outputIdx[${axes[i]}] += 0;`); } + } + + const rank = outputShape.length; + const shaderSource = ` + float process(int outputIdx[${rank}]) { + ${sliceOps.join('\n ')} + return _A(outputIdx); + }`; + return { + inputLayouts: [handler.getOrCreateTextureLayout(x)], + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; +} + +function createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/softmax.ts b/js/web/lib/onnxjs/backends/webgl/ops/softmax.ts new file mode 100644 index 0000000000..763ec774d8 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/softmax.ts @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Softmax} from '../../../ops/softmax'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {Artifact, ProgramInfo, RunData, TextureLayout} from '../types'; + +export class WebGLSoftmax extends Softmax { + constructor() { + super(); + } + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + if (!this.artifacts) { + this.artifacts = []; + const programInfos = this.createProgramInfos(inferenceHandler, inputs); + programInfos.forEach((pi) => { + const artifact = inferenceHandler.session.programManager.build(pi); + this.artifacts.push(artifact); + }); + } + + const runDatas = this.createRunDatas(inferenceHandler, this.artifacts.map(a => a.programInfo), inputs); + runDatas.forEach((v, i) => inferenceHandler.session.programManager.run(this.artifacts[i], v)); + // return only the last output + return [runDatas[runDatas.length - 1].outputTextureData.tensor]; + } + createSoftMaxProgramInfo( + // eslint-disable-next-line @typescript-eslint/naming-convention + inferenceHandler: WebGLInferenceHandler, input: Tensor, N: number, D: number, + maxElementPerLogicalRow: TextureLayout, normalizationPerLogicalRow: TextureLayout): ProgramInfo { + const inputShape = input.dims.slice(); + const inputLayout = inferenceHandler.createTextureLayoutFromShape(inputShape); + const outputShape = inputShape; + const rank = outputShape.length; + const textureWidth = inputLayout.width; + const textureHeight = inputLayout.height; + + if (N < 1 || D < 1) { + throw new Error('Logical row count N and feature count D must be greater than or equal to 1'); + } + + if (maxElementPerLogicalRow.shape.length !== 1 || normalizationPerLogicalRow.shape.length !== 1) { + throw new Error('Dimensionality of the intermediate results should be 1'); + } + + if (maxElementPerLogicalRow.shape[0] !== N || normalizationPerLogicalRow.shape[0] !== N) { + throw new Error('Shape of the intermediate results should be equal to logical row count'); + } + + const shaderSource = ` + float process(int[${rank}] indices) { + + // get offset of current logical tensor index from the 2-D texture coordinates (TexCoords) + int offset = coordsToOffset(TexCoords, ${textureWidth}, ${textureHeight}); + + //determine the logical row for this index + int logical_row_index[1]; + logical_row_index[0] = offset / ${D}; + + float norm_factor = _Norm(logical_row_index); + + // avoid possible division by 0 + // if norm_facor is 0, all elements are zero + // if so, return 0 + if(norm_factor == 0.0) + return 0.0; + + return exp(_A(indices) - _Max(logical_row_index)) / norm_factor; + }`; + return { + inputLayouts: [inputLayout, maxElementPerLogicalRow, normalizationPerLogicalRow], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['A', 'Max', 'Norm'], + shaderSource, + }; + } + + /** + * Create a texture that contains the normalization factor for each of the 'N' rows + */ + createComputScaleProgramInfo( + // eslint-disable-next-line @typescript-eslint/naming-convention + inferenceHandler: WebGLInferenceHandler, x: Tensor, N: number, D: number, maxElementPerLogicalRow: TextureLayout, + outputShape: number[]): ProgramInfo { + const xlayout = inferenceHandler.createTextureLayoutFromShape(x.dims.slice()); + const rank = outputShape.length; + const textureWidth = xlayout.width; + const textureHeight = xlayout.height; + + if (N < 1 || D < 1) { + throw new Error('Logical row count N and feature count D must be greater than or equal to 1'); + } + + if (outputShape.length !== 1) { + throw new Error('Dimensionality of the output should be 1'); + } + + if (outputShape[0] !== N) { + throw new Error('Shape of the output should be equal to logical row count'); + } + + if (maxElementPerLogicalRow.shape.length !== 1) { + throw new Error('Dimensionality of the intermediate results should be 1'); + } + + if (maxElementPerLogicalRow.shape[0] !== N) { + throw new Error('Shape of the intermediate results should be equal to logical row count'); + } + + const glsl = getGlsl(inferenceHandler.session.backend.glContext.version); + const shaderSource = ` + float process(int[${rank}] indices) { + + int logical_row_start_offset = indices[0] * ${D}; + + float norm_factor = 0.0; + float max = _Max(indices); + for(int i=0; i<${D}; ++i) + { + norm_factor += exp(getColorAsFloat(${glsl.texture2D}(A, offsetToCoords(logical_row_start_offset + i, ${ + textureWidth}, ${textureHeight}))) - max); + } + + return norm_factor; + }`; + return { + inputLayouts: [xlayout, maxElementPerLogicalRow], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['A', 'Max'], + shaderSource, + }; + } + /** + * Create a texture that contains the maximum value of each of the 'N' rows + */ + createComputeMaxProgramInfo( + // eslint-disable-next-line @typescript-eslint/naming-convention + inferenceHandler: WebGLInferenceHandler, x: Tensor, N: number, D: number, outputShape: number[]): ProgramInfo { + const xlayout = inferenceHandler.createTextureLayoutFromShape(x.dims.slice()); + const rank = outputShape.length; + const textureWidth = xlayout.width; + const textureHeight = xlayout.height; + + if (N < 1 || D < 1) { + throw new Error('Logical row count N and feature count D must be greater than or equal to 1'); + } + + if (outputShape.length !== 1) { + throw new Error('Dimensionality of the output should be 1'); + } + + if (outputShape[0] !== N) { + throw new Error('Shape of the output should be equal to logical row count'); + } + + const glsl = getGlsl(inferenceHandler.session.backend.glContext.version); + const shaderSource = ` + float process(int[${rank}] indices) { + + int logical_row_start_offset = indices[0] * ${D}; + + float max = getColorAsFloat(${glsl.texture2D}(A, offsetToCoords(logical_row_start_offset, ${textureWidth}, ${ + textureHeight} ))); + for(int i=1; i<${D}; ++i) + { + float current = getColorAsFloat(${glsl.texture2D}(A, offsetToCoords(logical_row_start_offset + i, ${ + textureWidth}, ${textureHeight}))); + if(current > max) + max = current; + } + + return max; + }`; + return { + inputLayouts: [xlayout], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; + } + createProgramInfos(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo[] { + const inputShape = inputs[0].dims.slice(); + const axis = ShapeUtil.normalizeAxis(this.axis, inputShape.length); + const N = ShapeUtil.sizeToDimension(inputShape, axis); + const D = ShapeUtil.sizeFromDimension(inputShape, axis); + const computeMaxProgramInfo = this.createComputeMaxProgramInfo(inferenceHandler, inputs[0], N, D, [N]); + const computeScaleProgramInfo = + this.createComputScaleProgramInfo(inferenceHandler, inputs[0], N, D, computeMaxProgramInfo.outputLayout, [N]); + const softMaxProgramInfo = this.createSoftMaxProgramInfo( + inferenceHandler, inputs[0], N, D, computeMaxProgramInfo.outputLayout, computeScaleProgramInfo.outputLayout); + + const programInfos: ProgramInfo[] = [computeMaxProgramInfo, computeScaleProgramInfo, softMaxProgramInfo]; + return programInfos; + } + createRunDatas(inferenceHandler: WebGLInferenceHandler, programInfos: ProgramInfo[], inputs: Tensor[]): RunData[] { + const dataType = inputs[0].type; + const inputTD = inferenceHandler.getOrCreateTextureData(inputs[0], programInfos[0].inputLayouts[0]); + const runDatas: RunData[] = []; + runDatas.push({ + inputTextureDatas: [inputTD], + outputTextureData: inferenceHandler.createTextureDataFromLayout(programInfos[0].outputLayout, dataType), + uniformData: {} + }); + for (let i = 1; i < programInfos.length; ++i) { + runDatas.push({ + inputTextureDatas: [...runDatas[i - 1].inputTextureDatas, runDatas[i - 1].outputTextureData], + outputTextureData: inferenceHandler.createTextureDataFromLayout(programInfos[i].outputLayout, dataType), + uniformData: {} + }); + } + return runDatas; + } + protected artifacts: Artifact[]; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/split.ts b/js/web/lib/onnxjs/backends/webgl/ops/split.ts new file mode 100644 index 0000000000..41a1eab020 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/split.ts @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Split} from '../../../ops/split'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil, SplitUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {Artifact, ProgramInfo, RunData} from '../types'; + +export class WebGLSplit extends Split { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + if (!this.artifacts) { + this.artifacts = []; + const axis = ShapeUtil.normalizeAxis(this.axis, inputs[0].dims.length); + const count = this.getProgramCount(inferenceHandler, inputs, axis); + for (let i = 0; i < count; ++i) { + const programInfo = this.createProgramInfo(inferenceHandler, inputs[0], axis, i); + const artifact = inferenceHandler.session.programManager.build(programInfo); + this.artifacts.push(artifact); + } + } + const results: Tensor[] = []; + + this.artifacts.forEach(artifact => { + const rundata = this.createRunData(inferenceHandler, artifact.programInfo, inputs); + inferenceHandler.session.programManager.run(artifact, rundata); + results.push(rundata.outputTextureData.tensor); + }); + return results; + } + getProgramCount(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], axis: number): number { + const [, offsets] = SplitUtil.splitShape(inputs[0].dims, axis, this.split, this.numOutputs); + return offsets.length; + } + createProgramInfo(inferenceHandler: WebGLInferenceHandler, input: Tensor, axis: number, index: number): ProgramInfo { + const [shapes, offsets] = SplitUtil.splitShape(input.dims, axis, this.split, this.numOutputs); + const offset = offsets[index]; + const outputShape = shapes[index]; + const rank = outputShape.length; + const shaderSource = ` + float process(int indices[${rank}]) { + indices[${axis}] += ${offset}; + return _A(indices); + }`; + return { + inputLayouts: [inferenceHandler.getOrCreateTextureLayout(input)], + outputLayout: inferenceHandler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; + } + createRunData(inferenceHandler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [inferenceHandler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: + inferenceHandler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } + protected artifacts: Artifact[]; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/squeeze.ts b/js/web/lib/onnxjs/backends/webgl/ops/squeeze.ts new file mode 100644 index 0000000000..b06e055207 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/squeeze.ts @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Squeeze} from '../../../ops/squeeze'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {reshape} from './reshape'; + +export class WebGLSqueeze extends Squeeze { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + const outputDims = ShapeUtil.squeezeShape(inputs[0].dims, this.axes); + return [reshape(inferenceHandler, inputs[0], outputDims)]; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/sum.ts b/js/web/lib/onnxjs/backends/webgl/ops/sum.ts new file mode 100644 index 0000000000..75f593f809 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/sum.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Sum} from '../../../ops/sum'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLSum extends Sum implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const glsl = getGlsl(handler.session.backend.glContext.version); + const outputShape = inputs[0].dims.slice(); + const sumLine = inputs.map((v, i) => `${glsl.texture2D}(X${i},TexCoords)`).join(' + '); + const samplers = inputs.map((v, i) => `X${i}`); + return { + inputLayouts: inputs.map(t => handler.getOrCreateTextureLayout(t)), + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers, + shaderSource: ` + void main() { + vec4 result = ${sumLine}; + ${glsl.output} = result; + }`, + hasMain: true + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/tile.ts b/js/web/lib/onnxjs/backends/webgl/ops/tile.ts new file mode 100644 index 0000000000..85d00c0200 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/tile.ts @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Tile} from '../../../ops/tile'; +import {Tensor} from '../../../tensor'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLTile extends Tile implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputShape = inputs[0].dims.slice(); + const outputShape = new Array(inputShape.length); // inputs[0].dims.slice(); + + const tileOps: string[] = []; + for (let i = 0; i < inputShape.length; i++) { + outputShape[i] = inputShape[i] * inputs[1].numberData[i]; + tileOps.push(`inputIdx[${i}] = int(mod(float(outputIdx[${i}]), ${inputShape[i]}.));`); + } + + const rank = outputShape.length; + const shaderSource = ` + float process(int outputIdx[${rank}]) { + int inputIdx[${rank}]; + ${tileOps.join('\n')} + return _A(inputIdx); + }`; + return { + inputLayouts: inputs.map(t => handler.getOrCreateTextureLayout(t)), + outputLayout: handler.createTextureLayoutFromShape(outputShape), + samplers: ['A'], + shaderSource, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/transpose.ts b/js/web/lib/onnxjs/backends/webgl/ops/transpose.ts new file mode 100644 index 0000000000..8699dd3321 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/transpose.ts @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Transpose} from '../../../ops/transpose'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {FunctionType, GlslPositionalFunction} from '../glsl-definitions'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLTranspose extends Transpose implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + getOutputShape(inputShapes: Array): readonly number[] { + const perm = this.getAdjustedPerm(inputShapes[0]); + return ShapeUtil.sortBasedOnPerm(inputShapes[0], perm); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputShapes = inputs.map(t => t.dims.slice()); + const perm = this.getAdjustedPerm(inputShapes[0]); + const unpackedOutputShape = this.getOutputShape(inputShapes); + const rank = inputs[0].dims.length; + // A dims=[${inputs[0].dims.toString()}] + // out Dims=[${unpackedOutputShape.toString()}] + // based on perm=[${perm.toString()}] + const shaderSource = ` + ${this.getPermFunctionBody('perm', perm, rank)} + float process(int indices[${rank}]) { + int a[${rank}]; + perm(a, indices); + return _A(a); + }`; + const outputLayout = handler.createTextureLayoutFromShape(unpackedOutputShape, 1, unpackedOutputShape); + return {inputLayouts: [handler.getOrCreateTextureLayout(inputs[0])], outputLayout, samplers: ['A'], shaderSource}; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } + getPositionalFunction(handler: WebGLInferenceHandler, inputShape: number[], name?: string): GlslPositionalFunction { + const outputShape = this.getOutputShape([inputShape]); + if (!name) { + name = 'perm'; + } + return { + name, + body: this.getPermFunctionBody(name, this.getAdjustedPerm(inputShape), outputShape.length), + type: FunctionType.Positional, + inputShape, + outputShape + }; + } + protected getAdjustedPerm(inputShape: readonly number[]): number[] { + let perm = this.perm; + if (perm && perm.length !== inputShape.length) { + perm = [...(inputShape.keys())].reverse(); + } + return perm; + } + protected getPermFunctionBody(name: string, perm: number[], rank: number): string { + const reverseFunc = []; + reverseFunc.push(`void ${name}(out int a[${rank}], int src[${rank}]) {`); + for (let i = 0; i < rank; ++i) { + reverseFunc.push(`\ta[${perm[i]}]=src[${i}];`); + } + reverseFunc.push('\t}'); + return reverseFunc.join('\n'); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/uint8-encode.ts b/js/web/lib/onnxjs/backends/webgl/ops/uint8-encode.ts new file mode 100644 index 0000000000..936c12db9f --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/uint8-encode.ts @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {ShapeUtil} from '../../../util'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {TextureData, TextureLayout} from '../types'; + +export class WebGLUint8Encode { + runInternal(inferenceHandler: WebGLInferenceHandler, input: TextureData): TextureData { + const outputShape = input.shape; + const [width, height] = inferenceHandler.session.layoutStrategy.computeTextureWH(input.shape); + const outputLayout: TextureLayout = { + width, + height, + channels: 4, + shape: outputShape, + strides: ShapeUtil.computeStrides(outputShape), + unpackedShape: outputShape + }; + const glsl = getGlsl(inferenceHandler.session.backend.glContext.version); + // TODO: remove this special script. Use graph transformer instead. + /** + * https://github.com/tensorflow/tfjs-core/blob/master/src/kernels/webgl/encode_float_gpu.ts + */ + const shaderSource = ` + const float FLOAT_MAX = 1.70141184e38; + const float FLOAT_MIN = 1.17549435e-38; + + bool isNaN(float val) { + return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true; + } + + highp vec4 encodeAsUint8(highp float v) { + if (isNaN(v)) { + return vec4(255, 255, 255, 255); + } + + highp float av = abs(v); + + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(0.0, 0.0, 128.0, 127.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(0.0, 0.0, 128.0, 255.0) / 255.0; + } + + highp vec4 c = vec4(0,0,0,0); + + highp float e = floor(log2(av)); + highp float m = exp2(fract(log2(av))) - 1.0; + + c[2] = floor(128.0 * m); + m -= c[2] / 128.0; + c[1] = floor(32768.0 * m); + m -= c[1] / 32768.0; + c[0] = floor(8388608.0 * m); + + highp float ebias = e + 127.0; + c[3] = floor(ebias / 2.0); + ebias -= c[3] * 2.0; + c[2] += floor(ebias) * 128.0; + + c[3] += 128.0 * step(0.0, -v); + + return c / 255.0; + } + + void main() { + float value = ${glsl.texture2D}(X,TexCoords).r; + ${glsl.output} = encodeAsUint8(value); + }`; + const programInfo = {inputLayouts: [input], outputLayout, samplers: ['X'], shaderSource, hasMain: true}; + const artifact = inferenceHandler.session.programManager.build(programInfo); + + const encoder = inferenceHandler.session.backend.glContext.getEncoder('byte', 4); + const texture = + inferenceHandler.session.backend.glContext.allocateTexture(outputLayout.width, outputLayout.height, encoder); + const outputTextureData = inferenceHandler.createSharedTextureData(outputLayout, 'uint8', texture, {}); + const runData = {inputTextureDatas: [input], outputTextureData, uniformData: {}}; + + inferenceHandler.session.programManager.run(artifact, runData); + return runData.outputTextureData; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/unary-op.ts b/js/web/lib/onnxjs/backends/webgl/ops/unary-op.ts new file mode 100644 index 0000000000..afe05c7b48 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/unary-op.ts @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {UnaryOp} from '../../../ops/unary-op'; +import {Tensor} from '../../../tensor'; +import {FunctionType, GlslValueFunction} from '../glsl-definitions'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLUnaryOp extends UnaryOp implements WebGLOperator { + constructor(protected typeConstraint: readonly Tensor.DataType[], protected glslFunc: GlslValueFunction) { + super(typeConstraint); + } + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const outputShape = inputs[0].dims.slice(); + const inputLayout = handler.getOrCreateTextureLayout(inputs[0]); + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + ${this.glslFunc.body} + void main() { + vec4 v = ${glsl.texture2D}(A, TexCoords); + v = ${this.glslFunc.name}(v); + ${glsl.output} = v; + } + `; + const outputLayout = handler.createTextureLayoutFromShape(outputShape); + return {inputLayouts: [inputLayout], outputLayout, samplers: ['A'], shaderSource, hasMain: true}; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} + +export function glslAbs(): GlslValueFunction { + return glslBuiltinUnary('abs'); +} +export function glslAcos(): GlslValueFunction { + return glslBuiltinUnary('acos'); +} +export function glslAsin(): GlslValueFunction { + return glslBuiltinUnary('asin'); +} +export function glslAtan(): GlslValueFunction { + return glslBuiltinUnary('atan'); +} +export function glslCeil(): GlslValueFunction { + return glslBuiltinUnary('ceil'); +} +export function glslCos(): GlslValueFunction { + return glslBuiltinUnary('cos'); +} +export function glslExp(): GlslValueFunction { + return glslBuiltinUnary('exp'); +} +export function glslFloor(): GlslValueFunction { + return glslBuiltinUnary('floor'); +} +export function glslIdentity(): GlslValueFunction { + const name = 'indentity_'; + const body = ` + float ${name}(float a) { + return a; + } + vec4 ${name}(vec4 v) { + return v; + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslLog(): GlslValueFunction { + return glslBuiltinUnary('log'); +} +export function glslNeg(): GlslValueFunction { + const name = 'neg_'; + const body = ` + float ${name}(float a) { + return -a; + } + vec4 ${name}(vec4 v) { + return -v; + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslNot(): GlslValueFunction { + const name = 'not_'; + const body = ` + float ${name}(float a) { + return float( ! bool(a) ); + } + bool ${name}(bool a) { + return !a; + } + vec4 ${name}(vec4 v) { + return vec4(!bool(v.x), !bool(v.y), !bool(v.z), !bool(v.w)); + } + bvec4 ${name}(bvec4 v) { + return bvec4(!v.x, !v.y, !v.z, !v.w); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslSin(): GlslValueFunction { + return glslBuiltinUnary('sin'); +} +export function glslRelu(): GlslValueFunction { + const name = 'relu_'; + const body = ` + float ${name}(float a) { + return max( a, 0.0 ); + } + vec4 ${name}(vec4 v) { + return max( v, 0.0 ); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslSigmoid(): GlslValueFunction { + const name = 'sigmoid_'; + const body = ` + float ${name}(float a) { + return 1.0 / (1.0 + exp(-a)); + } + vec4 ${name}(vec4 v) { + return 1.0 / (1.0 + exp(-v)); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +export function glslSqrt(): GlslValueFunction { + return glslBuiltinUnary('sqrt'); +} +export function glslTan(): GlslValueFunction { + return glslBuiltinUnary('tan'); +} +export function glslTanh(): GlslValueFunction { + const name = 'tanh_'; + const body = ` + float ${name}(float a) { + a = clamp(a, -10., 10.); + a = exp(2.*a); + return (a - 1.) / (a + 1.); + } + vec4 ${name}(vec4 v) { + v = clamp(v, -10., 10.); + v = exp(2.*v); + return (v - 1.) / (v + 1.); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} +function glslBuiltinUnary(fname: string): GlslValueFunction { + const name = `${fname}_`; + const body = ` + float ${name}(float a) { + return ${fname}(a); + } + vec4 ${name}(vec4 v) { + return ${fname}(v); + } + `; + return {body, name, type: FunctionType.ValueBased}; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/unpack.ts b/js/web/lib/onnxjs/backends/webgl/ops/unpack.ts new file mode 100644 index 0000000000..a71e4ed179 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/unpack.ts @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; +import {getCoordsDataType} from '../utils'; + +import {getChannels, unpackFromChannel} from './packing_utils'; + +export class WebGLUnpack implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + if (inputs.length !== 1) { + throw new Error('Pack kernel should have input tensor count to 1.'); + } + + const inputTexture = handler.getTextureData(inputs[0].dataId); + if (!inputTexture) { + throw new Error('packed input texture must exist'); + } + + const outputLayout = handler.createTextureLayoutFromShape(inputTexture.unpackedShape); + const outputShape = outputLayout.shape; + const rank = outputShape.length; + + const channels = getChannels('rc', rank); + const innerDims = channels.slice(-2); + const coordsDataType = getCoordsDataType(rank); + const unpackChannel = unpackFromChannel(rank); + const sourceCoords = getSourceCoords(rank, channels); + const coords = rank <= 1 ? 'rc' : `vec2(${innerDims.join(',')})`; + const glsl = getGlsl(handler.session.backend.glContext.version); + const shaderSource = ` + ${unpackChannel} + void main() { + ${coordsDataType} rc = getOutputCoords(); + + // Sample the texture with the coords to get the rgba channel value. + vec4 packedInput = getA(${sourceCoords}); + + ${glsl.output} = vec4(getChannel(packedInput, ${coords}), 0, 0, 0); + } + `; + + return { + inputLayouts: [handler.getOrCreateTextureLayout(inputs[0])], + outputLayout, + samplers: ['A'], + shaderSource, + hasMain: true, + expectPackedInputs: true, + expectPackedoutputs: false, + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = [handler.getOrCreateTextureData(inputs[0], programInfo.inputLayouts[0])]; + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {} + }; + } +} + +export function getSourceCoords(rank: number, dims: string[]): string { + if (rank === 1) { + return 'rc'; + } + + let coords = ''; + for (let i = 0; i < rank; i++) { + coords += dims[i]; + if (i < rank - 1) { + coords += ','; + } + } + return coords; +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/unsqueeze.ts b/js/web/lib/onnxjs/backends/webgl/ops/unsqueeze.ts new file mode 100644 index 0000000000..f905ae73cb --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/unsqueeze.ts @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Unsqueeze} from '../../../ops/unsqueeze'; +import {Tensor} from '../../../tensor'; +import {ShapeUtil} from '../../../util'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {reshape} from './reshape'; + +export class WebGLUnsqueeze extends Unsqueeze { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + const outputDims = ShapeUtil.unsqueezeShape(inputs[0].dims, this.axes); + return [reshape(inferenceHandler, inputs[0], outputDims)]; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/ops/upsample.ts b/js/web/lib/onnxjs/backends/webgl/ops/upsample.ts new file mode 100644 index 0000000000..44c6ddbdaf --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/ops/upsample.ts @@ -0,0 +1,193 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Upsample} from '../../../ops/upsample'; +import {Tensor} from '../../../tensor'; +import {getGlsl} from '../glsl-source'; +import {WebGLInferenceHandler} from '../inference-handler'; +import {ProgramInfo, RunData, WebGLOperator} from '../types'; + +export class WebGLUpsample extends Upsample implements WebGLOperator { + run(inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] { + return inferenceHandler.run(this, inputs); + } + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo { + const inputLayout = handler.getOrCreateTextureLayout(inputs[0]); + const outputShape = inputs[0].dims.map((dim, i) => Math.floor(dim * this.scales[i])); + const outputLayout = handler.createTextureLayoutFromShape(outputShape); + const dim = outputShape.length; + + const glsl = getGlsl(handler.session.backend.glContext.version); + + const outputPitches = new Array(dim); + const inputPitches = new Array(dim); + let precalculatedPitches = ` + int output_pitches[${dim}]; + int input_pitches[${dim}]; + `; + for (let d = dim - 1; d >= 0; d--) { + outputPitches[d] = (d === dim - 1) ? 1 : outputPitches[d + 1] * outputShape[d + 1]; + inputPitches[d] = (d === dim - 1) ? 1 : inputPitches[d + 1] * inputs[0].dims[d + 1]; + + precalculatedPitches += ` + output_pitches[${d}] = ${outputPitches[d]}; + input_pitches[${d}] = ${inputPitches[d]}; + `; + } + const getInputFloatFunction = ` + float getInputFloat(int index) { + vec2 coords = offsetToCoords(index, ${inputLayout.width}, ${inputLayout.height}); + float value = getColorAsFloat(${glsl.texture2D}(X, coords)); + return value; + } + `; + + const shaderSource = this.mode === 'nearest' ? + // nearest + ` + ${getInputFloatFunction} + float process(int indices[${dim}]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${outputLayout.width}, ${outputLayout.height}); + + ${precalculatedPitches} + + int d, m; + for (int dim = 0; dim < ${dim}; ++dim) { + d = output_index / output_pitches[dim]; + m = output_index - d * output_pitches[dim]; + output_index = m; + + if (scales[dim] != 1 && d > 0) { + int d2 = d / scales[dim]; + m = d - d2 * scales[dim]; + d = d2; + } + input_index += input_pitches[dim] * d; + } + + return getInputFloat(input_index); + }` : + dim === 4 ? + // bilinear 4D + ` + ${getInputFloatFunction} + float process(int indices[4]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${outputLayout.width}, ${outputLayout.height}); + + ${precalculatedPitches} + + int m; + int index_of_dim0, index_of_dim1, index_of_dim2, index_of_dim3; + index_of_dim0 = output_index / output_pitches[0]; + m = output_index - index_of_dim0 * output_pitches[0]; + index_of_dim1 = m / output_pitches[1]; + m = m - index_of_dim1 * output_pitches[1]; + index_of_dim2 = m / output_pitches[2]; + m = m - index_of_dim2 * output_pitches[2]; + index_of_dim3 = m; + + int index_of_input_dim2, index_of_input_dim3, x_offset, y_offset; + index_of_input_dim2 = index_of_dim2 / scales[2]; + y_offset = index_of_dim2 - index_of_input_dim2 * scales[2]; + index_of_input_dim3 = index_of_dim3 / scales[3]; + x_offset = index_of_dim3 - index_of_input_dim3 * scales[3]; + + input_index = index_of_dim0 * input_pitches[0] + + index_of_dim1 * input_pitches[1] + + index_of_input_dim2 * input_pitches[2] + + index_of_input_dim3; + + float x00 = getInputFloat(input_index); + float x10, x01, x11; + + bool end_of_dim2 = false; + if (index_of_input_dim2 == (${inputs[0].dims[2]} - 1)) { + // It's the end in dimension 2 + x01 = x00; + end_of_dim2 = true; + } else { + x01 = getInputFloat(input_index + input_pitches[2]); + } + + if (index_of_input_dim3 == (input_pitches[2] - 1)) { + // It's the end in dimension 3 + x10 = x00; + x11 = x01; + } + else { + x10 = getInputFloat(input_index + 1); + x11 = end_of_dim2 ? x10 : getInputFloat(input_index + input_pitches[2] + 1); + } + + float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[2]); + float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[2]); + return y0 + float(x_offset) * (y1 - y0) / float(scales[3]); + }` : + // bilinear 2D + ` + ${getInputFloatFunction} + float process(int indices[2]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${outputLayout.width}, ${outputLayout.height}); + + ${precalculatedPitches} + + int m; + int index_of_dim0, index_of_dim1; + index_of_dim0 = output_index / output_pitches[0]; + m = output_index - index_of_dim0 * output_pitches[0]; + index_of_dim1 = m; + + int index_of_input_dim0, index_of_input_dim1, x_offset, y_offset; + index_of_input_dim0 = index_of_dim0 / scales[0]; + y_offset = index_of_dim0 - index_of_input_dim0 * scales[0]; + index_of_input_dim1 = index_of_dim1 / scales[1]; + x_offset = index_of_dim1 - index_of_input_dim1 * scales[1]; + + input_index = index_of_input_dim0 * input_pitches[0] + index_of_input_dim1; + + float x00 = getInputFloat(input_index); + float x10, x01, x11; + + bool end_of_dim0 = false; + if (index_of_input_dim0 == (${inputs[0].dims[0]} - 1)) { + // It's the end in dimension 0 + x01 = x00; + end_of_dim0 = true; + } else { + x01 = getInputFloat(input_index + input_pitches[0]); + } + + if (index_of_input_dim1 == (input_pitches[0] - 1)) { + // It's the end in dimension 1 + x10 = x00; + x11 = x01; + } + else { + x10 = getInputFloat(input_index + 1); + x11 = end_of_dim0 ? x10 : getInputFloat(input_index + input_pitches[0] + 1); + } + + float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[0]); + float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[0]); + return y0 + float(x_offset) * (y1 - y0) / float(scales[1]); + }`; + return { + inputLayouts: [inputLayout], + outputLayout, + samplers: ['X'], + shaderSource, + variables: [{name: 'scales', type: 'int', arrayLength: this.scales.length}] + }; + } + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData { + const inputTDs = inputs.map((t, i) => handler.getOrCreateTextureData(t, programInfo.inputLayouts[i])); + return { + inputTextureDatas: inputTDs, + outputTextureData: handler.createTextureDataFromLayout(programInfo.outputLayout, inputTDs[0].tensor.type), + uniformData: {scales: this.scales.map(x => Math.ceil(x))} + }; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/program-manager.ts b/js/web/lib/onnxjs/backends/webgl/program-manager.ts new file mode 100644 index 0000000000..afd8fadd2b --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/program-manager.ts @@ -0,0 +1,185 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {env} from 'onnxruntime-common'; +import {Logger, Profiler} from '../../instrument'; + +import {GlslPreprocessor} from './glsl-preprocessor'; +import {getVertexShaderSource} from './glsl-source'; +import {TextureLayoutStrategy} from './texture-layout-strategy'; +import {Artifact, ProgramInfo, RunData, TextureData, UniformData, VariableInfo} from './types'; +import {WebGLContext} from './webgl-context'; + +/** + * ProgramManager is the main class behind running computations + * It builds ProgramInfo's into Artifacts + * It compiles given ProgramInfo's into WebGL Prorams (cached as Artifacts) + * Uses the artifact to run the computation by calling Draw on + * the WebGL drawing buffer + * ProgramManager automatically maps (binds) input variables to their + * corresponding Location's in the binary program + */ +export class ProgramManager { + repo: Map; // this should be per-session object + vertexShader: WebGLShader; + attributesBound: boolean; + + constructor( + public profiler: Readonly, public glContext: WebGLContext, + public textureLayoutStrategy: TextureLayoutStrategy) { + this.repo = new Map(); + this.attributesBound = false; + } + getArtifact(key: unknown): Artifact|undefined { + return this.repo.get(key); + } + setArtifact(key: unknown, artifact: Artifact): void { + this.repo.set(key, artifact); + } + run(buildArtifact: Artifact, runData: RunData): void { + const inputInfo = runData.inputTextureDatas.map((d, i) => `input${i}:[${d.shape}]`).join(', '); + const outputInfo = `output: [${runData.outputTextureData.shape}]`; + + this.profiler.event('backend', `ProgramManager.run ${inputInfo} ; ${outputInfo}`, () => { + const gl = this.glContext.gl; + const program = buildArtifact.program; + gl.useProgram(program); + try { + this.bindOutput(runData.outputTextureData); + if (!this.attributesBound) { + this.bindAttributes(buildArtifact.attribLocations); + } + this.bindUniforms(buildArtifact.uniformLocations, runData.uniformData, runData.inputTextureDatas); + } catch (err) { + Logger.error('ProgramManager', buildArtifact.programInfo.shaderSource); + throw err; + } + this.profiler.event('backend', 'GlContext.draw()', () => { + this.doDraw(buildArtifact, runData); + }); + }); + } + dispose(): void { + if (this.vertexShader) { + this.glContext.deleteShader(this.vertexShader); + } + this.repo.forEach(a => this.glContext.deleteProgram(a.program)); + } + build(programInfo: ProgramInfo): Artifact { + return this.profiler.event('backend', 'ProgramManager.build', () => { + const preprocessor = new GlslPreprocessor(this.glContext, programInfo); + const fragScript = preprocessor.preprocess(); + const program = this.compile(fragScript); + const artifact = { + programInfo, + program, + uniformLocations: this.getUniformLocations( + program, preprocessor.context.programInfo.samplers, preprocessor.context.programInfo.variables), + attribLocations: this.getAttribLocations(program) + }; + return artifact; + }); + } + protected doDraw(artifact: Artifact, runData: RunData): void { + if (runData.draw) { + Logger.verbose('ProgramManager', 'Custom draw function'); + runData.draw(this.glContext, artifact); + } else { + this.glContext.draw(); + } + } + protected compile(fragShaderScript: string): WebGLProgram { + if (!this.vertexShader) { + Logger.verbose('ProrgramManager', 'Compiling and caching Vertex shader for the first time'); + const vertexShaderScript = getVertexShaderSource(this.glContext.version); + this.vertexShader = this.glContext.compileShader(vertexShaderScript, this.glContext.gl.VERTEX_SHADER); + } + if (env.debug) { + Logger.verbose('ProrgramManager', `FragShader: +${fragShaderScript} +`); + } + const fragShader = this.glContext.compileShader(fragShaderScript, this.glContext.gl.FRAGMENT_SHADER); + const program = this.glContext.createProgram(this.vertexShader, fragShader); + this.glContext.deleteShader(fragShader); + return program; + } + bindOutput(td: TextureData): void { + Logger.verbose( + 'ProrgramManager', + `Binding output texture to Framebuffer: w/h=${td.width}/${td.height}, shape=${td.shape}, type=${ + td.tensor.type}`); + this.glContext.attachFramebuffer(td.texture, td.width, td.height); + } + bindAttributes(attribLocations: Artifact.AttribLocations): void { + const positionHandle = attribLocations.position; + const textureCoordHandle = attribLocations.textureCoord; + this.glContext.setVertexAttributes(positionHandle, textureCoordHandle); + this.attributesBound = true; + } + bindUniforms(uniformLocations: Artifact.UniformLocations, uniformData: UniformData, textures: TextureData[]): void { + const gl = this.glContext.gl; + let texturePosition = 0; + for (const {name, type, location, arrayLength} of uniformLocations) { + switch (type) { + case 'sampler2D': + this.bindTexture(textures[texturePosition], location, texturePosition); + texturePosition++; + break; + case 'float': + if (arrayLength) { + gl.uniform1fv(location, uniformData[name] as number[]); + } else { + gl.uniform1f(location, uniformData[name] as number); + } + break; + case 'int': + if (arrayLength) { + gl.uniform1iv(location, uniformData[name] as number[]); + } else { + gl.uniform1i(location, uniformData[name] as number); + } + break; + default: + throw new Error(`Uniform not implemented: ${type}`); + } + } + } + bindTexture(td: TextureData, uniformHandle: WebGLUniformLocation, position: number): void { + this.glContext.bindTextureToUniform(td.texture, position, uniformHandle); + } + getAttribLocations(program: WebGLProgram): Artifact.AttribLocations { + return { + position: this.getAttribLocation(program, 'position'), + textureCoord: this.getAttribLocation(program, 'textureCoord') + }; + } + getUniformLocations(program: WebGLProgram, samplers?: string[], variables?: VariableInfo[]): + Artifact.UniformLocations { + const uniformLocations: Artifact.UniformLocations = []; + if (samplers) { + for (const sampler of samplers) { + uniformLocations.push({name: sampler, type: 'sampler2D', location: this.getUniformLocation(program, sampler)}); + } + } + if (variables) { + for (const variable of variables) { + uniformLocations.push({...variable, location: this.getUniformLocation(program, variable.name)}); + } + } + return uniformLocations; + } + getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation { + const gl = this.glContext.gl; + const reference = gl.getUniformLocation(program, name); + if (reference === null) { + throw new Error(`Uniform ${name} not found.`); + } + return reference; + } + getAttribLocation(program: WebGLProgram, name: string): number { + const gl = this.glContext.gl; + const attributeLocation: number = gl.getAttribLocation(program, name); + return attributeLocation; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/session-handler.ts b/js/web/lib/onnxjs/backends/webgl/session-handler.ts new file mode 100644 index 0000000000..b044ff1309 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/session-handler.ts @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {SessionHandler} from '../../backend'; +import {Graph} from '../../graph'; +import {Logger} from '../../instrument'; +import {Operator} from '../../operators'; +import {OpSet, resolveOperator} from '../../opset'; +import {Session} from '../../session'; +import {Tensor} from '../../tensor'; +import {WebGLBackend} from '../backend-webgl'; + +import {WebGLInferenceHandler} from './inference-handler'; +import {WEBGL_OP_RESOLVE_RULES} from './op-resolve-rules'; +import {ProgramManager} from './program-manager'; +import {PreferLogicalStrategy, TextureLayoutStrategy} from './texture-layout-strategy'; +import {TextureManager} from './texture-manager'; +import {TextureData, WebGLOperator} from './types'; + +export class WebGLSessionHandler implements SessionHandler { + programManager: ProgramManager; + textureManager: TextureManager; + layoutStrategy: TextureLayoutStrategy; + textureDataCache: Map; + initializers: Set; + packOpCache: Map; + unpackOpCache: Map; + + constructor(public readonly backend: WebGLBackend, public readonly context: Session.Context) { + this.layoutStrategy = new PreferLogicalStrategy(backend.glContext.maxTextureSize); + this.programManager = new ProgramManager(this.context.profiler, backend.glContext, this.layoutStrategy); + this.textureManager = new TextureManager( + backend.glContext, this.layoutStrategy, this.context.profiler, + {reuseTextures: backend.textureCacheMode === 'full'}); + this.textureDataCache = new Map(); + this.packOpCache = new Map(); + this.unpackOpCache = new Map(); + } + + createInferenceHandler() { + return new WebGLInferenceHandler(this); + } + onGraphInitialized(graph: Graph): void { + const initializers = graph.getValues().filter(v => v.from === -1 && v.tensor).map(v => v.tensor!.dataId); + this.initializers = new Set(initializers); + } + isInitializer(tensorId: Tensor.Id): boolean { + return this.initializers ? this.initializers.has(tensorId) : false; + } + getTextureData(tensorId: Tensor.Id): TextureData|undefined { + return this.textureDataCache.get(tensorId); + } + setTextureData(tensorId: Tensor.Id, textureData: TextureData): void { + Logger.verbose('WebGLSessionHandler', 'Storing Texture data in cache'); + this.textureDataCache.set(tensorId, textureData); + } + dispose(): void { + this.programManager.dispose(); + this.textureManager.clearActiveTextures(); + this.textureDataCache.forEach(td => this.textureManager.releaseTexture(td, true)); + this.textureDataCache = new Map(); + } + resolve(node: Graph.Node, opsets: readonly OpSet[], graph: Graph): Operator { + const op = resolveOperator(node, opsets, WEBGL_OP_RESOLVE_RULES); + op.initialize(node.attributes, node, graph); + return op; + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/texture-data-encoder.ts b/js/web/lib/onnxjs/backends/webgl/texture-data-encoder.ts new file mode 100644 index 0000000000..6ddd420c6f --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/texture-data-encoder.ts @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Logger} from '../../instrument'; + +export declare namespace Encoder { + export interface DataTypeMap { + float: Float32Array; + byte: Uint8Array; + int: Uint32Array; + } + export type DataType = keyof DataTypeMap; + type DataArrayType = DataTypeMap[DataType]; + + /* eslint-disable @typescript-eslint/naming-convention */ + export const enum Usage { + Default = 0, + UploadOnly, + Download4BytesAsFloat32, + } +} + +/** + * Abstraction for mapping data types to texture texlets + * Encoding means how a Float32 is mapped to 1 or 4 channels for each texlet + * Decoding means how a texlet's channels are mapped to a resulting Float32 + */ +export interface DataEncoder { + internalFormat: number; + format: number; + textureType: number; + channelSize: number; + encode(src: Encoder.DataArrayType, textureSize: number): Encoder.DataArrayType; + allocate(size: number): Encoder.DataArrayType; + decode(buffer: Encoder.DataArrayType, dataSize: number): Encoder.DataArrayType; +} +/** + * WebGL2 data encoder + * Uses R32F as the format for texlet + */ +export class RedFloat32DataEncoder implements DataEncoder { + internalFormat: number; + format: number; + textureType: number; + channelSize: number; + constructor(gl: WebGL2RenderingContext, channels = 1) { + if (channels === 1) { + this.internalFormat = gl.R32F; + this.format = gl.RED; + this.textureType = gl.FLOAT; + this.channelSize = channels; + } else if (channels === 4) { + this.internalFormat = gl.RGBA32F; + this.format = gl.RGBA; + this.textureType = gl.FLOAT; + this.channelSize = channels; + } else { + throw new Error(`Invalid number of channels: ${channels}`); + } + } + encode(src: Encoder.DataArrayType, textureSize: number): Encoder.DataArrayType { + let result: Float32Array; + let source: Float32Array; + if (src.constructor !== Float32Array) { + Logger.warning('Encoder', 'data was not of type Float32; creating new Float32Array'); + source = new Float32Array(src); + } + if (textureSize * this.channelSize > src.length) { + Logger.warning('Encoder', 'Source data too small. Allocating larger array'); + source = src as Float32Array; + result = this.allocate(textureSize * this.channelSize) as Float32Array; + source.forEach((v, i) => result[i] = v); + } else { + source = src as Float32Array; + result = source; + } + return result; + } + allocate(size: number): Encoder.DataArrayType { + return new Float32Array(size * 4); + } + decode(buffer: Encoder.DataArrayType, dataSize: number): Float32Array { + if (this.channelSize === 1) { + const filteredData = (buffer as Float32Array).filter((value, index) => index % 4 === 0).subarray(0, dataSize); + return filteredData; + } + return buffer.subarray(0, dataSize) as Float32Array; + } +} +/** + * Data encoder for WebGL 1 with support for floating point texture + */ +export class RGBAFloatDataEncoder implements DataEncoder { + internalFormat: number; + format: number; + textureType: number; + channelSize: number; + constructor(gl: WebGLRenderingContext, channels = 1, textureType?: number) { + if (channels !== 1 && channels !== 4) { + throw new Error(`Invalid number of channels: ${channels}`); + } + this.internalFormat = gl.RGBA; + this.format = gl.RGBA; + this.channelSize = channels; + this.textureType = textureType || gl.FLOAT; + } + encode(src: Float32Array, textureSize: number): Encoder.DataArrayType { + let dest = src; + if (this.channelSize === 1) { + Logger.verbose('Encoder', 'Exploding into a larger array'); + dest = this.allocate(textureSize) as Float32Array; + src.forEach((v, i) => dest[i * 4] = v); + } + return dest; + } + allocate(size: number): Encoder.DataArrayType { + return new Float32Array(size * 4); + } + decode(buffer: Encoder.DataArrayType, dataSize: number): Float32Array { + if (this.channelSize === 1) { + const filteredData = (buffer as Float32Array).filter((value, index) => index % 4 === 0).subarray(0, dataSize); + return filteredData; + } + return buffer.subarray(0, dataSize) as Float32Array; + } +} + +export class Uint8DataEncoder implements DataEncoder { + internalFormat: number; + format: number; + textureType: number; + channelSize = 4; + constructor(gl: WebGLRenderingContext, channels = 1) { + if (channels === 1) { + this.internalFormat = gl.ALPHA; + this.format = gl.ALPHA; // not tested + this.textureType = gl.UNSIGNED_BYTE; + this.channelSize = channels; + } else if (channels === 4) { + this.internalFormat = gl.RGBA; + this.format = gl.RGBA; + this.textureType = gl.UNSIGNED_BYTE; + this.channelSize = channels; + } else { + throw new Error(`Invalid number of channels: ${channels}`); + } + } + encode(src: Uint8Array, _textureSize: number): Encoder.DataArrayType { + return new Uint8Array(src.buffer, src.byteOffset, src.byteLength); + } + allocate(size: number): Encoder.DataArrayType { + return new Uint8Array(size * this.channelSize); + } + decode(buffer: Encoder.DataArrayType, dataSize: number): Uint8Array { + if (buffer instanceof Uint8Array) { + return buffer.subarray(0, dataSize); + } + throw new Error(`Invalid array type: ${buffer.constructor}`); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/texture-layout-strategy.ts b/js/web/lib/onnxjs/backends/webgl/texture-layout-strategy.ts new file mode 100644 index 0000000000..8377e92efb --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/texture-layout-strategy.ts @@ -0,0 +1,227 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Logger} from '../../instrument'; +import {assert} from '../../util'; +/** Layout preferences */ +export interface WidthHeightPrefs { + breakAxis?: number; + isPacked?: boolean; + reverseWH?: boolean; +} +/** + * TextureLayoutStrategy is an abstraction for different plans + * for mapping n-dimensional arrays to 2D textures (and back) + */ +export interface TextureLayoutStrategy { + computeTextureWH(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number]; +} + +/** + * This strategy try to find the minimal max(W,H) that fulfills (W * H == totalSize) + */ +export class AlwaysKeepOriginalSizeStrategy implements TextureLayoutStrategy { + constructor(public maxTextureSize: number) {} + computeTextureWH(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number] { + // scalar tensor + if (shape.length === 0) { + return [1, 1]; + } + const maxTextureSize = this.maxTextureSize; + if (prefs && prefs.breakAxis !== undefined) { + // check to see if dims fit + const wsize = prefs.breakAxis >= shape.length ? 1 : shape.slice(prefs.breakAxis).reduce((a, b) => a * b); + const hsize = prefs.breakAxis <= 0 ? 1 : shape.slice(0, prefs.breakAxis).reduce((a, b) => a * b); + if (wsize > maxTextureSize || hsize > maxTextureSize) { + // ignore preferences + // continue with default layout + Logger.verbose( + 'TextureLayout', + `Given width/height preferences were unattainable: shape:${shape}, breakAxis:${prefs.breakAxis}`); + } else { + return [wsize, hsize]; + } + } + const totalSize = shape.reduce((a, b) => a * b); + + let width = Math.floor(Math.sqrt(totalSize)); + + for (; width < maxTextureSize && width < totalSize; width++) { + if (totalSize % width === 0) { + break; + } + } + + if (width >= maxTextureSize || totalSize % width !== 0) { + throw new Error(`The given dimensions are outside this GPU's boundaries: ${shape}`); + } + return [width, totalSize / width]; + } +} + +export class PreferLogicalStrategy implements TextureLayoutStrategy { + constructor(public maxTextureSize: number) {} + computeTextureWH(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number] { + const wh = this.computeTexture(shape, prefs); + if (prefs && prefs.isPacked) { + wh[0] /= 2; + wh[1] /= 2; + } + + return wh; + } + + computeTexture(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number] { + const isPacked = prefs && prefs.isPacked; + // scalar tensor + if (shape.length === 0) { + return isPacked ? [2, 2] : [1, 1]; + } + let maxTextureSize = this.maxTextureSize; + if (prefs && prefs.breakAxis !== undefined) { + // check to see if dims fit + const wsize = prefs.breakAxis >= shape.length ? 1 : shape.slice(prefs.breakAxis).reduce((a, b) => a * b); + const hsize = prefs.breakAxis <= 0 ? 1 : shape.slice(0, prefs.breakAxis).reduce((a, b) => a * b); + if (wsize > maxTextureSize || hsize > maxTextureSize) { + // ignore preferences + // continue with default layout + Logger.verbose( + 'TextureLayout', + `Given width/height preferences were unattainable: shape:${shape}, breakAxis:${prefs.breakAxis}`); + } else { + return [wsize, hsize]; + } + } + let logShape = shape.slice(0); + if (isPacked) { + maxTextureSize = maxTextureSize * 2; + + // This logic ensures we accurately count the number of packed texels needed + // to accommodate the tensor. We can only pack values in the same texel if + // they are from adjacent pairs of rows/cols within the same batch. So if a + // tensor has 3 rows, we pretend it has 4 rows in order to account for the + // fact that the texels containing the third row are half empty. + logShape = logShape.map( + (d, i) => i >= logShape.length - 2 ? (logShape[i] % 2 === 0 ? logShape[i] : logShape[i] + 1) : logShape[i]); + + // Packed texture height is at least 2 (the channel height of a single + // texel). + if (logShape.length === 1) { + logShape = [2, logShape[0]]; + } + } + + // If logical shape is 2, we don't squeeze, since we want to match physical. + if (logShape.length !== 2) { + const squeezeResult = squeezeShape(logShape); + logShape = squeezeResult.newShape; + } + + const size = sizeFromShape(logShape); + if (logShape.length <= 1 && size <= maxTextureSize) { + return [1, size]; + } else if (logShape.length === 2 && logShape[0] <= maxTextureSize && logShape[1] <= maxTextureSize) { + return logShape as [number, number]; + } else if (logShape.length === 3 && logShape[0] * logShape[1] <= maxTextureSize && logShape[2] <= maxTextureSize) { + return [logShape[0] * logShape[1], logShape[2]]; + } else if (logShape.length === 3 && logShape[0] <= maxTextureSize && logShape[1] * logShape[2] <= maxTextureSize) { + return [logShape[0], logShape[1] * logShape[2]]; + } else if ( + logShape.length === 4 && logShape[0] * logShape[1] * logShape[2] <= maxTextureSize && + logShape[3] <= maxTextureSize) { + return [logShape[0] * logShape[1] * logShape[2], logShape[3]]; + } else if ( + logShape.length === 4 && logShape[0] <= maxTextureSize && + logShape[1] * logShape[2] * logShape[3] <= maxTextureSize) { + return [logShape[0], logShape[1] * logShape[2] * logShape[3]]; + } else { + if (isPacked) { + // For packed textures size equals the number of channels required to + // accommodate the texture data. However in order to squarify such that + // inner dimensions stay even, we rewrite size to equal the number of + // texels. Then in the return statement we rehydrate the squarified + // dimensions to channel units. + return sizeToSquarishShape(size / 4).map(d => d * 2) as [number, number]; + } + return sizeToSquarishShape(size); + } + } +} + +export function squeezeShape(shape: number[], axis?: number[]): {newShape: number[]; keptDims: number[]} { + const newShape: number[] = []; + const keptDims: number[] = []; + const isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0; + const axes = (axis == null || isEmptyArray) ? null : parseAxisParam(axis, shape).sort(); + let j = 0; + for (let i = 0; i < shape.length; ++i) { + if (axes != null) { + if (axes[j] === i && shape[i] !== 1) { + throw new Error(`Can't squeeze axis ${i} since its dim '${shape[i]}' is not 1`); + } + if ((axes[j] == null || axes[j] > i) && shape[i] === 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + if (axes[j] <= i) { + j++; + } + } + if (shape[i] !== 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + } + return {newShape, keptDims}; +} + +export function parseAxisParam(axis: number|number[], shape: number[]): number[] { + const rank = shape.length; + + // Normalize input + axis = axis == null ? shape.map((s, i) => i) : ([] as number[]).concat(axis); + + // Check for valid range + assert( + axis.every(ax => ax >= -rank && ax < rank), + () => `All values in axis param must be in range [-${rank}, ${rank}) but ` + + `got axis ${axis}`); + + // Check for only integers + assert( + axis.every(isInt), + () => 'All values in axis param must be integers but ' + + `got axis ${axis}`); + + // Handle negative axis. + return axis.map(a => a < 0 ? rank + a : a); +} + +export function isInt(a: number): boolean { + return a % 1 === 0; +} +export function sizeFromShape(shape: number[]): number { + if (shape.length === 0) { + // Scalar. + return 1; + } + let size = shape[0]; + for (let i = 1; i < shape.length; i++) { + size *= shape[i]; + } + return size; +} +export function getRowsCols(shape: number[]): [number, number] { + if (shape.length === 0) { + throw Error('Cannot get rows and columns of an empty shape array.'); + } + + return [shape.length > 1 ? shape[shape.length - 2] : 1, shape[shape.length - 1]]; +} +export function sizeToSquarishShape(size: number): [number, number] { + const width = Math.ceil(Math.sqrt(size)); + return [width, Math.ceil(size / width)]; +} +export function getBatchDim(shape: number[], dimsToSkip = 2): number { + return sizeFromShape(shape.slice(0, shape.length - dimsToSkip)); +} diff --git a/js/web/lib/onnxjs/backends/webgl/texture-manager.ts b/js/web/lib/onnxjs/backends/webgl/texture-manager.ts new file mode 100644 index 0000000000..250d2c25de --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/texture-manager.ts @@ -0,0 +1,199 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Logger, Profiler} from '../../instrument'; +import {Tensor} from '../../tensor'; + +import {Encoder} from './texture-data-encoder'; +import {TextureLayoutStrategy} from './texture-layout-strategy'; +import {TextureData, TextureLayout} from './types'; +import {WebGLContext} from './webgl-context'; + +export interface TextureManagerConfig { + reuseTextures?: boolean; +} + +/** + * TextureManager is the mainly responsible for caching Textures + * Textures are cached in 2 levels: + * 1. the texures which are associated with a dataId (from Tensor) + * Caching these is crucial to performance. These are In-use Textures + * 2. textures which are not in use by any current ProgramInfo/Tensor + * These are called Free Textures + * TextureManager is also used to help creating textures. For this it + * uses WebGLContext and TextureLayoutStrategy + */ +export class TextureManager { + private readonly inUseTextures: Map; + private readonly idleTextures: Map; + private readonly textureLookup: Map; + + constructor( + public glContext: WebGLContext, public layoutStrategy: TextureLayoutStrategy, public profiler: Readonly, + private config: TextureManagerConfig) { + if (config.reuseTextures) { + this.inUseTextures = new Map(); + this.idleTextures = new Map(); + this.textureLookup = new Map(); + } + } + createTextureFromLayout( + dataType: Tensor.DataType, layout: TextureLayout, data?: Tensor.NumberType, usage?: Encoder.Usage) { + const textureDataType = this.toEncoderType(dataType); + + const encoder = this.glContext.getEncoder(textureDataType, layout.channels || 1, usage); + if (layout.isPacked && usage === Encoder.Usage.UploadOnly) { + throw new Error('not implemented'); + } + const width = layout.width; + const height = layout.height; + + let key: string|undefined; + let inUseTextures: WebGLTexture[]|undefined; + if (this.config.reuseTextures) { + key = `${width}x${height}_${encoder.format}_${encoder.internalFormat}_${encoder.textureType}`; + inUseTextures = this.inUseTextures.get(key); + if (!inUseTextures) { + inUseTextures = []; + this.inUseTextures.set(key, inUseTextures); + } + + const idleTextures = this.idleTextures.get(key); + if (idleTextures && idleTextures.length > 0) { + const texture = idleTextures.pop()!; + inUseTextures.push(texture); + if (usage === Encoder.Usage.UploadOnly) { + this.glContext.updateTexture(texture, width, height, encoder, this.toTextureData(dataType, data)!); + } + return texture; + } + } + + Logger.verbose('TextureManager', `Creating new texture of size ${layout.width}x${layout.height}`); + const texture = this.glContext.allocateTexture(width, height, encoder, this.toTextureData(dataType, data)); + + if (this.config.reuseTextures) { + inUseTextures!.push(texture); + this.textureLookup.set(texture, key!); + } + return texture; + } + readTexture(td: TextureData, dataType: Tensor.DataType, channels?: number): Tensor.NumberType { + if (!channels) { + channels = 1; + } + return this.profiler.event('backend', 'TextureManager.readTexture', () => { + const dataSize = td.shape.reduce((a, b) => a * b) * channels!; + const data = this.glContext.readTexture( + td.texture, td.width, td.height, dataSize, this.toEncoderType(dataType), channels!); + return this.toTensorData(dataType, data); + }); + } + readUint8TextureAsFloat(td: TextureData): Float32Array { + return this.profiler.event('backend', 'TextureManager.readUint8TextureAsFloat', () => { + const dataSize = td.shape.reduce((a, b) => a * b); + const data = this.glContext.readTexture(td.texture, td.width, td.height, dataSize * 4, 'byte', 4); + return new Float32Array(data.buffer, data.byteOffset, dataSize); + }); + } + releaseTexture(textureData: TextureData, deleteTexture?: boolean): void { + let key: string|undefined; + if (this.config.reuseTextures) { + key = this.textureLookup.get(textureData.texture); + if (key) { + if (deleteTexture) { + this.textureLookup.delete(key); + } + const inUseTextures = this.inUseTextures.get(key); + if (inUseTextures) { + const index = inUseTextures.indexOf(textureData.texture); + if (index !== -1) { + inUseTextures.splice(index, 1); + let idleTextures = this.idleTextures.get(key); + if (!idleTextures) { + idleTextures = []; + this.idleTextures.set(key, idleTextures); + } + idleTextures.push(textureData.texture); + } + } + } + } + + if (!key || deleteTexture) { + Logger.verbose('TextureManager', `Deleting texture of size ${textureData.width}x${textureData.height}`); + this.glContext.deleteTexture(textureData.texture); + } + } + toTensorData(dataType: Tensor.DataType, data: Encoder.DataArrayType): Tensor.NumberType { + return (data instanceof Float32Array) ? data : new Float32Array(data); + /* + switch (dataType) { + case 'int16': + return new Int16Array(data); + case 'int32': + return new Int32Array(data); + case 'int8': + return new Int8Array(data); + case 'uint16': + return new Uint16Array(data); + case 'uint32': + return data as Uint32Array; + case 'uint8': + case 'bool': + return data as Uint8Array; + case 'float32': + return data as Float32Array; + case 'float64': + return new Float64Array(data); + default: + throw new Error(`TensorData type ${dataType} is not supported`); + } + */ + } + toTextureData(dataType: Tensor.DataType, data: Tensor.NumberType|undefined): Encoder.DataArrayType|undefined { + if (!data) { + return undefined; + } + return (data instanceof Float32Array) ? data : new Float32Array(data); + /* + switch (dataType) { + case 'int16': + case 'int32': + case 'uint16': + case 'uint32': + return (data.constructor === Uint32Array) ? data as Uint32Array : new Uint32Array(data); + case 'int8': + case 'uint8': + case 'bool': + return (data.constructor === Uint8Array) ? data as Uint8Array : new Uint8Array(data); + case 'float32': + case 'float64': + return (data.constructor === Float32Array) ? data as Float32Array : new Float32Array(data); + default: + throw new Error(`TensorData type ${dataType} is not supported`); + } + */ + } + toEncoderType(_dataType: Tensor.DataType): Encoder.DataType { + return 'float'; + // switch (dataType) { + // case 'int16': + // case 'int32': + // case 'uint16': + // case 'uint32': + // return 'int'; + // case 'uint8': + // case 'bool': + // return 'byte'; + // case 'float32': + // case 'float64': + // return 'float'; + // default: + // throw new Error(`TensorData type ${dataType} is not supported`); + // } + } + clearActiveTextures(): void { + this.glContext.clearActiveTextures(); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/types.ts b/js/web/lib/onnxjs/backends/webgl/types.ts new file mode 100644 index 0000000000..5953dcd24b --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/types.ts @@ -0,0 +1,132 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Tensor} from '../../tensor'; + +import {WebGLInferenceHandler} from './inference-handler'; +import {WebGLContext} from './webgl-context'; + +/** + * Represent an operator instance that can run in WebGL backend + */ +export interface WebGLOperator { + createProgramInfo(handler: WebGLInferenceHandler, inputs: Tensor[]): ProgramInfo; + createRunData(handler: WebGLInferenceHandler, programInfo: ProgramInfo, inputs: Tensor[]): RunData; +} + +/** + * Layout info is used for mapping n-dimensional array to 2D textures + * The layout is created by the TextureLayoutStrategy based on + * the Tensor's dimensions and strides + */ +export interface TextureLayout { + width: number; + height: number; + /** + * specify the number of value that encoded in a single pixel + */ + channels: 1|2|3|4; + /** + * whether in packed mode or not + */ + isPacked?: boolean; + /** + * the normalized shape + */ + shape: readonly number[]; + /** + * the stride of each dimensions, calculated according to shape + */ + strides: readonly number[]; + /** + * the original shape(dims) of the corresponding tensor + */ + unpackedShape: readonly number[]; +} +export interface TextureData extends TextureLayout { + tensor: Tensor; + texture: WebGLTexture; +} + +/** + * A set of data that represent a shader program + */ +export interface ProgramInfo { + /** + * texture layouts for each input + */ + inputLayouts: TextureLayout[]; + /** + * names of uniform samplers + */ + samplers: string[]; + /** + * information of uniform variables + */ + variables?: VariableInfo[]; + /** + * texture layout for output + */ + outputLayout: TextureLayout; + /** + * the shader's processing source code + */ + shaderSource: string; + /** + * whether the shader source contains a customized main function implementation + */ + hasMain?: boolean; + params?: {[name: string]: number|number[]|string}; + + expectPackedInputs?: boolean; + expectPackedoutputs?: boolean; +} + +export interface VariableInfo { + type: 'float'|'int'; + name: string; + arrayLength?: number; +} + +/** + * Information of uniforms that shader uses + */ +export interface UniformInfo { + type: 'sampler2D'|VariableInfo['type']; + name: string; + arrayLength?: number; +} + +export interface UniformLocation extends UniformInfo { + location: WebGLUniformLocation; +} + +/** + * Artifact is the result of compilation + * It does not contain input of output data + * However anything that could be run as a "program" + */ +export interface Artifact { + programInfo: ProgramInfo; + program: WebGLProgram; + uniformLocations: UniformLocation[]; + attribLocations: {position: number; textureCoord: number}; +} +export declare namespace Artifact { + type UniformLocations = Artifact['uniformLocations']; + type AttribLocations = Artifact['attribLocations']; +} + +export interface UniformData { + [name: string]: number|number[]; +} + +/** + * RunData contains all inputs that required to run a "program" + */ +export interface RunData { + inputTextureDatas: TextureData[]; + outputTextureData: TextureData; + uniformData: UniformData; + draw?: (glContext: WebGLContext, artifact: Artifact) => void; +} diff --git a/js/web/lib/onnxjs/backends/webgl/utils.ts b/js/web/lib/onnxjs/backends/webgl/utils.ts new file mode 100644 index 0000000000..214fd55c11 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/utils.ts @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {assert} from '../../util'; +/** + * Given a non RGBA shape calculate the R version + * It is assumed that the dimensions are multiples of given channels + * NOTE: it is always the last dim that gets packed. + * @param unpackedShape original shape to create a packed version from + */ +export function getPackedShape(unpackedShape: readonly number[]): readonly number[] { + const len = unpackedShape.length; + return unpackedShape.slice(0, len - 1).concat(unpackedShape[len - 1] / 4); +} + +/** + * Generates the function name from an input sampler name. + * @param samplerName Name of the sampler. + */ +export function generateShaderFuncNameFromInputSamplerName(samplerName: string): string { + assert(typeof samplerName !== 'undefined' && samplerName.length !== 0, () => 'empty string found for sampler name'); + return 'get' + samplerName.charAt(0).toUpperCase() + samplerName.slice(1); +} + +/** + * Generates the function name from an input sampler name at output coordinates. + * @param samplerName Name of the sampler. + */ +export function generateShaderFuncNameFromInputSamplerNameAtOutCoords(samplerName: string): string { + assert(typeof samplerName !== 'undefined' && samplerName.length !== 0, () => 'empty string found for sampler name'); + return 'get' + samplerName.charAt(0).toUpperCase() + samplerName.slice(1) + 'AtOutCoords'; +} + +/** Returns a new input shape (a copy) that has a squeezed logical shape. */ +export function squeezeInputShape(inputShape: readonly number[], squeezedShape: number[]): number[] { + // Deep copy. + let newInputShape: number[] = JSON.parse(JSON.stringify(inputShape)); + newInputShape = squeezedShape; + return newInputShape; +} + +/** Returns a list of squeezed parameters for shader functions */ +export function getSqueezedParams(params: string[], keptDims: number[]): string { + return keptDims.map(d => params[d]).join(', '); +} + +/** Returns the data type for different ranks. */ +export function getCoordsDataType(rank: number): string { + if (rank <= 1) { + return 'int'; + } else if (rank === 2) { + return 'ivec2'; + } else if (rank === 3) { + return 'ivec3'; + } else if (rank === 4) { + return 'ivec4'; + } else if (rank === 5) { + return 'ivec5'; + } else if (rank === 6) { + return 'ivec6'; + } else { + throw Error(`GPU for rank ${rank} is not yet supported`); + } +} diff --git a/js/web/lib/onnxjs/backends/webgl/webgl-context-factory.ts b/js/web/lib/onnxjs/backends/webgl/webgl-context-factory.ts new file mode 100644 index 0000000000..4abc9cb7c2 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/webgl-context-factory.ts @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Logger} from '../../instrument'; + +import {WebGLContext} from './webgl-context'; + +const cache: {[contextId: string]: WebGLContext} = {}; + +/** + * This factory function creates proper WebGLRenderingContext based on + * the current browsers capabilities + * The order is from higher/most recent versions to most basic + */ +export function createWebGLContext(contextId?: 'webgl'|'webgl2'): WebGLContext { + let context: WebGLContext|undefined; + if ((!contextId || contextId === 'webgl2') && 'webgl2' in cache) { + context = cache.webgl2; + } else if ((!contextId || contextId === 'webgl') && 'webgl' in cache) { + context = cache.webgl; + } + + context = context || createNewWebGLContext(contextId); + contextId = contextId || context.version === 1 ? 'webgl' : 'webgl2'; + const gl = context.gl; + + cache[contextId] = context; + + if (gl.isContextLost()) { + delete cache[contextId]; + return createWebGLContext(contextId); + } + + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.STENCIL_TEST); + gl.disable(gl.BLEND); + gl.disable(gl.DITHER); + gl.disable(gl.POLYGON_OFFSET_FILL); + gl.disable(gl.SAMPLE_COVERAGE); + gl.enable(gl.SCISSOR_TEST); + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + + return context; +} + +export function createNewWebGLContext(contextId?: 'webgl'|'webgl2'): WebGLContext { + const canvas = createCanvas(); + const contextAttributes: WebGLContextAttributes = { + alpha: false, + depth: false, + antialias: false, + stencil: false, + preserveDrawingBuffer: false, + premultipliedAlpha: false, + failIfMajorPerformanceCaveat: false + }; + let gl: WebGLRenderingContext|null; + const ca = contextAttributes; + if (!contextId || contextId === 'webgl2') { + gl = canvas.getContext('webgl2', ca); + if (gl) { + try { + return new WebGLContext(gl, 2); + } catch (err) { + Logger.warning('GlContextFactory', `failed to create WebGLContext using contextId 'webgl2'. Error: ${err}`); + } + } + } + if (!contextId || contextId === 'webgl') { + gl = canvas.getContext('webgl', ca) || canvas.getContext('experimental-webgl', ca) as WebGLRenderingContext; + if (gl) { + try { + return new WebGLContext(gl, 1); + } catch (err) { + Logger.warning( + 'GlContextFactory', + `failed to create WebGLContext using contextId 'webgl' or 'experimental-webgl'. Error: ${err}`); + } + } + } + + throw new Error('WebGL is not supported'); +} + +function createCanvas(): HTMLCanvasElement { + const canvas: HTMLCanvasElement = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + return canvas; +} diff --git a/js/web/lib/onnxjs/backends/webgl/webgl-context.ts b/js/web/lib/onnxjs/backends/webgl/webgl-context.ts new file mode 100644 index 0000000000..f28910de80 --- /dev/null +++ b/js/web/lib/onnxjs/backends/webgl/webgl-context.ts @@ -0,0 +1,473 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {env} from 'onnxruntime-common'; + +import * as DataEncoders from './texture-data-encoder'; +import {DataEncoder, Encoder} from './texture-data-encoder'; + +/** + * Abstraction and wrapper around WebGLRenderingContext and its operations + */ +export class WebGLContext { + gl: WebGLRenderingContext; + version: 1|2; + + private vertexbuffer: WebGLBuffer; + private framebuffer: WebGLFramebuffer; + + // WebGL flags and vital parameters + private isFloatTextureAttachableToFrameBuffer: boolean; + isFloat32DownloadSupported: boolean; + isRenderFloat32Supported: boolean; + isBlendSupported: boolean; + maxTextureSize: number; + // private maxCombinedTextureImageUnits: number; + private maxTextureImageUnits: number; + // private maxCubeMapTextureSize: number; + // private shadingLanguageVersion: string; + // private webglVendor: string; + // private webglVersion: string; + + // WebGL2 flags and vital parameters + // private max3DTextureSize: number; + // private maxArrayTextureLayers: number; + // private maxColorAttachments: number; + // private maxDrawBuffers: number; + + // WebGL extensions + textureFloatExtension: unknown|null; + // eslint-disable-next-line camelcase + textureHalfFloatExtension: OES_texture_half_float|null; + + // WebGL2 extensions + colorBufferFloatExtension: unknown|null; + + private disposed: boolean; + private frameBufferBound = false; + + constructor(gl: WebGLRenderingContext, version: 1|2) { + this.gl = gl; + this.version = version; + + this.getExtensions(); + this.vertexbuffer = this.createVertexbuffer(); + this.framebuffer = this.createFramebuffer(); + this.queryVitalParameters(); + } + + allocateTexture(width: number, height: number, encoder: DataEncoder, data?: Encoder.DataArrayType): WebGLTexture { + const gl = this.gl; + // create the texture + const texture = gl.createTexture(); + if (!texture) { + throw new Error('failed to create texture'); + } + // bind the texture so the following methods effect this texture. + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + const buffer = data ? encoder.encode(data, width * height) : null; + gl.texImage2D( + gl.TEXTURE_2D, + 0, // Level of detail. + encoder.internalFormat, width, height, + 0, // Always 0 in OpenGL ES. + encoder.format, encoder.textureType, buffer); + this.checkError(); + return texture; + } + updateTexture( + texture: WebGLTexture, width: number, height: number, encoder: DataEncoder, data: Encoder.DataArrayType): void { + const gl = this.gl; + gl.bindTexture(gl.TEXTURE_2D, texture); + const buffer = encoder.encode(data, width * height); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, // level + 0, // xoffset + 0, // yoffset + width, height, encoder.format, encoder.textureType, buffer); + this.checkError(); + } + attachFramebuffer(texture: WebGLTexture, width: number, height: number): void { + const gl = this.gl; + // Make it the target for framebuffer operations - including rendering. + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer); + gl.framebufferTexture2D( + gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, + 0); // 0, we aren't using MIPMAPs + this.checkError(); + gl.viewport(0, 0, width, height); + gl.scissor(0, 0, width, height); + } + readTexture( + texture: WebGLTexture, width: number, height: number, dataSize: number, dataType: Encoder.DataType, + channels: number): Encoder.DataArrayType { + const gl = this.gl; + if (!channels) { + channels = 1; + } + if (!this.frameBufferBound) { + this.attachFramebuffer(texture, width, height); + } + const encoder = this.getEncoder(dataType, channels); + const buffer = encoder.allocate(width * height); + // bind texture to framebuffer + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.framebufferTexture2D( + gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, + 0); // 0, we aren't using MIPMAPs + // TODO: Check if framebuffer is ready + gl.readPixels(0, 0, width, height, gl.RGBA, encoder.textureType, buffer); + this.checkError(); + // unbind FB + return encoder.decode(buffer, dataSize); + } + isFramebufferReady(): boolean { + // TODO: Implement logic to check if the framebuffer is ready + return true; + } + getActiveTexture(): string { + const gl = this.gl; + const n = gl.getParameter(this.gl.ACTIVE_TEXTURE); + return `TEXTURE${(n - gl.TEXTURE0)}`; + } + getTextureBinding(): WebGLTexture { + return this.gl.getParameter(this.gl.TEXTURE_BINDING_2D); + } + getFramebufferBinding(): WebGLFramebuffer { + return this.gl.getParameter(this.gl.FRAMEBUFFER_BINDING); + } + setVertexAttributes(positionHandle: number, textureCoordHandle: number): void { + const gl = this.gl; + gl.vertexAttribPointer(positionHandle, 3, gl.FLOAT, false, 20, 0); + gl.enableVertexAttribArray(positionHandle); + if (textureCoordHandle !== -1) { + gl.vertexAttribPointer(textureCoordHandle, 2, gl.FLOAT, false, 20, 12); + gl.enableVertexAttribArray(textureCoordHandle); + } + this.checkError(); + } + createProgram( + vertexShader: WebGLShader, + fragShader: WebGLShader, + ): WebGLProgram { + const gl = this.gl; + const program = gl.createProgram()!; + + // the program consists of our shaders + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragShader); + gl.linkProgram(program); + return program; + } + compileShader(shaderSource: string, shaderType: number): WebGLShader { + const gl = this.gl; + const shader = gl.createShader(shaderType); + if (!shader) { + throw new Error(`createShader() returned null with type ${shaderType}`); + } + + gl.shaderSource(shader, shaderSource); + gl.compileShader(shader); + if (gl.getShaderParameter(shader, gl.COMPILE_STATUS) === false) { + throw new Error(`Failed to compile shader: ${gl.getShaderInfoLog(shader)}`); + } + return shader; + } + deleteShader(shader: WebGLShader): void { + this.gl.deleteShader(shader); + } + bindTextureToUniform(texture: WebGLTexture, position: number, uniformHandle: WebGLUniformLocation): void { + const gl = this.gl; + gl.activeTexture(gl.TEXTURE0 + position); + this.checkError(); + gl.bindTexture(gl.TEXTURE_2D, texture); + this.checkError(); + gl.uniform1i(uniformHandle, position); + this.checkError(); + } + draw(): void { + this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4); + this.checkError(); + } + checkError(): void { + if (env.debug) { + const gl = this.gl; + const error = gl.getError(); + let label = ''; + switch (error) { + case (gl.NO_ERROR): + return; + case (gl.INVALID_ENUM): + label = 'INVALID_ENUM'; + break; + case (gl.INVALID_VALUE): + label = 'INVALID_VALUE'; + break; + case (gl.INVALID_OPERATION): + label = 'INVALID_OPERATION'; + break; + case (gl.INVALID_FRAMEBUFFER_OPERATION): + label = 'INVALID_FRAMEBUFFER_OPERATION'; + break; + case (gl.OUT_OF_MEMORY): + label = 'OUT_OF_MEMORY'; + break; + case (gl.CONTEXT_LOST_WEBGL): + label = 'CONTEXT_LOST_WEBGL'; + break; + default: + label = `Unknown WebGL Error: ${error.toString(16)}`; + } + throw new Error(label); + } + } + deleteTexture(texture: WebGLTexture): void { + this.gl.deleteTexture(texture); + } + deleteProgram(program: WebGLProgram): void { + this.gl.deleteProgram(program); + } + getEncoder(dataType: Encoder.DataType, channels: number, usage: Encoder.Usage = Encoder.Usage.Default): DataEncoder { + if (this.version === 2) { + return new DataEncoders.RedFloat32DataEncoder(this.gl as WebGL2RenderingContext, channels); + } + + switch (dataType) { + case 'float': + if (usage === Encoder.Usage.UploadOnly || this.isRenderFloat32Supported) { + return new DataEncoders.RGBAFloatDataEncoder(this.gl, channels); + } else { + return new DataEncoders.RGBAFloatDataEncoder( + this.gl, channels, this.textureHalfFloatExtension!.HALF_FLOAT_OES); + } + case 'int': + throw new Error('not implemented'); + case 'byte': + return new DataEncoders.Uint8DataEncoder(this.gl, channels); + default: + throw new Error(`Invalid dataType: ${dataType}`); + } + } + clearActiveTextures(): void { + const gl = this.gl; + for (let unit = 0; unit < this.maxTextureImageUnits; ++unit) { + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, null); + } + } + dispose(): void { + if (this.disposed) { + return; + } + const gl = this.gl; + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.deleteFramebuffer(this.framebuffer); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.deleteBuffer(this.vertexbuffer); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + gl.finish(); + this.disposed = true; + } + + private createDefaultGeometry(): Float32Array { + // Sets of x,y,z(=0),s,t coordinates. + return new Float32Array([ + -1.0, 1.0, 0.0, 0.0, 1.0, // upper left + -1.0, -1.0, 0.0, 0.0, 0.0, // lower left + 1.0, 1.0, 0.0, 1.0, 1.0, // upper right + 1.0, -1.0, 0.0, 1.0, 0.0 // lower right + ]); + } + private createVertexbuffer(): WebGLBuffer { + const gl = this.gl; + const buffer = gl.createBuffer(); + if (!buffer) { + throw new Error('createBuffer() returned null'); + } + const geometry = this.createDefaultGeometry(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, geometry, gl.STATIC_DRAW); + this.checkError(); + return buffer; + } + private createFramebuffer(): WebGLFramebuffer { + const fb = this.gl.createFramebuffer(); + if (!fb) { + throw new Error('createFramebuffer returned null'); + } + return fb; + } + + private queryVitalParameters(): void { + const gl = this.gl; + + this.isFloatTextureAttachableToFrameBuffer = this.checkFloatTextureAttachableToFrameBuffer(); + this.isRenderFloat32Supported = this.checkRenderFloat32(); + this.isFloat32DownloadSupported = this.checkFloat32Download(); + + if (this.version === 1 && !this.textureHalfFloatExtension && !this.isRenderFloat32Supported) { + throw new Error('both float32 and float16 TextureType are not supported'); + } + + this.isBlendSupported = !this.isRenderFloat32Supported || this.checkFloat32Blend(); + + // this.maxCombinedTextureImageUnits = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + this.maxTextureImageUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + // this.maxCubeMapTextureSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE); + // this.shadingLanguageVersion = gl.getParameter(gl.SHADING_LANGUAGE_VERSION); + // this.webglVendor = gl.getParameter(gl.VENDOR); + // this.webglVersion = gl.getParameter(gl.VERSION); + + if (this.version === 2) { + // this.max3DTextureSize = gl.getParameter(WebGL2RenderingContext.MAX_3D_TEXTURE_SIZE); + // this.maxArrayTextureLayers = gl.getParameter(WebGL2RenderingContext.MAX_ARRAY_TEXTURE_LAYERS); + // this.maxColorAttachments = gl.getParameter(WebGL2RenderingContext.MAX_COLOR_ATTACHMENTS); + // this.maxDrawBuffers = gl.getParameter(WebGL2RenderingContext.MAX_DRAW_BUFFERS); + } + } + private getExtensions(): void { + if (this.version === 2) { + this.colorBufferFloatExtension = this.gl.getExtension('EXT_color_buffer_float'); + } else { + this.textureFloatExtension = this.gl.getExtension('OES_texture_float'); + this.textureHalfFloatExtension = this.gl.getExtension('OES_texture_half_float'); + } + } + + private checkFloatTextureAttachableToFrameBuffer(): boolean { + // test whether Float32 texture is supported: + // STEP.1 create a float texture + const gl = this.gl; + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + // eslint-disable-next-line @typescript-eslint/naming-convention + const internalFormat = this.version === 2 ? (gl as unknown as {RGBA32F: number}).RGBA32F : gl.RGBA; + gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, 1, 1, 0, gl.RGBA, gl.FLOAT, null); + // STEP.2 bind a frame buffer + const frameBuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer); + // STEP.3 attach texture to framebuffer + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + // STEP.4 test whether framebuffer is complete + const isComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE; + gl.bindTexture(gl.TEXTURE_2D, null); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.deleteTexture(texture); + gl.deleteFramebuffer(frameBuffer); + return isComplete; + } + + private checkRenderFloat32(): boolean { + if (this.version === 2) { + if (!this.colorBufferFloatExtension) { + return false; + } + } else { + if (!this.textureFloatExtension) { + return false; + } + } + return this.isFloatTextureAttachableToFrameBuffer; + } + + private checkFloat32Download(): boolean { + if (this.version === 2) { + if (!this.colorBufferFloatExtension) { + return false; + } + } else { + if (!this.textureFloatExtension) { + return false; + } + if (!this.gl.getExtension('WEBGL_color_buffer_float')) { + return false; + } + } + return this.isFloatTextureAttachableToFrameBuffer; + } + + /** + * Check whether GL_BLEND is supported + */ + private checkFloat32Blend(): boolean { + // it looks like currently (2019-05-08) there is no easy way to detect whether BLEND is supported + // https://github.com/microsoft/onnxjs/issues/145 + + const gl = this.gl; + + let texture: WebGLTexture|null|undefined; + let frameBuffer: WebGLFramebuffer|null|undefined; + let vertexShader: WebGLShader|null|undefined; + let fragmentShader: WebGLShader|null|undefined; + let program: WebGLProgram|null|undefined; + + try { + texture = gl.createTexture(); + frameBuffer = gl.createFramebuffer(); + gl.bindTexture(gl.TEXTURE_2D, texture); + + // eslint-disable-next-line @typescript-eslint/naming-convention + const internalFormat = this.version === 2 ? (gl as unknown as {RGBA32F: number}).RGBA32F : gl.RGBA; + gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, 1, 1, 0, gl.RGBA, gl.FLOAT, null); + + gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + + gl.enable(gl.BLEND); + + vertexShader = gl.createShader(gl.VERTEX_SHADER); + if (!vertexShader) { + return false; + } + gl.shaderSource(vertexShader, 'void main(){}'); + gl.compileShader(vertexShader); + + fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); + if (!fragmentShader) { + return false; + } + gl.shaderSource(fragmentShader, 'precision highp float;void main(){gl_FragColor=vec4(0.5);}'); + gl.compileShader(fragmentShader); + + program = gl.createProgram(); + if (!program) { + return false; + } + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + gl.linkProgram(program); + gl.useProgram(program); + + gl.drawArrays(gl.POINTS, 0, 1); + return gl.getError() === gl.NO_ERROR; + + } finally { + gl.disable(gl.BLEND); + + if (program) { + gl.deleteProgram(program); + } + if (vertexShader) { + gl.deleteShader(vertexShader); + } + if (fragmentShader) { + gl.deleteShader(fragmentShader); + } + if (frameBuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + gl.deleteFramebuffer(frameBuffer); + } + if (texture) { + gl.bindTexture(gl.TEXTURE_2D, null); + gl.deleteTexture(texture); + } + } + } +} diff --git a/js/web/lib/onnxjs/execution-plan.ts b/js/web/lib/onnxjs/execution-plan.ts new file mode 100644 index 0000000000..3c8c43485a --- /dev/null +++ b/js/web/lib/onnxjs/execution-plan.ts @@ -0,0 +1,163 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {SessionHandler} from './backend'; +import {Graph} from './graph'; +import {Logger, Profiler} from './instrument'; +import {Operator} from './operators'; +import {Tensor} from './tensor'; + +class KernelOp { + constructor(public op: Operator, public node: Graph.Node) {} +} + +export class ExecutionPlan { + constructor(private graph: Graph, ops: Operator[], private profiler: Readonly) { + this.initialize(ops); + } + + initialize(ops: Operator[]) { + this.profiler.event('session', 'ExecutionPlan.initialize', () => { + const graphNodes = this.graph.getNodes(); + if (graphNodes.length !== ops.length) { + throw new Error('The size of nodes and OPs do not match.'); + } + + this._ops = ops.map((op, i) => new KernelOp(op, graphNodes[i])); + this.reset(); + + // look for starter node(s) + this._starter = []; + this._ops.forEach((op, i) => { + let resolved = true; + for (const input of op.node.inputs) { + if ( + !this._values[input] // not an initialized input + && this.graph.getInputIndices().indexOf(input) === -1 // not model input + ) { + resolved = false; + break; + } + } + if (resolved) { + this._starter.push(i); + } + }); + }); + } + + reset() { + this._values = this.graph.getValues().map(i => i.tensor); + } + + async execute(sessionHandler: SessionHandler, modelInputs: Tensor[]): Promise { + return this.profiler.event('session', 'ExecutionPlan.execute', async () => { + // reset mediem result + this.reset(); + + // create inference handler + const inferenceHandler = sessionHandler.createInferenceHandler(); + + // populate inputs value + const graphInputs = this.graph.getInputIndices(); + if (modelInputs.length !== graphInputs.length) { + throw new Error(`number of input tensors don't match the number of inputs to the model: actual: ${ + modelInputs.length} expected: ${graphInputs.length}`); + } + + modelInputs.forEach((input, i) => { + const index = graphInputs[i]; + this._values[index] = input; + }); + + // prepare running sequence + const sequence: number[] = this._starter.slice(0); + + // execution iterations + const graphValues = this.graph.getValues(); + const graphNodes = this.graph.getNodes(); + + let rear = 0; + while (rear < sequence.length) { + const thisOpIndex = sequence[rear++]; + const thisOp = this._ops[thisOpIndex]; + + // check input + const inputList = thisOp.node.inputs.map(i => this._values[i]); + if (inputList.indexOf(undefined) !== -1) { + throw new Error(`unresolved input detected: op: ${thisOp.node}`); + } + + // run + const inputTensors = inputList as Tensor[]; + Logger.verbose( + 'ExecPlan', + `Runing op:${thisOp.node.name} (${ + inputTensors.map((t, i) => `'${thisOp.node.inputs[i]}': ${t.type}[${t.dims.join(',')}]`).join(', ')})`); + + const outputList = await this.profiler.event('node', thisOp.node.name, async () => { + const op = thisOp.op; + if (!op.checkInputs(inputTensors)) { + throw new Error(`invalid inputs detected; op: ${thisOp.node.name}`); + } + + const result = op.run(inferenceHandler, inputTensors); + + return result; + }); + + // check output + if (outputList.length !== thisOp.node.outputs.length) { + throw new Error('the size of output does not match model definition.'); + } + + // fill value + outputList.forEach((output, i) => { + const j = thisOp.node.outputs[i]; + if (this._values[j]) { + throw new Error(`output [${j}] already has value: op:${thisOp.node.name}`); + } + this._values[j] = output; + }); + + // resolve downstream nodes + const downstreamNodes = new Set(); + outputList.forEach((output, i) => { + const j = thisOp.node.outputs[i]; + for (const currentDownstreamNodeIndex of graphValues[j].to) { + const currentDownstreamNode = graphNodes[currentDownstreamNodeIndex]; + let resolved = true; + for (const k of currentDownstreamNode.inputs) { + if (!this._values[k]) { + resolved = false; + break; + } + } + if (resolved) { + downstreamNodes.add(currentDownstreamNodeIndex); + } + } + }); + sequence.push(...downstreamNodes); + } + + const output: Tensor[] = []; + this.graph.getOutputIndices().forEach((outputIndex) => { + const thisValue = this._values[outputIndex]; + if (thisValue === undefined) { + throw new Error(`required output [${outputIndex}] does not have value`); + } + // eslint-disable-next-line no-unused-expressions + thisValue.data; + output.push(thisValue); + }); + Logger.verbose('ExecPlan', 'disposing of inferenceHandler'); + inferenceHandler.dispose(); + return output; + }); + } + + _values: Array; + _ops: KernelOp[]; + _starter: number[]; +} diff --git a/js/web/lib/onnxjs/graph.ts b/js/web/lib/onnxjs/graph.ts new file mode 100644 index 0000000000..d8e2490ede --- /dev/null +++ b/js/web/lib/onnxjs/graph.ts @@ -0,0 +1,553 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {onnx} from 'onnx-proto'; + +import {Attribute} from './attribute'; +import {Tensor} from './tensor'; +import {ProtoUtil} from './util'; + +export declare namespace Graph { + export interface Shape { + readonly dims: readonly number[]; + } + export interface ValueType { + readonly tensorType: Tensor.DataType; + readonly shape: Shape; + } + export interface Value { + // the tensor data. empty for non-initialized inputs + readonly tensor?: Tensor; + + // index to the Node where the value comes from. -1 for initializer. + readonly from: number; + + // indices to the Nodes where the values go to. + readonly to: readonly number[]; + + // value type specification. empty for non-input values. + readonly type?: ValueType; + } + export interface Node { + // name of the node + readonly name: string; + + // the operator type + readonly opType: string; + + // indices to the Values where the inputs come from. + readonly inputs: readonly number[]; + + // indices to the Values where the outpus go to. + readonly outputs: readonly number[]; + + // the attributes that used by the operator + readonly attributes: Attribute; + } + + /** + * a Transformer is an instance that allows all possible transformation operations that applied to a graph + */ + export interface Transformer { + removeAllIdentityNodes(): void; + removeAllDropoutNodes(): void; + // TODO: add generic functions to manipulate the graph + } + + // an initializer can use transformer to transform the graph + export interface Initializer { + transformGraph(transformer: Transformer): void; + } +} + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export interface Graph { + getInputIndices(): readonly number[]; + getInputNames(): readonly string[]; + getOutputIndices(): readonly number[]; + getOutputNames(): readonly string[]; + getValues(): readonly Graph.Value[]; + getNodes(): readonly Graph.Node[]; +} + +// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-redeclare +export const Graph = { + /** + * construct a graph from a graph protobuf type + */ + from: (graphProto: onnx.IGraphProto, initializer?: Graph.Initializer) => new GraphImpl(graphProto, initializer) +}; + +class Value implements Graph.Value { + constructor(valueInfo?: onnx.IValueInfoProto) { + this._from = undefined; + this._to = []; + this.tensor = undefined; + this.type = undefined; + + if (valueInfo) { + this.type = ProtoUtil.tensorValueTypeFromProto(valueInfo.type!.tensorType!); + } + } + + _from?: number; // -1 represent from initializer + get from() { + return this._from!; + } + _to: number[]; + get to() { + return this._to; + } + type?: Graph.ValueType; + tensor?: Tensor; +} + +class Node implements Graph.Node { + constructor(_nodeProto: onnx.INodeProto) { + this.name = _nodeProto.name!; + this.opType = _nodeProto.opType!; + this.inputs = []; + this.outputs = []; + this.attributes = new Attribute(_nodeProto.attribute); + this.executeNode = true; + } + + name: string; + opType: string; + inputs: number[]; + outputs: number[]; + attributes: Attribute; + executeNode: boolean; +} + +class GraphImpl implements Graph, Graph.Transformer { + private _allData: Value[]; + + private _allInputIndices: number[]; + private _allInputNames: string[]; + + private _allOutputIndices: number[]; + private _allOutputNames: string[]; + + private _nodes: Node[]; + + constructor(graph: onnx.IGraphProto, graphInitializer?: Graph.Initializer) { + if (!graph) { + throw new TypeError('graph is empty'); + } + + // build the graph - will throw exceptions if something fatal is detected + this.buildGraph(graph); + + // execute any transformation logic for the graph (if applicable) + this.transformGraph(graphInitializer); + + // check for cycles and other inconsistencies - will throw exceptions if something fatal is detected + this.checkIsAcyclic(); + } + + getInputIndices(): readonly number[] { + return this._allInputIndices; + } + + getInputNames(): readonly string[] { + return this._allInputNames; + } + + getOutputIndices(): readonly number[] { + return this._allOutputIndices; + } + + getOutputNames(): readonly string[] { + return this._allOutputNames; + } + + getValues(): readonly Graph.Value[] { + return this._allData; + } + + getNodes(): readonly Graph.Node[] { + return this._nodes; + } + + private buildGraph(graph: onnx.IGraphProto) { + const dataIndices = new Map(); + this._allData = []; + + this._allInputIndices = []; + this._allInputNames = []; + + this._allOutputIndices = []; + this._allOutputNames = []; + + this._nodes = []; + + const nodesIndices = new Map(); + + // scan all inputs + if (!graph.input) { + throw new Error('missing information in graph: input'); + } + const inputValueNames = []; + for (const i of graph.input) { + if (dataIndices.has(i.name!)) { + throw new Error(`duplicated input name: ${i.name}`); + } + const currentIndex = this._allData.push(new Value(i)) - 1; + dataIndices.set(i.name!, currentIndex); + inputValueNames.push(i.name!); + } + + // scan all initializers + if (!graph.initializer) { + throw new Error('missing information in graph: initializer'); + } + for (const i of graph.initializer) { + let index = dataIndices.get(i.name!); + if (index === undefined) { + const value = new Value(); + value.type = { + shape: {dims: ProtoUtil.tensorDimsFromProto(i.dims!)}, + tensorType: ProtoUtil.tensorDataTypeFromProto(i.dataType!) + }; + index = this._allData.push(value) - 1; + dataIndices.set(i.name!, index); + } + this._allData[index]._from = -1; + this._allData[index].tensor = Tensor.fromProto(i); + } + + // filter out input indices + for (let i = 0; i < this._allData.length; i++) { + if (!this._allData[i].tensor) { + this._allInputIndices.push(i); + this._allInputNames.push(inputValueNames[i]); + } + } + + // scan all outputs + if (!graph.output) { + throw new Error('missing information in graph: output'); + } + for (const i of graph.output) { + if (dataIndices.has(i.name!)) { + throw new Error(`duplicated output name: ${i.name}`); + } + const currentIndex = this._allData.push(new Value(i)) - 1; + dataIndices.set(i.name!, currentIndex); + this._allOutputIndices.push(currentIndex); + this._allOutputNames.push(i.name!); + } + + // scan all nodes + if (!graph.node) { + throw new Error('missing information in graph: node'); + } + for (const nodeProto of graph.node) { + if (!nodeProto.name) { + // assign a name to the node if it doesn't have one + for (let pick = 0;; pick++) { + const name = `unnamed_${nodeProto.opType}_${pick}`; + if (!nodesIndices.has(name)) { + nodeProto.name = name; + break; + } + } + } + + if (nodesIndices.has(nodeProto.name)) { + throw new Error(`duplicated node name: ${nodeProto.name}`); + } + const currentIndex = this._nodes.push(new Node(nodeProto)) - 1; + nodesIndices.set(nodeProto.name, currentIndex); + } + + // scan node's outputs + for (let i = 0; i < this._nodes.length; i++) { + const node = this._nodes[i]; + const nodeProto = graph.node[i]; + if (!nodeProto.output) { + throw new Error(`missing output for node: ${nodeProto.name}`); + } + for (const output of nodeProto.output) { + let dataIndex = dataIndices.get(output); + if (typeof dataIndex === 'undefined') { + dataIndex = this._allData.push(new Value()) - 1; + dataIndices.set(output, dataIndex); + } + node.outputs.push(dataIndex); + + if (this._allData[dataIndex]._from !== undefined) { + throw new Error(`multiple nodes output to one data value: ${dataIndex}`); + } + this._allData[dataIndex]._from = i; + + // for the 'Constant' operator, just create a new edge in the graph corresponding to the 'output' of the + // operator and ignore the node from the graph + if (nodeProto.opType === 'Constant') { + if (!nodeProto.attribute || nodeProto.attribute.length !== 1 || !nodeProto.attribute[0].t) { + throw new Error('missing attributes or missing tensor value in attributes for this Constant operator'); + } + if (!nodeProto.output || nodeProto.output.length !== 1) { + throw new Error('missing output or incorrect number of outputs for this Constant operator'); + } + node.outputs.pop(); + node.executeNode = false; + + this._allData[dataIndex]._from = -1; + this._allData[dataIndex].tensor = Tensor.fromProto(nodeProto.attribute[0].t); + } + } + } + + // scan node's inputs + for (let i = 0; i < this._nodes.length; i++) { + const node = this._nodes[i]; + const nodeProto = graph.node[i]; + + if (!nodeProto.input) { + throw new Error(`missing input for node: ${nodeProto.name}`); + } + for (const input of nodeProto.input) { + const dataIndex = dataIndices.get(input); + if (typeof dataIndex === 'undefined') { + throw new Error(`unrecognized input '${input}' for node: ${nodeProto.name}`); + } + node.inputs.push(dataIndex); + + this._allData[dataIndex]._to.push(i); + } + } + + return true; + } + + private checkIsAcyclic() { + // go through the graph and check for cycles or other fatal inconsistencies + const starters: Set = new Set(); + this._allInputIndices.forEach(i => { + const data = this._allData[i]; + data._to.forEach(j => { + starters.add(j); + }); + }); + + // Iterative DFS to check for cycles + const nodesStack = Array.from(starters); + const nodesState = new Array(this._nodes.length).fill('white'); + + while (nodesStack.length > 0) { + const nodeIndex = nodesStack.pop()!; + // this node has now been processed completely. Mark this node 'black' to denote this. + if (nodesState[nodeIndex] === 'gray') { + nodesState[nodeIndex] = 'black'; + } else { + // this node is under processing stage. mark this node 'gray' to denote this. + nodesStack.push(nodeIndex); + nodesState[nodeIndex] = 'gray'; + + this._nodes[nodeIndex].outputs.forEach((outgoingEdgeIndex) => { + const data = this._allData[outgoingEdgeIndex]; + if (typeof data.tensor !== 'undefined') { + throw new Error('node outputs should not be initialized'); + } + if (data._from !== nodeIndex) { + throw new Error('from property of the Value object doesn\'t match index of Node being processed'); + } + data._to.forEach((downstreamNodeIndex) => { + // back edge found - cyclic + if (nodesState[downstreamNodeIndex] === 'gray') { + throw new Error('model graph is cyclic'); + } + // tree edge found - continue processing by adding it to stack + else if (nodesState[downstreamNodeIndex] === 'white') { + nodesStack.push(downstreamNodeIndex); + } + }); + }); + } + } + } + + private transformGraph(graphInitializer?: Graph.Initializer): void { + // apply common transform + this.removeAllIdentityNodes(); + this.removeAllDropoutNodes(); + + // apply initializer specific transform + if (graphInitializer) { + graphInitializer.transformGraph(this); + } + + // finalize graph + this.finalizeGraph(); + } + + /** + * finalize the graph. + * + * this function should be called after all the transformation completed. + * this function removes all unnecessary nodes and values from the graph + */ + finalizeGraph() { + let offset = 0; + // delete all nodes that are not being executed + for (let i = 0; i < this._nodes.length; i++) { + if (!this._nodes[i].executeNode) { + // delete this node and shift all subsequent nodes up + offset++; + // delete all output values + this._nodes[i].outputs.forEach(ind => { + this._allData[ind]._from = -2; + }); + this._nodes.splice(i, 1); + i--; + continue; + } + if (offset > 0) { + // update the value table + this._nodes[i].inputs.forEach(value => { + const ind = this._allData[value]._to.indexOf(i + offset); + if (ind !== -1) { + this._allData[value]._to[ind] = i; + } + }); + this._nodes[i].outputs.forEach(value => { + if (this._allData[value]._from && this._allData[value]._from! === i + offset) { + this._allData[value]._from = i; + } + }); + } + } + offset = 0; + // delete all values that are not being referenced + for (let i = 0; i < this._allData.length; i++) { + // if current value is neither linked to next node, nor an output value, remove it. + if (this._allData[i].from === -2 && this._allOutputIndices.indexOf(i + offset) === -1) { + offset++; + this._allData.splice(i, 1); + i--; + continue; + } + if (offset > 0) { + let ind = -1; + // if current value is neither an input value nor an initializer, find the node it's + // coming from and update the corresponding node output + if (this._allData[i].from !== undefined && this._allData[i].from !== -1) { + ind = this._nodes[this._allData[i].from].outputs.indexOf(i + offset); + if (ind !== -1) { + this._nodes[this._allData[i].from].outputs[ind] = i; + } + } else { + // if current value is an input value, update its reference in inputIndices + ind = this._allInputIndices.indexOf(i + offset); + if (ind !== -1) { + this._allInputIndices[ind] = i; + } + } + + // find the node that the current value is linking to and update its input reference + this._allData[i].to.forEach(node => { + ind = this._nodes[node].inputs.indexOf(i + offset); + if (ind !== -1) { + this._nodes[node].inputs[ind] = i; + } + }); + if (this._allData[i].to.length === 0) { + // if current value is a graph output, update its reference in outputIndices + ind = this._allOutputIndices.indexOf(i + offset); + if (ind !== -1) { + this._allOutputIndices[ind] = i; + } + } + } + } + } + + /** + * Delete the specifed node. Assume the node has only one input and the first output connected to other nodes + * @param nodeIndex The index of node to be deleted + */ + private deleteNode(nodeIndex: number) { + const node = this._nodes[nodeIndex]; + if (node.inputs.length > 1) { + throw new Error('Node deletion with multiple inputs is not supported. '); + } + if (node.outputs.length > 1) { + for (let i = 1; i < node.outputs.length; i++) { + if (this._allData[node.outputs[i]].to.length > 0) { + throw new Error('Node deletion with more than one output connected to other nodes is not supported. '); + } + } + } + + // this node wil not be executed + node.executeNode = false; + const inputValueIndex = node.inputs[0]; + const outputValueIndex = node.outputs[0]; + const nodesConsumingOutput = this._allData[outputValueIndex].to; + + // remove this node from the to property of the input Value + const delIndex = this._allData[inputValueIndex].to.indexOf(nodeIndex); + // should not happen + if (delIndex === -1) { + throw new Error('The Value object doesn\'t have the current Node in it\'s \'to\' property '); + } + this._allData[inputValueIndex].to.splice(delIndex, 1); + + // clear node indices consuming this output Value + this._allData[outputValueIndex]._to = []; + + // if the output of this node is a graph output, adjust the index appropriately + const index = this._allOutputIndices.indexOf(outputValueIndex); + if (index !== -1) { + this._allOutputIndices[index] = inputValueIndex; + } + + // override the inputs for nodes consuming this node's output with the input to this node + if (nodesConsumingOutput && nodesConsumingOutput.length > 0) { + for (const nodeIndex of nodesConsumingOutput) { + const replaceIndex = this._nodes[nodeIndex].inputs.indexOf(outputValueIndex); + // should not happen + if (replaceIndex === -1) { + throw new Error('The Node object doesn\'t have the output Value in it\'s \'inputs\' property '); + } + this._nodes[nodeIndex].inputs[replaceIndex] = inputValueIndex; + this._allData[inputValueIndex].to.push(nodeIndex); + } + } + } + + removeAllDropoutNodes() { + let nodeIndex = 0; + for (const node of this._nodes) { + // weed out 'Dropout' nodes so that no time is wasted in execution + if (node.opType === 'Dropout') { + // the node should have exactly 1 input and 1 or 2 outputs + if (node.inputs.length !== 1) { + throw new Error('Dropout nodes should only contain one input. '); + } + if (node.outputs.length !== 1 && node.outputs.length !== 2) { + throw new Error('Dropout nodes should contain either 1 or 2 output(s)'); + } + // the second output should not be referenced by any other node + if (node.outputs.length === 2 && this._allData[node.outputs[1]]._to.length !== 0) { + throw new Error('Dropout nodes\'s second output should not be referenced by other nodes'); + } + this.deleteNode(nodeIndex); + } + nodeIndex++; + } + } + + removeAllIdentityNodes() { + let nodeIndex = 0; + for (const node of this._nodes) { + // weed out 'Identity' nodes so that no time is wasted in execution + if (node.opType === 'Identity') { + this.deleteNode(nodeIndex); + } + nodeIndex++; + } + } +} diff --git a/js/web/lib/onnxjs/instrument.ts b/js/web/lib/onnxjs/instrument.ts new file mode 100644 index 0000000000..98c52d993c --- /dev/null +++ b/js/web/lib/onnxjs/instrument.ts @@ -0,0 +1,386 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +export declare namespace Logger { + export interface SeverityTypeMap { + verbose: 'v'; + info: 'i'; + warning: 'w'; + error: 'e'; + } + + export type Severity = keyof SeverityTypeMap; + + export type Provider = 'none'|'console'; + + /** + * Logging config that used to control the behavior of logger + */ + export interface Config { + /** + * Specify the logging provider. 'console' by default + */ + provider?: Provider; + /** + * Specify the minimal logger serverity. 'info' by default + */ + minimalSeverity?: Logger.Severity; + /** + * Whether to output date time in log. true by default + */ + logDateTime?: boolean; + /** + * Whether to output source information (Not yet supported). false by default + */ + logSourceLocation?: boolean; + } + + export interface CategorizedLogger { + verbose(content: string): void; + info(content: string): void; + warning(content: string): void; + error(content: string): void; + } +} + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export interface Logger { + (category: string): Logger.CategorizedLogger; + + verbose(content: string): void; + verbose(category: string, content: string): void; + info(content: string): void; + info(category: string, content: string): void; + warning(content: string): void; + warning(category: string, content: string): void; + error(content: string): void; + error(category: string, content: string): void; + + /** + * Reset the logger configuration. + * @param config specify an optional default config + */ + reset(config?: Logger.Config): void; + /** + * Set the logger's behavior on the given category + * @param category specify a category string. If '*' is specified, all previous configuration will be overwritten. If + * '' is specified, the default behavior will be updated. + * @param config the config object to indicate the logger's behavior + */ + set(category: string, config: Logger.Config): void; +} + +interface LoggerProvider { + log(severity: Logger.Severity, content: string, category?: string): void; +} +class NoOpLoggerProvider implements LoggerProvider { + log(_severity: Logger.Severity, _content: string, _category?: string) { + // do nothing + } +} +class ConsoleLoggerProvider implements LoggerProvider { + log(severity: Logger.Severity, content: string, category?: string) { + // eslint-disable-next-line no-console + console.log(`${this.color(severity)} ${category ? '\x1b[35m' + category + '\x1b[0m ' : ''}${content}`); + } + + private color(severity: Logger.Severity) { + switch (severity) { + case 'verbose': + return '\x1b[34;40mv\x1b[0m'; + case 'info': + return '\x1b[32mi\x1b[0m'; + case 'warning': + return '\x1b[30;43mw\x1b[0m'; + case 'error': + return '\x1b[31;40me\x1b[0m'; + default: + throw new Error(`unsupported severity: ${severity}`); + } + } +} + +const SEVERITY_VALUE = { + verbose: 1000, + info: 2000, + warning: 4000, + error: 5000 +}; + +const LOGGER_PROVIDER_MAP: {readonly [provider: string]: Readonly} = { + ['none']: new NoOpLoggerProvider(), + ['console']: new ConsoleLoggerProvider() +}; +const LOGGER_DEFAULT_CONFIG = { + provider: 'console', + minimalSeverity: 'info', + logDateTime: true, + logSourceLocation: false +}; +let LOGGER_CONFIG_MAP: + {[category: string]: Readonly>} = {['']: LOGGER_DEFAULT_CONFIG as Required}; + +function log(category: string): Logger.CategorizedLogger; +function log(severity: Logger.Severity, content: string): void; +function log(severity: Logger.Severity, category: string, content: string): void; +function log(severity: Logger.Severity, arg1: string, arg2?: string): void; +function log( + arg0: string|Logger.Severity, arg1?: string, arg2?: string|number, arg3?: number): Logger.CategorizedLogger|void { + if (arg1 === undefined) { + // log(category: string): Logger.CategorizedLogger; + return createCategorizedLogger(arg0); + } else if (arg2 === undefined) { + // log(severity, content); + logInternal(arg0 as Logger.Severity, arg1, 1); + } else if (typeof arg2 === 'number' && arg3 === undefined) { + // log(severity, content, stack) + logInternal(arg0 as Logger.Severity, arg1, arg2); + } else if (typeof arg2 === 'string' && arg3 === undefined) { + // log(severity, category, content) + logInternal(arg0 as Logger.Severity, arg2, 1, arg1); + } else if (typeof arg2 === 'string' && typeof arg3 === 'number') { + // log(severity, category, content, stack) + logInternal(arg0 as Logger.Severity, arg2, arg3, arg1); + } else { + throw new TypeError('input is valid'); + } +} + +function createCategorizedLogger(category: string): Logger.CategorizedLogger { + return { + verbose: log.verbose.bind(null, category), + info: log.info.bind(null, category), + warning: log.warning.bind(null, category), + error: log.error.bind(null, category) + }; +} + +// NOTE: argument 'category' is put the last parameter beacause typescript +// doesn't allow optional argument put in front of required argument. This +// order is different from a usual logging API. +function logInternal(severity: Logger.Severity, content: string, stack: number, category?: string) { + const config = LOGGER_CONFIG_MAP[category || ''] || LOGGER_CONFIG_MAP['']; + if (SEVERITY_VALUE[severity] < SEVERITY_VALUE[config.minimalSeverity]) { + return; + } + + if (config.logDateTime) { + content = `${new Date().toISOString()}|${content}`; + } + + if (config.logSourceLocation) { + // TODO: calculate source location from 'stack' + } + + LOGGER_PROVIDER_MAP[config.provider].log(severity, content, category); +} + +// eslint-disable-next-line @typescript-eslint/no-namespace +namespace log { + export function verbose(content: string): void; + export function verbose(category: string, content: string): void; + export function verbose(arg0: string, arg1?: string) { + log('verbose', arg0, arg1); + } + export function info(content: string): void; + export function info(category: string, content: string): void; + export function info(arg0: string, arg1?: string) { + log('info', arg0, arg1); + } + export function warning(content: string): void; + export function warning(category: string, content: string): void; + export function warning(arg0: string, arg1?: string) { + log('warning', arg0, arg1); + } + export function error(content: string): void; + export function error(category: string, content: string): void; + export function error(arg0: string, arg1?: string) { + log('error', arg0, arg1); + } + + export function reset(config?: Logger.Config): void { + LOGGER_CONFIG_MAP = {}; + // tslint:disable-next-line:no-backbone-get-set-outside-model + set('', config || {}); + } + export function set(category: string, config: Logger.Config): void { + if (category === '*') { + reset(config); + } else { + const previousConfig = LOGGER_CONFIG_MAP[category] || LOGGER_DEFAULT_CONFIG; + LOGGER_CONFIG_MAP[category] = { + provider: config.provider || previousConfig.provider, + minimalSeverity: config.minimalSeverity || previousConfig.minimalSeverity, + logDateTime: (config.logDateTime === undefined) ? previousConfig.logDateTime : config.logDateTime, + logSourceLocation: (config.logSourceLocation === undefined) ? previousConfig.logSourceLocation : + config.logSourceLocation + }; + } + + // TODO: we want to support wildcard or regex? + } +} + +// eslint-disable-next-line @typescript-eslint/no-redeclare, @typescript-eslint/naming-convention +export const Logger: Logger = log; + +export declare namespace Profiler { + export interface Config { + maxNumberEvents?: number; + flushBatchSize?: number; + flushIntervalInMilliseconds?: number; + } + + export type EventCategory = 'session'|'node'|'op'|'backend'; + + export interface Event { + end(): void; + } +} + +class Event implements Profiler.Event { + constructor( + public category: Profiler.EventCategory, public name: string, public startTime: number, + private endCallback: (e: Event) => void) {} + + end() { + this.endCallback(this); + } +} + +class EventRecord { + constructor( + public category: Profiler.EventCategory, public name: string, public startTime: number, public endTime: number) {} +} + +export class Profiler { + static create(config?: Profiler.Config): Profiler { + if (config === undefined) { + return new this(); + } + return new this(config.maxNumberEvents, config.flushBatchSize, config.flushIntervalInMilliseconds); + } + + private constructor(maxNumberEvents?: number, flushBatchSize?: number, flushIntervalInMilliseconds?: number) { + this._started = false; + this._maxNumberEvents = maxNumberEvents === undefined ? 10000 : maxNumberEvents; + this._flushBatchSize = flushBatchSize === undefined ? 10 : flushBatchSize; + this._flushIntervalInMilliseconds = flushIntervalInMilliseconds === undefined ? 5000 : flushIntervalInMilliseconds; + } + + // start profiling + start() { + this._started = true; + this._timingEvents = []; + this._flushTime = now(); + this._flushPointer = 0; + } + + // stop profiling + stop() { + this._started = false; + for (; this._flushPointer < this._timingEvents.length; this._flushPointer++) { + this.logOneEvent(this._timingEvents[this._flushPointer]); + } + } + + // create an event scope for the specific function + event(category: Profiler.EventCategory, name: string, func: () => T): T; + event(category: Profiler.EventCategory, name: string, func: () => Promise): Promise; + + event(category: Profiler.EventCategory, name: string, func: () => T | Promise): T|Promise { + const event = this._started ? this.begin(category, name) : undefined; + let isPromise = false; + + try { + const res = func(); + + // we consider a then-able object is a promise + if (res && typeof (res as Promise).then === 'function') { + isPromise = true; + return new Promise((resolve, reject) => { + (res as Promise) + .then( + value => { // fulfilled + resolve(value); + if (event) { + event.end(); + } + }, + reason => { // rejected + reject(reason); + if (event) { + event.end(); + } + }); + }); + } + + return res; + + } finally { + if (!isPromise && event) { + event.end(); + } + } + } + + // begin an event + begin(category: Profiler.EventCategory, name: string): Event { + if (!this._started) { + throw new Error('profiler is not started yet'); + } + const startTime = now(); + this.flush(startTime); + return new Event(category, name, startTime, e => this.end(e)); + } + + // end the specific event + private end(event: Event) { + if (this._timingEvents.length < this._maxNumberEvents) { + const endTime = now(); + this._timingEvents.push(new EventRecord(event.category, event.name, event.startTime, endTime)); + this.flush(endTime); + } + } + + private logOneEvent(event: EventRecord) { + Logger.verbose( + `Profiler.${event.category}`, + `${(event.endTime - event.startTime).toFixed(2)}ms on event '${event.name}' at ${event.endTime.toFixed(2)}`); + } + + private flush(currentTime: number) { + if (this._timingEvents.length - this._flushPointer >= this._flushBatchSize || + currentTime - this._flushTime >= this._flushIntervalInMilliseconds) { + // should flush when either batch size accumlated or interval elepsed + + for (const previousPointer = this._flushPointer; this._flushPointer < previousPointer + this._flushBatchSize && + this._flushPointer < this._timingEvents.length; + this._flushPointer++) { + this.logOneEvent(this._timingEvents[this._flushPointer]); + } + + this._flushTime = now(); + } + } + + get started() { + return this._started; + } + private _started = false; + private _timingEvents: EventRecord[]; + + private readonly _maxNumberEvents: number; + + private readonly _flushBatchSize: number; + private readonly _flushIntervalInMilliseconds: number; + + private _flushTime: number; + private _flushPointer = 0; +} + +/** + * returns a number to represent the current timestamp in a resolution as high as possible. + */ +export const now = (typeof performance !== 'undefined' && performance.now) ? () => performance.now() : Date.now; diff --git a/js/web/lib/onnxjs/model.ts b/js/web/lib/onnxjs/model.ts new file mode 100644 index 0000000000..ac1e20dc9e --- /dev/null +++ b/js/web/lib/onnxjs/model.ts @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {onnx} from 'onnx-proto'; + +import {Graph} from './graph'; +import {OpSet} from './opset'; +import {LongUtil} from './util'; + +export class Model { + // empty model + constructor() {} + + load(buf: Uint8Array, graphInitializer?: Graph.Initializer): void { + const modelProto = onnx.ModelProto.decode(buf); + const irVersion = LongUtil.longToNumber(modelProto.irVersion); + if (irVersion < 3) { + throw new Error('only support ONNX model with IR_VERSION>=3'); + } + + this._opsets = + modelProto.opsetImport.map(i => ({domain: i.domain as string, version: LongUtil.longToNumber(i.version!)})); + + this._graph = Graph.from(modelProto.graph!, graphInitializer); + } + + private _graph: Graph; + get graph(): Graph { + return this._graph; + } + + private _opsets: OpSet[]; + get opsets(): readonly OpSet[] { + return this._opsets; + } +} diff --git a/js/web/lib/onnxjs/operators.ts b/js/web/lib/onnxjs/operators.ts new file mode 100644 index 0000000000..945d2d105c --- /dev/null +++ b/js/web/lib/onnxjs/operators.ts @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from './attribute'; +import {InferenceHandler} from './backend'; +import {Graph} from './graph'; +import {Tensor} from './tensor'; + +export interface Operator { + initialize(attributes: Attribute, node: Graph.Node, graph: Graph): void; + checkInputs(inputs: Tensor[]): boolean; + run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; +} + +export const NUMBER_TYPES: readonly Tensor.DataType[] = + ['float32', 'float64', 'int32', 'int16', 'int8', 'uint16', 'uint32', 'uint8']; +export const INT_TYPES: readonly Tensor.DataType[] = ['int32', 'int16', 'int8', 'uint16', 'uint32', 'uint8']; +export const FLOAT_TYPES: readonly Tensor.DataType[] = ['float32', 'float64']; diff --git a/js/web/lib/onnxjs/ops/argMax.ts b/js/web/lib/onnxjs/ops/argMax.ts new file mode 100644 index 0000000000..56aa785093 --- /dev/null +++ b/js/web/lib/onnxjs/ops/argMax.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class ArgMax implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axis = attributes.getInt('axis', 0); + this.keepDims = attributes.getInt('keepdims', 1) === 1; + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + + return true; + } + + protected axis: number; + protected keepDims: boolean; +} diff --git a/js/web/lib/onnxjs/ops/batch-normalization.ts b/js/web/lib/onnxjs/ops/batch-normalization.ts new file mode 100644 index 0000000000..d7b1275d6b --- /dev/null +++ b/js/web/lib/onnxjs/ops/batch-normalization.ts @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +// currently this operator supports ONLY 'test' mode +// inputs/outputs and parameters will reflect that +// the operator implementation only supports test mode +export abstract class BatchNormalization implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.epsilon = attributes.getFloat('epsilon', 1e-5); + this.momentum = attributes.getFloat('momentum', 0.9); + this.spatial = attributes.getInt('spatial', 1); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 5) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + const X = inputs[0]; + const scale = inputs[1]; + const B = inputs[2]; + const mean = inputs[3]; + const var_ = inputs[4]; + + // input should atleast have three dimensions - N,C,dim1,...,dimn + // other inputs can have only one dimensions + if (X.dims.length < 3 || scale.dims.length !== 1 || B.dims.length !== 1 || mean.dims.length !== 1 || + var_.dims.length !== 1) { + return false; + } + if (scale.dims[0] !== X.dims[1] || B.dims[0] !== X.dims[1] || mean.dims[0] !== X.dims[1] || + var_.dims[0] !== X.dims[1]) { + return false; + } + if ((X.type !== 'float32' && X.type !== 'float64') || (scale.type !== 'float32' && scale.type !== 'float64') || + (B.type !== 'float32' && B.type !== 'float64') || (mean.type !== 'float32' && mean.type !== 'float64') || + (var_.type !== 'float32' && var_.type !== 'float64')) { + return false; + } + return true; + } + + protected epsilon: number; + protected momentum: number; + protected spatial: number; +} diff --git a/js/web/lib/onnxjs/ops/binary-op.ts b/js/web/lib/onnxjs/ops/binary-op.ts new file mode 100644 index 0000000000..35c95a7d06 --- /dev/null +++ b/js/web/lib/onnxjs/ops/binary-op.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class BinaryOp implements Operator { + constructor( + protected typeConstraint: readonly Tensor.DataType[], protected opType?: string, + protected resultType?: Tensor.DataType) {} + + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (this.typeConstraint.indexOf(inputs[0].type) === -1) { + return false; + } + if (inputs[0].type !== inputs[1].type) { + return false; + } + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/cast.ts b/js/web/lib/onnxjs/ops/cast.ts new file mode 100644 index 0000000000..115dc02a75 --- /dev/null +++ b/js/web/lib/onnxjs/ops/cast.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; +import {ProtoUtil} from '../util'; + +export abstract class Cast implements Operator { + protected to: Tensor.DataType; + + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.to = ProtoUtil.tensorDataTypeFromProto(attributes.getInt('to')); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type === 'string') { + return false; + } + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/clip.ts b/js/web/lib/onnxjs/ops/clip.ts new file mode 100644 index 0000000000..411e698f64 --- /dev/null +++ b/js/web/lib/onnxjs/ops/clip.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Clip implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.min = attributes.getFloat('min', -3.4028234663852886e+38); + this.max = attributes.getFloat('max', 3.4028234663852886e+38); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected min: number; + protected max: number; +} diff --git a/js/web/lib/onnxjs/ops/concat.ts b/js/web/lib/onnxjs/ops/concat.ts new file mode 100644 index 0000000000..7308a563cc --- /dev/null +++ b/js/web/lib/onnxjs/ops/concat.ts @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Concat implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axis = attributes.getInt('axis'); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length < 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + const inputType = inputs[0].type; + const inputDimensionality = inputs[0].dims.length; + + // TODO: Support string concat + if (inputType === 'string') { + return false; + } + + for (const input of inputs) { + // make sure types of all inputs match + if (input.type !== inputType) { + return false; + } + + // make sure the dimensionality of all inputs are the same + if (input.dims.length !== inputDimensionality) { + return false; + } + } + + return true; + } + + protected axis: number; +} diff --git a/js/web/lib/onnxjs/ops/conv.ts b/js/web/lib/onnxjs/ops/conv.ts new file mode 100644 index 0000000000..d96c0b690e --- /dev/null +++ b/js/web/lib/onnxjs/ops/conv.ts @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Conv implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + // TODO : Make this generic enough to compute default attributes for multi-dimensional conv + this.autoPad = attributes.getString('auto_pad', 'NOTSET'); + this.dilations = attributes.getInts('dilations', [1, 1]); + this.group = attributes.getInt('group', 1); + this.kernelShape = attributes.getInts('kernel_shape', []); + this.pads = attributes.getInts('pads', [0, 0, 0, 0]); + this.strides = attributes.getInts('strides', [1, 1]); + } + + checkInputs(inputs: Tensor[]): boolean { + // Refer to the below link for all input checks + // https://github.com/onnx/onnx/blob/master/docs/Operators.md#Conv + if (!inputs || (inputs.length !== 2 && inputs.length !== 3)) { + return false; + } + + // TODO : Need to add support for multi-dimensional conv + // currently only support 2-dimensional conv + if (inputs[0].dims.length !== 4 || inputs[1].dims.length !== 4) { + return false; + } + + // FILTER_IN_CHANNEL should be equal to DATA_CHANNEL + const dataChannel = inputs[0].dims[1]; + const filterInChannel = inputs[1].dims[1] * this.group; + if (dataChannel !== filterInChannel) { + return false; + } + + // if bias is provided it should be 1D and the number of elements should be equal to the number of feature maps + if (inputs.length === 3 && (inputs[2].dims.length !== 1 || inputs[1].dims[0] !== inputs[2].dims[0])) { + return false; + } + + const spatialRank = inputs[0].dims.length - 2; + // wrong dilations dimension + if (this.dilations.length !== spatialRank) { + return false; + } + + // Wrong strides dimension + if (this.strides.length !== spatialRank) { + return false; + } + + // Wrong pads dimension + if (this.pads.length !== spatialRank * 2) { + return false; + } + + // if kernelShape is specified, it's data length must be 2 less than dims length of the weights tensor + // (the first 2 dims are batch_size and channels) + if (this.kernelShape.length !== 0 && this.kernelShape.length !== inputs[1].dims.length - 2) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + // TODO : Need to add support for float64 + if (inputs[0].type !== 'float32' || inputs[1].type !== 'float32') { + return false; + } + + if (inputs.length === 3 && inputs[2].type !== 'float32') { + return false; + } + + return true; + } + + protected autoPad: string; + protected dilations: number[]; + protected group: number; + protected kernelShape: number[]; + protected pads: number[]; + protected strides: number[]; +} diff --git a/js/web/lib/onnxjs/ops/dropout.ts b/js/web/lib/onnxjs/ops/dropout.ts new file mode 100644 index 0000000000..9b00c4dc2f --- /dev/null +++ b/js/web/lib/onnxjs/ops/dropout.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Dropout implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.ratio = attributes.getFloat('ratio', 0.5); + this.testMode = true; // this is a hack to reflect that test mode is hardcoded + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected ratio: number; + protected testMode: boolean; +} diff --git a/js/web/lib/onnxjs/ops/elu.ts b/js/web/lib/onnxjs/ops/elu.ts new file mode 100644 index 0000000000..492f5f8705 --- /dev/null +++ b/js/web/lib/onnxjs/ops/elu.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Elu implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.alpha = attributes.getFloat('alpha', 1.0); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected alpha: number; +} diff --git a/js/web/lib/onnxjs/ops/expand.ts b/js/web/lib/onnxjs/ops/expand.ts new file mode 100644 index 0000000000..b9ba860b5a --- /dev/null +++ b/js/web/lib/onnxjs/ops/expand.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Expand implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + + if (inputs[1].type !== 'int32') { + return false; + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/flatten.ts b/js/web/lib/onnxjs/ops/flatten.ts new file mode 100644 index 0000000000..9d09c32bfc --- /dev/null +++ b/js/web/lib/onnxjs/ops/flatten.ts @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Flatten implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axis = attributes.getInt('axis', 1); // default axis is 1 + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + const r = inputs[0].dims.length; + if (r === 0) { + return false; // scalar tensor is not supported + } + + if (this.axis < -r || this.axis > r) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + // TODO: Support string type + if (inputs[0].type === 'string') { + return false; + } + + return true; + } + + protected axis: number; +} diff --git a/js/web/lib/onnxjs/ops/gather.ts b/js/web/lib/onnxjs/ops/gather.ts new file mode 100644 index 0000000000..6b78d90224 --- /dev/null +++ b/js/web/lib/onnxjs/ops/gather.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Gather implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axis = attributes.getInt('axis', 0); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2) { + return false; + } + const tensorRank = inputs[0].dims.length; + if (tensorRank < 1) { + return false; + } + if (this.axis < -tensorRank || this.axis > tensorRank - 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + if (inputs[1].type !== 'int32' && inputs[1].type !== 'int16') { + return false; + } + return true; + } + + protected axis: number; +} diff --git a/js/web/lib/onnxjs/ops/gemm.ts b/js/web/lib/onnxjs/ops/gemm.ts new file mode 100644 index 0000000000..4883773f57 --- /dev/null +++ b/js/web/lib/onnxjs/ops/gemm.ts @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Gemm implements Operator { + constructor(isOptionalC: boolean) { + this.isOptionalC = isOptionalC; + } + + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.transA = attributes.getInt('transA', 0) !== 0; + this.transB = attributes.getInt('transB', 0) !== 0; + this.alpha = attributes.getFloat('alpha', 1); + this.beta = attributes.getFloat('beta', 1); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs) { + return false; + } + if (this.isOptionalC && (inputs.length < 2 || inputs.length > 3)) { + return false; + } + if (!this.isOptionalC && inputs.length !== 3) { + return false; + } + + // 'C' can be of dimensionality 1 or 2 only + if (inputs.length === 3 && inputs[2].dims.length !== 1 && inputs[2].dims.length !== 2) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if ((inputs[0].type !== 'float32' && inputs[0].type !== 'float64') || + (inputs[1].type !== 'float32' && inputs[1].type !== 'float64') || + (inputs.length === 3 && inputs[2].type !== 'float32' && inputs[2].type !== 'float64')) { + return false; + } + + if ((inputs[0].type !== inputs[1].type) || (inputs.length === 3 && inputs[0].type !== inputs[2].type)) { + return false; + } + + return true; + } + + protected transA: boolean; + protected transB: boolean; + protected alpha: number; + protected beta: number; + + protected isOptionalC: boolean; // in opset 11, C becomes optional +} diff --git a/js/web/lib/onnxjs/ops/image-scaler.ts b/js/web/lib/onnxjs/ops/image-scaler.ts new file mode 100644 index 0000000000..3b1a395f5b --- /dev/null +++ b/js/web/lib/onnxjs/ops/image-scaler.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class ImageScaler implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.scale = attributes.getFloat('scale'); + this.bias = attributes.getFloats('bias'); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + if (inputs[0].dims.length !== 4) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected scale: number; + protected bias: number[]; +} diff --git a/js/web/lib/onnxjs/ops/instance-normalization.ts b/js/web/lib/onnxjs/ops/instance-normalization.ts new file mode 100644 index 0000000000..3d5b7f2e28 --- /dev/null +++ b/js/web/lib/onnxjs/ops/instance-normalization.ts @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class InstanceNormalization implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.epsilon = attributes.getFloat('epsilon', 1e-5); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 3) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + const X = inputs[0]; + const scale = inputs[1]; + const B = inputs[2]; + + // input should atleast have three dimensions - N,C,dim1,...,dimn + // other inputs can have only one dimensions + if (X.dims.length < 3 || scale.dims.length !== 1 || B.dims.length !== 1) { + return false; + } + if (scale.dims[0] !== X.dims[1] || B.dims[0] !== X.dims[1]) { + return false; + } + if ((X.type !== 'float32' && X.type !== 'float64') || (scale.type !== 'float32' && scale.type !== 'float64') || + (B.type !== 'float32' && B.type !== 'float64')) { + return false; + } + return true; + } + + protected epsilon: number; +} diff --git a/js/web/lib/onnxjs/ops/leaky-relu.ts b/js/web/lib/onnxjs/ops/leaky-relu.ts new file mode 100644 index 0000000000..f1fe56f541 --- /dev/null +++ b/js/web/lib/onnxjs/ops/leaky-relu.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class LeakyRelu implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.alpha = attributes.getFloat('alpha', 0.01); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected alpha: number; +} diff --git a/js/web/lib/onnxjs/ops/lrn.ts b/js/web/lib/onnxjs/ops/lrn.ts new file mode 100644 index 0000000000..2fb152611b --- /dev/null +++ b/js/web/lib/onnxjs/ops/lrn.ts @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Lrn implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.alpha = attributes.getFloat('alpha', 1E-4); + this.beta = attributes.getFloat('beta', 0.75); + this.bias = attributes.getFloat('bias', 1.0); + this.size = attributes.getInt('size'); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + // input tensor must have atleast 3 dimensions + if (inputs[0].dims.length < 3) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected alpha: number; + protected beta: number; + protected bias: number; + protected size: number; +} diff --git a/js/web/lib/onnxjs/ops/matmul.ts b/js/web/lib/onnxjs/ops/matmul.ts new file mode 100644 index 0000000000..567dd6d239 --- /dev/null +++ b/js/web/lib/onnxjs/ops/matmul.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class MatMul implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2) { + return false; + } + + if (inputs[0].dims[inputs[0].dims.length - 1] !== inputs[1].dims[inputs[1].dims.length - 2]) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + if (inputs[1].type !== 'float32' && inputs[1].type !== 'float64') { + return false; + } + + if (inputs[0].type !== inputs[1].type) { + return false; + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/pad.ts b/js/web/lib/onnxjs/ops/pad.ts new file mode 100644 index 0000000000..7d8b43df5f --- /dev/null +++ b/js/web/lib/onnxjs/ops/pad.ts @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Pad implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.mode = attributes.getString('mode', 'constant'); + this.value = attributes.getFloat('value', 0.0); + this.pads = attributes.getInts('pads'); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected mode: string; + protected pads: number[]; + protected value: number; +} diff --git a/js/web/lib/onnxjs/ops/pool.ts b/js/web/lib/onnxjs/ops/pool.ts new file mode 100644 index 0000000000..58f35233e5 --- /dev/null +++ b/js/web/lib/onnxjs/ops/pool.ts @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +class PoolBase { + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected autoPad: string; + protected ceilMode: number; + protected countIncludePad: boolean; + protected kernelShape: number[]; + protected strides: number[]; + protected pads: number[]; +} + +export abstract class AveragePool extends PoolBase implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.autoPad = attributes.getString('auto_pad', 'NOTSET'); + this.kernelShape = attributes.getInts('kernel_shape'); + this.strides = attributes.getInts('strides', []); + this.pads = attributes.getInts('pads', []); + this.countIncludePad = (attributes.getInt('count_include_pad', 0) === 0 ? false : true); + this.ceilMode = attributes.getInt('ceil_mode', 0); + + // TODO: support attribute 'ceil_mode' + if (this.ceilMode !== 0) { + throw new Error('using ceil() in shape computation is not yet supported for AveragePool'); + } + } +} + +export abstract class GlobalAveragePool extends PoolBase implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.countIncludePad = (attributes.getInt('count_include_pad', 0) === 0 ? false : true); + } +} + +export abstract class MaxPool extends PoolBase implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.autoPad = attributes.getString('auto_pad', 'NOTSET'); + this.kernelShape = attributes.getInts('kernel_shape'); + this.strides = attributes.getInts('strides', []); + this.pads = attributes.getInts('pads', []); + this.ceilMode = attributes.getInt('ceil_mode', 0); + this.storageOrder = attributes.getInt('storage_order', 0); + + // TODO: support attribute 'ceil_mode' and 'storage_order' + if (this.storageOrder !== 0) { + throw new Error('column major storage order is not yet supported for MaxPool'); + } + if (this.ceilMode !== 0) { + throw new Error('using ceil() in shape computation is not yet supported for MaxPool'); + } + } + + protected storageOrder: number; +} + +export abstract class GlobalMaxPool extends PoolBase implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} +} diff --git a/js/web/lib/onnxjs/ops/reduce-op.ts b/js/web/lib/onnxjs/ops/reduce-op.ts new file mode 100644 index 0000000000..9c40533a85 --- /dev/null +++ b/js/web/lib/onnxjs/ops/reduce-op.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class ReduceBase implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axes = attributes.getInts('axes', []); + this.keepDims = attributes.getInt('keepdims', 1) === 1; + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + + return true; + } + + protected axes: number[]; + protected keepDims: boolean; +} diff --git a/js/web/lib/onnxjs/ops/reshape.ts b/js/web/lib/onnxjs/ops/reshape.ts new file mode 100644 index 0000000000..cf32dadf17 --- /dev/null +++ b/js/web/lib/onnxjs/ops/reshape.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Reshape implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2 || inputs[1].dims.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + + if (inputs[1].type !== 'int32') { + return false; + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/shape.ts b/js/web/lib/onnxjs/ops/shape.ts new file mode 100644 index 0000000000..64deff47ab --- /dev/null +++ b/js/web/lib/onnxjs/ops/shape.ts @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Shape implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/slice.ts b/js/web/lib/onnxjs/ops/slice.ts new file mode 100644 index 0000000000..d01d92ba29 --- /dev/null +++ b/js/web/lib/onnxjs/ops/slice.ts @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Slice implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.starts = attributes.getInts('starts'); + this.ends = attributes.getInts('ends'); + this.axes = attributes.getInts('axes', []); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + return true; + } + + protected axes: number[]; + protected ends: number[]; + protected starts: number[]; +} + +export abstract class SliceV10 implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length < 3 || inputs.length > 5) { + return false; + } + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[1].type !== 'int32' || inputs[1].dims.length !== 1) { + return false; + } + if (inputs[2].type !== 'int32' || inputs[2].dims.length !== 1) { + return false; + } + if (inputs.length >= 4 && (inputs[3].type !== 'int32' || inputs[3].dims.length !== 1)) { + return false; + } + if (inputs.length >= 5 && (inputs[4].type !== 'int32' || inputs[4].dims.length !== 1)) { + return false; + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/softmax.ts b/js/web/lib/onnxjs/ops/softmax.ts new file mode 100644 index 0000000000..7dc7bff4a2 --- /dev/null +++ b/js/web/lib/onnxjs/ops/softmax.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Softmax implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axis = attributes.getInt('axis', 1); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected axis: number; +} diff --git a/js/web/lib/onnxjs/ops/split.ts b/js/web/lib/onnxjs/ops/split.ts new file mode 100644 index 0000000000..68b98e3e98 --- /dev/null +++ b/js/web/lib/onnxjs/ops/split.ts @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Split implements Operator { + constructor(protected numOutputs?: number) {} + + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axis = attributes.getInt('axis', 0); + this.split = attributes.getInts('split', []); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'int8' && inputs[0].type !== 'uint8' && inputs[0].type !== 'int16' && + inputs[0].type !== 'uint16' && inputs[0].type !== 'int32' && inputs[0].type !== 'uint32' && + inputs[0].type !== 'float32' && inputs[0].type !== 'float64' && inputs[0].type !== 'bool') { + return false; + } + + return true; + } + + protected split: number[]; + protected axis: number; +} diff --git a/js/web/lib/onnxjs/ops/squeeze.ts b/js/web/lib/onnxjs/ops/squeeze.ts new file mode 100644 index 0000000000..a6c322b177 --- /dev/null +++ b/js/web/lib/onnxjs/ops/squeeze.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Squeeze implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axes = attributes.getInts('axes'); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + // TODO: Support string type + if (inputs[0].type === 'string') { + return false; + } + + return true; + } + + protected axes: number[]; +} diff --git a/js/web/lib/onnxjs/ops/sum.ts b/js/web/lib/onnxjs/ops/sum.ts new file mode 100644 index 0000000000..e6a9692c8e --- /dev/null +++ b/js/web/lib/onnxjs/ops/sum.ts @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Sum implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length === 0) { + return false; + } + + const length = inputs[0].dims.length; + for (let i = 1; i < inputs.length; i++) { + if (length !== inputs[i].dims.length) { + return false; + } + + for (let j = 0; j < length; j++) { + if (inputs[0].dims[j] !== inputs[i].dims[j]) { + return false; + } + } + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + for (let i = 1; i < inputs.length; i++) { + if (inputs[0].type !== inputs[i].type) { + return false; + } + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/tile.ts b/js/web/lib/onnxjs/ops/tile.ts new file mode 100644 index 0000000000..8396c41dce --- /dev/null +++ b/js/web/lib/onnxjs/ops/tile.ts @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {NUMBER_TYPES, Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Tile implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2) { + return false; + } + if (inputs[1].dims.length !== 1) { + return false; + } + if (inputs[1].dims[0] !== inputs[0].dims.length) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) { + return false; + } + if (inputs[1].type !== 'int32' && inputs[1].type !== 'int16') { + return false; + } + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/transpose.ts b/js/web/lib/onnxjs/ops/transpose.ts new file mode 100644 index 0000000000..740a024c87 --- /dev/null +++ b/js/web/lib/onnxjs/ops/transpose.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Transpose implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.perm = attributes.getInts('perm', []); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') { + return false; + } + + return true; + } + + protected perm: number[]; +} diff --git a/js/web/lib/onnxjs/ops/unary-op.ts b/js/web/lib/onnxjs/ops/unary-op.ts new file mode 100644 index 0000000000..5203e4339c --- /dev/null +++ b/js/web/lib/onnxjs/ops/unary-op.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class UnaryOp implements Operator { + constructor(protected typeConstraint: readonly Tensor.DataType[], protected resultType?: Tensor.DataType) {} + + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(_attributes: Attribute): void {} + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (this.typeConstraint.indexOf(inputs[0].type) === -1) { + return false; + } + + return true; + } +} diff --git a/js/web/lib/onnxjs/ops/unsqueeze.ts b/js/web/lib/onnxjs/ops/unsqueeze.ts new file mode 100644 index 0000000000..7aa2b7df50 --- /dev/null +++ b/js/web/lib/onnxjs/ops/unsqueeze.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Unsqueeze implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.axes = attributes.getInts('axes'); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + // TODO: Support string type + if (inputs[0].type === 'string') { + return false; + } + + return true; + } + + protected axes: number[]; +} diff --git a/js/web/lib/onnxjs/ops/upsample.ts b/js/web/lib/onnxjs/ops/upsample.ts new file mode 100644 index 0000000000..53da22dd61 --- /dev/null +++ b/js/web/lib/onnxjs/ops/upsample.ts @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Attribute} from '../attribute'; +import {InferenceHandler} from '../backend'; +import {Operator} from '../operators'; +import {Tensor} from '../tensor'; + +export abstract class Upsample implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.mode = attributes.getString('mode', 'nearest'); + this.scales = attributes.getFloats('scales'); + + if (this.mode !== 'nearest' && this.mode !== 'linear') { + throw new Error(`unrecognized mode: ${this.mode}`); + } + + if (this.mode === 'linear' && this.scales.length !== 2 && this.scales.length !== 4) { + throw new Error('only support 2-D or 4-D upsampling for linear mode'); + } + + this.roi = new Array(this.scales.length * 2).fill(0); + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 1) { + return false; + } + + if (inputs[0].dims.length !== this.scales.length) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type === 'string') { + return false; + } + + return true; + } + + protected mode: string; + protected scales: number[]; + protected roi: number[]; +} + +export abstract class UpsampleV9 implements Operator { + abstract run(inferenceHandler: InferenceHandler, inputs: Tensor[]): Tensor[]|Promise; + + initialize(attributes: Attribute): void { + this.mode = attributes.getString('mode', 'nearest'); + + if (this.mode !== 'nearest' && this.mode !== 'linear') { + throw new Error(`unrecognized mode: ${this.mode}`); + } + } + + checkInputs(inputs: Tensor[]): boolean { + if (!inputs || inputs.length !== 2) { + return false; + } + + return this.checkInputTypes(inputs); + } + + protected checkInputTypes(inputs: Tensor[]): boolean { + if (inputs[0].type === 'string') { + return false; + } + + return true; + } + + protected mode: string; +} diff --git a/js/web/lib/onnxjs/opset.ts b/js/web/lib/onnxjs/opset.ts new file mode 100644 index 0000000000..1c60f3d22f --- /dev/null +++ b/js/web/lib/onnxjs/opset.ts @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {Graph} from './graph'; +import {Operator} from './operators'; + +export interface OpSet { + domain: string; + version: number; +} + +export declare namespace OpSet { + interface OperatorConstructor { + (node: Graph.Node): Operator; + } + + /** + * Domain of an opset, it can be an empty string(default value, represent for ai.onnx), or 'ai.onnx.ml' + */ + type Domain = ''|'ai.onnx.ml'; + + /** + * A resolve rule consists of 4 items: opType, opSetDomain, versionSelector and operatorConstructor + */ + type ResolveRule = [string, Domain, string, OperatorConstructor]; +} + +export function resolveOperator(node: Graph.Node, opsets: readonly OpSet[], rules: readonly OpSet.ResolveRule[]) { + for (const rule of rules) { + const opType = rule[0]; + const domain = rule[1]; + const versionSelector = rule[2]; + const opConstructor = rule[3]; + + if (node.opType === opType) { // operator type matches + for (const opset of opsets) { + // opset '' and 'ai.onnx' are considered the same. + if (opset.domain === domain || (opset.domain === 'ai.onnx' && domain === '')) { // opset domain found + if (matchSelector(opset.version, versionSelector)) { + return opConstructor(node); + } + } + } + } + } + + throw new TypeError(`cannot resolve operator '${node.opType}' with opsets: ${ + opsets.map(set => `${set.domain || 'ai.onnx'} v${set.version}`).join(', ')}`); +} + +function matchSelector(version: number, selector: string): boolean { + if (selector.endsWith('+')) { + // minimum version match ('7+' expects version>=7) + const rangeStart = Number.parseInt(selector.substring(0, selector.length - 1), 10); + return !isNaN(rangeStart) && rangeStart <= version; + } else if (selector.split('-').length === 2) { + // range match ('6-8' expects 6<=version<=8) + const pair = selector.split('-'); + const rangeStart = Number.parseInt(pair[0], 10); + const rangeEnd = Number.parseInt(pair[1], 10); + return !isNaN(rangeStart) && !isNaN(rangeEnd) && rangeStart <= version && version <= rangeEnd; + } else { + // exact match ('7' expects version===7) + return Number.parseInt(selector, 10) === version; + } +} diff --git a/js/web/lib/onnxjs/session-handler.ts b/js/web/lib/onnxjs/session-handler.ts new file mode 100644 index 0000000000..8a6c9760c5 --- /dev/null +++ b/js/web/lib/onnxjs/session-handler.ts @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {InferenceSession, SessionHandler, Tensor} from 'onnxruntime-common'; +import {Session} from './session'; +import {Tensor as OnnxjsTensor} from './tensor'; + +export class OnnxjsSessionHandler implements SessionHandler { + constructor(private session: Session) { + this.inputNames = this.session.inputNames; + this.outputNames = this.session.outputNames; + } + + async dispose(): Promise {} + inputNames: readonly string[]; + outputNames: readonly string[]; + async run( + feeds: SessionHandler.FeedsType, _fetches: SessionHandler.FetchesType, + _options: InferenceSession.RunOptions): Promise { + const inputMap = new Map(); + for (const name in feeds) { + if (Object.hasOwnProperty.call(feeds, name)) { + const feed = feeds[name]; + inputMap.set( + name, + new OnnxjsTensor( + feed.dims, feed.type as OnnxjsTensor.DataType, undefined, undefined, + feed.data as OnnxjsTensor.NumberType)); + } + } + const outputMap = await this.session.run(inputMap); + const output: SessionHandler.ReturnType = {}; + outputMap.forEach((tensor, name) => { + output[name] = new Tensor(tensor.type, tensor.data, tensor.dims); + }); + return output; + } + startProfiling(): void { + this.session.startProfiling(); + } + endProfiling(): void { + this.session.endProfiling(); + } +} diff --git a/js/web/lib/onnxjs/session.ts b/js/web/lib/onnxjs/session.ts new file mode 100644 index 0000000000..c34c6a83ed --- /dev/null +++ b/js/web/lib/onnxjs/session.ts @@ -0,0 +1,257 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {readFile} from 'fs'; +import {promisify} from 'util'; + +import {resolveBackend, SessionHandlerType} from './backend'; +import {ExecutionPlan} from './execution-plan'; +import {Graph} from './graph'; +import {Profiler} from './instrument'; +import {Model} from './model'; +import {Operator} from './operators'; +import {Tensor} from './tensor'; + +export declare namespace Session { + export interface Config { + backendHint?: string; + profiler?: Profiler.Config; + } + + export interface Context { + profiler: Readonly; + graphInputTypes?: Tensor.DataType[]; + graphInputDims?: Array; + } +} + +export class Session { + constructor(config: Session.Config = {}) { + this._initialized = false; + this.backendHint = config.backendHint; + this.profiler = Profiler.create(config.profiler); + this.context = {profiler: this.profiler, graphInputTypes: [], graphInputDims: []}; + } + + get inputNames(): readonly string[] { + return this._model.graph.getInputNames(); + } + get outputNames(): readonly string[] { + return this._model.graph.getOutputNames(); + } + + startProfiling() { + this.profiler.start(); + } + + endProfiling() { + this.profiler.stop(); + } + + async loadModel(uri: string): Promise; + async loadModel(buffer: ArrayBuffer, byteOffset?: number, length?: number): Promise; + async loadModel(buffer: Uint8Array): Promise; + async loadModel(arg: string|ArrayBuffer|Uint8Array, byteOffset?: number, length?: number): Promise { + await this.profiler.event('session', 'Session.loadModel', async () => { + // resolve backend and session handler + const backend = await resolveBackend(this.backendHint); + this.sessionHandler = backend.createSessionHandler(this.context); + + this._model = new Model(); + if (typeof arg === 'string') { + if (typeof fetch === 'undefined') { + // node + const buf = await promisify(readFile)(arg); + this.initialize(Buffer.from(buf)); + } else { + // browser + const response = await fetch(arg); + const buf = await response.arrayBuffer(); + this.initialize(new Uint8Array(buf)); + } + } else if (!ArrayBuffer.isView(arg)) { + // load model from ArrayBuffer + const arr = new Uint8Array(arg, byteOffset || 0, length || arg.byteLength); + this.initialize(arr); + } else { + // load model from Uint8array + this.initialize(arg); + } + }); + } + + private initialize(modelProtoBlob: Uint8Array): void { + if (this._initialized) { + throw new Error('already initialized'); + } + + this.profiler.event('session', 'Session.initialize', () => { + // load graph + const graphInitializer = + this.sessionHandler.transformGraph ? this.sessionHandler as Graph.Initializer : undefined; + this._model.load(modelProtoBlob, graphInitializer); + + // graph is completely initialzied at this stage , let the interested handlers know + if (this.sessionHandler.onGraphInitialized) { + this.sessionHandler.onGraphInitialized(this._model.graph); + } + // initialize each operator in the graph + this.initializeOps(this._model.graph); + + // instantiate an ExecutionPlan object to be used by the Session object + this._executionPlan = new ExecutionPlan(this._model.graph, this._ops, this.profiler); + }); + + this._initialized = true; + } + + async run(inputs: Map|Tensor[]): Promise> { + if (!this._initialized) { + throw new Error('session not initialized yet'); + } + + return this.profiler.event('session', 'Session.run', async () => { + const inputTensors = this.normalizeAndValidateInputs(inputs); + + const outputTensors = await this._executionPlan.execute(this.sessionHandler, inputTensors); + + return this.createOutput(outputTensors); + }); + } + + private normalizeAndValidateInputs(inputs: Map|Tensor[]): Tensor[] { + const modelInputNames = this._model.graph.getInputNames(); + + // normalize inputs + // inputs: Tensor[] + if (Array.isArray(inputs)) { + if (inputs.length !== modelInputNames.length) { + throw new Error(`incorrect input array length: expected ${modelInputNames.length} but got ${inputs.length}`); + } + } + // convert map to array + // inputs: Map + else { + if (inputs.size !== modelInputNames.length) { + throw new Error(`incorrect input map size: expected ${modelInputNames.length} but got ${inputs.size}`); + } + + const sortedInputs = new Array(inputs.size); + let sortedInputsIndex = 0; + for (let i = 0; i < modelInputNames.length; ++i) { + const tensor = inputs.get(modelInputNames[i]); + if (!tensor) { + throw new Error(`missing input tensor for: '${name}'`); + } + sortedInputs[sortedInputsIndex++] = tensor; + } + + inputs = sortedInputs; + } + + // validate dims requirements + // First session run - graph input data is not cached for the session + if (!this.context.graphInputTypes || this.context.graphInputTypes.length === 0 || !this.context.graphInputDims || + this.context.graphInputDims.length === 0) { + const modelInputIndices = this._model.graph.getInputIndices(); + const modelValues = this._model.graph.getValues(); + + const graphInputDims = new Array(modelInputIndices.length); + + for (let i = 0; i < modelInputIndices.length; ++i) { + const graphInput = modelValues[modelInputIndices[i]]; + graphInputDims[i] = graphInput.type!.shape.dims; + + // cached for second and subsequent runs. + // Some parts of the framework works on the assumption that the graph and types and shapes are static + this.context.graphInputTypes!.push(graphInput.type!.tensorType); + this.context.graphInputDims!.push(inputs[i].dims); + } + + this.validateInputTensorDims(graphInputDims, inputs, true); + } + + // Second and subsequent session runs - graph input data is cached for the session + else { + this.validateInputTensorDims(this.context.graphInputDims, inputs, false); + } + + // validate types requirement + this.validateInputTensorTypes(this.context.graphInputTypes!, inputs); + + return inputs; + } + + private validateInputTensorTypes(graphInputTypes: Tensor.DataType[], givenInputs: Tensor[]) { + for (let i = 0; i < givenInputs.length; i++) { + const expectedType = graphInputTypes[i]; + const actualType = givenInputs[i].type; + if (expectedType !== actualType) { + throw new Error(`input tensor[${i}] check failed: expected type '${expectedType}' but got ${actualType}`); + } + } + } + + private validateInputTensorDims( + graphInputDims: Array, givenInputs: Tensor[], noneDimSupported: boolean) { + for (let i = 0; i < givenInputs.length; i++) { + const expectedDims = graphInputDims[i]; + const actualDims = givenInputs[i].dims; + if (!this.compareTensorDims(expectedDims, actualDims, noneDimSupported)) { + throw new Error(`input tensor[${i}] check failed: expected shape '[${expectedDims.join(',')}]' but got [${ + actualDims.join(',')}]`); + } + } + } + + private compareTensorDims(expectedDims: readonly number[], actualDims: readonly number[], noneDimSupported: boolean): + boolean { + if (expectedDims.length !== actualDims.length) { + return false; + } + + for (let i = 0; i < expectedDims.length; ++i) { + if (expectedDims[i] !== actualDims[i] && (!noneDimSupported || expectedDims[i] !== 0)) { + // data shape mis-match AND not a 'None' dimension. + return false; + } + } + + return true; + } + + private createOutput(outputTensors: Tensor[]): Map { + const modelOutputNames = this._model.graph.getOutputNames(); + if (outputTensors.length !== modelOutputNames.length) { + throw new Error('expected number of outputs do not match number of generated outputs'); + } + + const output = new Map(); + for (let i = 0; i < modelOutputNames.length; ++i) { + output.set(modelOutputNames[i], outputTensors[i]); + } + + return output; + } + + private initializeOps(graph: Graph): void { + const nodes = graph.getNodes(); + this._ops = new Array(nodes.length); + + for (let i = 0; i < nodes.length; i++) { + this._ops[i] = this.sessionHandler.resolve(nodes[i], this._model.opsets, graph); + } + } + + private _model: Model; + private _initialized: boolean; + + private _ops: Operator[]; + private _executionPlan: ExecutionPlan; + + private backendHint?: string; + + private sessionHandler: SessionHandlerType; + private context: Session.Context; + private profiler: Readonly; +} diff --git a/js/web/lib/onnxjs/tensor.ts b/js/web/lib/onnxjs/tensor.ts new file mode 100644 index 0000000000..e576e1b5fd --- /dev/null +++ b/js/web/lib/onnxjs/tensor.ts @@ -0,0 +1,430 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import Long from 'long'; +import {onnx} from 'onnx-proto'; + +import {ProtoUtil, ShapeUtil} from './util'; + +export declare namespace Tensor { + export interface DataTypeMap { + bool: Uint8Array; + float32: Float32Array; + float64: Float64Array; + string: string[]; + int8: Int8Array; + uint8: Uint8Array; + int16: Int16Array; + uint16: Uint16Array; + int32: Int32Array; + uint32: Uint32Array; + } + + export type DataType = keyof DataTypeMap; + + export type StringType = Tensor.DataTypeMap['string']; + export type BooleanType = Tensor.DataTypeMap['bool']; + export type IntegerType = Tensor.DataTypeMap['int8']|Tensor.DataTypeMap['uint8']|Tensor.DataTypeMap['int16']| + Tensor.DataTypeMap['uint16']|Tensor.DataTypeMap['int32']|Tensor.DataTypeMap['uint32']; + export type FloatType = Tensor.DataTypeMap['float32']|Tensor.DataTypeMap['float64']; + export type NumberType = BooleanType|IntegerType|FloatType; + + export interface Id { + // this field helps typescript to perform type check, comparing to use `Id` as an alias of object. + _tensorDataIdUnused?: never; + } +} + +type TensorData = Tensor.DataTypeMap[Tensor.DataType]; + +type DataProvider = (id: Tensor.Id) => TensorData; +type AsyncDataProvider = (id: Tensor.Id) => Promise; + +export class Tensor { + /** + * get the underlying tensor data + */ + get data(): TensorData { + if (this.cache === undefined) { + const data = this.dataProvider!(this.dataId); + if (data.length !== this.size) { + throw new Error('Length of data provided by the Data Provider is inconsistent with the dims of this Tensor.'); + } + this.cache = data; + } + return this.cache; + } + + /** + * get the underlying string tensor data. Should only use when type is STRING + */ + get stringData() { + if (this.type !== 'string') { + throw new TypeError('data type is not string'); + } + + return this.data as Tensor.StringType; + } + + /** + * get the underlying integer tensor data. Should only use when type is one of the following: (UINT8, INT8, UINT16, + * INT16, INT32, UINT32, BOOL) + */ + get integerData() { + switch (this.type) { + case 'uint8': + case 'int8': + case 'uint16': + case 'int16': + case 'int32': + case 'uint32': + case 'bool': + return this.data as Tensor.IntegerType; + + default: + throw new TypeError('data type is not integer (uint8, int8, uint16, int16, int32, uint32, bool)'); + } + } + + /** + * get the underlying float tensor data. Should only use when type is one of the following: (FLOAT, DOUBLE) + */ + get floatData() { + switch (this.type) { + case 'float32': + case 'float64': + return this.data as Tensor.FloatType; + + default: + throw new TypeError('data type is not float (float32, float64)'); + } + } + + /** + * get the underlying number tensor data. Should only use when type is one of the following: (UINT8, INT8, UINT16, + * INT16, INT32, UINT32, BOOL, FLOAT, DOUBLE) + */ + get numberData() { + if (this.type !== 'string') { + return this.data as Tensor.NumberType; + } + throw new TypeError('type cannot be non-number (string)'); + } + + /** + * get value of an element at the given indices + */ + get(indices: readonly number[]): Tensor.DataTypeMap[Tensor.DataType][number] { + return this.data[ShapeUtil.indicesToOffset(indices, this.strides)]; + } + + /** + * set value of an element at the given indices + */ + set(indices: readonly number[], value: Tensor.DataTypeMap[Tensor.DataType][number]) { + this.data[ShapeUtil.indicesToOffset(indices, this.strides)] = value; + } + + /** + * get the underlying tensor data asynchronously + */ + async getData(): Promise { + // TBD: This function is designed for usage when any backend data provider offers a way to retrieve data in an + // asynchronous way. should implement this function when enabling webgl async read data. + + if (this.cache === undefined) { + this.cache = await this.asyncDataProvider!(this.dataId); + } + return this.cache; + } + + /** + * get the number of elements in the tensor + */ + public readonly size: number; + + private _strides: readonly number[]; + /** + * get the strides for each dimension + */ + get strides(): readonly number[] { + if (!this._strides) { + this._strides = ShapeUtil.computeStrides(this.dims); + } + return this._strides; + } + + constructor( + /** + * get the dimensions of the tensor + */ + public readonly dims: readonly number[], + /** + * get the type of the tensor + */ + public readonly type: Tensor.DataType, private dataProvider?: DataProvider, + private asyncDataProvider?: AsyncDataProvider, private cache?: TensorData, + /** + * get the data ID that used to map to a tensor data + */ + public readonly dataId: Tensor.Id = {}) { + this.size = ShapeUtil.validateDimsAndCalcSize(dims); + const size = this.size; + const empty = (dataProvider === undefined && asyncDataProvider === undefined && cache === undefined); + + if (cache !== undefined) { + if (cache.length !== size) { + throw new RangeError('Input dims doesn\'t match data length.'); + } + } + + if (type === 'string') { + if (cache !== undefined && (!Array.isArray(cache) || !cache.every(i => typeof i === 'string'))) { + throw new TypeError('cache should be a string array'); + } + + if (empty) { + cache = new Array(size); + } + } else { + if (cache !== undefined) { + const constructor = dataviewConstructor(type); + if (!(cache instanceof constructor)) { + throw new TypeError(`cache should be type ${constructor.name}`); + } + } + + if (empty) { + const buf = new ArrayBuffer(size * sizeof(type)); + this.cache = createView(buf, type); + } + } + } + + /** + * Construct new Tensor from a ONNX Tensor object + * @param tensorProto the ONNX Tensor + */ + static fromProto(tensorProto: onnx.ITensorProto): Tensor { + if (!tensorProto) { + throw new Error('cannot construct Value from an empty tensor'); + } + const type = ProtoUtil.tensorDataTypeFromProto(tensorProto.dataType!); + const dims = ProtoUtil.tensorDimsFromProto(tensorProto.dims!); + + const value = new Tensor(dims, type); + + if (type === 'string') { + // When it's STRING type, the value should always be stored in field + // 'stringData' + tensorProto.stringData!.forEach((str, i) => { + const buf = Buffer.from(str.buffer, str.byteOffset, str.byteLength); + value.data[i] = buf.toString(); + }); + + } else if ( + tensorProto.rawData && typeof tensorProto.rawData.byteLength === 'number' && + tensorProto.rawData.byteLength > 0) { + // NOT considering segment for now (IMPORTANT) + + // populate value from rawData + const dataDest = value.data; + const dataSource = + new DataView(tensorProto.rawData.buffer, tensorProto.rawData.byteOffset, tensorProto.rawData.byteLength); + const elementSize = sizeofProto(tensorProto.dataType!); + const length = tensorProto.rawData.byteLength / elementSize; + + if (tensorProto.rawData.byteLength % elementSize !== 0) { + throw new Error('invalid buffer length'); + } + if (dataDest.length !== length) { + throw new Error('buffer length mismatch'); + } + + for (let i = 0; i < length; i++) { + const n = readProto(dataSource, tensorProto.dataType!, i * elementSize); + dataDest[i] = n; + } + } else { + // populate value from array + let array: Array; + switch (tensorProto.dataType) { + case onnx.TensorProto.DataType.FLOAT: + array = tensorProto.floatData!; + break; + case onnx.TensorProto.DataType.INT32: + case onnx.TensorProto.DataType.INT16: + case onnx.TensorProto.DataType.UINT16: + case onnx.TensorProto.DataType.INT8: + case onnx.TensorProto.DataType.UINT8: + case onnx.TensorProto.DataType.BOOL: + array = tensorProto.int32Data!; + break; + case onnx.TensorProto.DataType.INT64: + array = tensorProto.int64Data!; + break; + case onnx.TensorProto.DataType.DOUBLE: + array = tensorProto.doubleData!; + break; + case onnx.TensorProto.DataType.UINT32: + case onnx.TensorProto.DataType.UINT64: + array = tensorProto.uint64Data!; + break; + default: + // should never run here + throw new Error('unspecific error'); + } + + if (array === null || array === undefined) { + throw new Error('failed to populate data from a tensorproto value'); + } + + const data = value.data; + if (data.length !== array.length) { + throw new Error('array length mismatch'); + } + + for (let i = 0; i < array.length; i++) { + const element = array[i]; + if (Long.isLong(element)) { + data[i] = longToNumber(element, tensorProto.dataType); + } else { + data[i] = element; + } + } + } + + return value; + } + + /** + * Construct new Tensor from raw data + * @param data the raw data object. Should be a string array for 'string' tensor, and the corresponding typed array + * for other types of tensor. + * @param dims the dimensions of the tensor + * @param type the type of the tensor + */ + static fromData(data: Tensor.DataTypeMap[Tensor.DataType], dims: readonly number[], type: Tensor.DataType) { + return new Tensor(dims, type, undefined, undefined, data); + } +} + +function sizeof(type: Tensor.DataType): number { + switch (type) { + case 'bool': + case 'int8': + case 'uint8': + return 1; + case 'int16': + case 'uint16': + return 2; + case 'int32': + case 'uint32': + case 'float32': + return 4; + case 'float64': + return 8; + default: + throw new Error(`cannot calculate sizeof() on type ${type}`); + } +} + +function sizeofProto(type: onnx.TensorProto.DataType): number { + switch (type) { + case onnx.TensorProto.DataType.UINT8: + case onnx.TensorProto.DataType.INT8: + case onnx.TensorProto.DataType.BOOL: + return 1; + case onnx.TensorProto.DataType.UINT16: + case onnx.TensorProto.DataType.INT16: + return 2; + case onnx.TensorProto.DataType.FLOAT: + case onnx.TensorProto.DataType.INT32: + case onnx.TensorProto.DataType.UINT32: + return 4; + case onnx.TensorProto.DataType.INT64: + case onnx.TensorProto.DataType.DOUBLE: + case onnx.TensorProto.DataType.UINT64: + return 8; + default: + throw new Error(`cannot calculate sizeof() on type ${onnx.TensorProto.DataType[type]}`); + } +} + +function createView(dataBuffer: ArrayBuffer, type: Tensor.DataType) { + return new (dataviewConstructor(type))(dataBuffer); +} + +function dataviewConstructor(type: Tensor.DataType) { + switch (type) { + case 'bool': + case 'uint8': + return Uint8Array; + case 'int8': + return Int8Array; + case 'int16': + return Int16Array; + case 'uint16': + return Uint16Array; + case 'int32': + return Int32Array; + case 'uint32': + return Uint32Array; + case 'float32': + return Float32Array; + case 'float64': + return Float64Array; + default: + // should never run to here + throw new Error('unspecified error'); + } +} + +// convert a long number to a 32-bit integer (cast-down) +function longToNumber(i: Long, type: onnx.TensorProto.DataType): number { + // INT64, UINT32, UINT64 + if (type === onnx.TensorProto.DataType.INT64) { + if (i.greaterThanOrEqual(2147483648) || i.lessThan(-2147483648)) { + throw new TypeError('int64 is not supported'); + } + } else if (type === onnx.TensorProto.DataType.UINT32 || type === onnx.TensorProto.DataType.UINT64) { + if (i.greaterThanOrEqual(4294967296) || i.lessThan(0)) { + throw new TypeError('uint64 is not supported'); + } + } else { + throw new TypeError(`not a LONG type: ${onnx.TensorProto.DataType[type]}`); + } + + return i.toNumber(); +} + +// read one value from TensorProto +function readProto(view: DataView, type: onnx.TensorProto.DataType, byteOffset: number): number { + switch (type) { + case onnx.TensorProto.DataType.BOOL: + case onnx.TensorProto.DataType.UINT8: + return view.getUint8(byteOffset); + case onnx.TensorProto.DataType.INT8: + return view.getInt8(byteOffset); + case onnx.TensorProto.DataType.UINT16: + return view.getUint16(byteOffset, true); + case onnx.TensorProto.DataType.INT16: + return view.getInt16(byteOffset, true); + case onnx.TensorProto.DataType.FLOAT: + return view.getFloat32(byteOffset, true); + case onnx.TensorProto.DataType.INT32: + return view.getInt32(byteOffset, true); + case onnx.TensorProto.DataType.UINT32: + return view.getUint32(byteOffset, true); + case onnx.TensorProto.DataType.INT64: + return longToNumber( + Long.fromBits(view.getUint32(byteOffset, true), view.getUint32(byteOffset + 4, true), false), type); + case onnx.TensorProto.DataType.DOUBLE: + return view.getFloat64(byteOffset, true); + case onnx.TensorProto.DataType.UINT64: + return longToNumber( + Long.fromBits(view.getUint32(byteOffset, true), view.getUint32(byteOffset + 4, true), true), type); + default: + throw new Error(`cannot read from DataView for type ${onnx.TensorProto.DataType[type]}`); + } +} diff --git a/js/web/lib/onnxjs/util.ts b/js/web/lib/onnxjs/util.ts new file mode 100644 index 0000000000..446f43b719 --- /dev/null +++ b/js/web/lib/onnxjs/util.ts @@ -0,0 +1,1209 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import Long from 'long'; +import {onnx} from 'onnx-proto'; + +import {Graph} from './graph'; +import {Tensor} from './tensor'; + +// check the inputs shape before running an OP. +// return true when the inputs pass the check +// return false when the inputs do not fit the requirement +// throw exception when fatal error or not implemented +export function checkInputsShape(inputs: Tensor[], ...expectedDimensions: number[]): boolean { + if (!inputs || inputs.length !== expectedDimensions.length) { + return false; + } + for (let i = 0; i < inputs.length; i++) { + if (!inputs[i].dims || inputs[i].dims.length !== expectedDimensions[i]) { + return false; + } + } + return true; +} + +// Evaluates the given expression and asserts error message if condition is unmet. +export function assert(expr: boolean, msg: () => string) { + if (!expr) { + throw new Error(typeof msg === 'string' ? msg : msg()); + } +} + +export class ArrayUtil { + /** + * Verifies if 2 input arrays contain the same elements. + * @param n1 Array 1 + * @param n2 Array 2 + * @returns Whether these 2 are equal + */ + static arraysEqual( + n1: readonly number[]|Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Uint8ClampedArray| + Float32Array|Float64Array, + n2: readonly number[]|Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Uint8ClampedArray| + Float32Array|Float64Array) { + if (n1.length !== n2.length) { + return false; + } + for (let i = 0; i < n1.length; i++) { + if (n1[i] !== n2[i]) { + return false; + } + } + return true; + } +} + +export class MatMulUtil { + /** + * Fix the input shapes for MatMul operation if they need fixing + * @param dimsA The shape of tensor A. Should be an array of positive integers + * @param dimsB The shape of tensor B. Should be an array of positive integers + * @returns A tuple containing the preprocessed input shapes as required by ONNX specifications + */ + static preprocessInputShapes(dimsA: readonly number[], dimsB: readonly number[]): + [readonly number[], readonly number[]] { + // If the first argument is 1-D, it is promoted to a matrix by prepending + // a 1 to its dimensions. After matrix multiplication the prepended 1 is + // removed. + const a = (dimsA.length === 1) ? [1, dimsA[0]] : dimsA; + + // If the second argument is 1-D, it is promoted to a matrix by appending + // a 1 to its dimensions. After matrix multiplication the appended 1 is + // removed. + const b = (dimsB.length === 1) ? [dimsB[0], 1] : dimsB; + + return [a, b]; + } + + /** + * Fix the output shape computed for MatMul operation if it needs fixing + * @param outputShape The computed outputShape. Should be an array (atleast of length 2) of positive integers. + * This will be mutated. + * @param aRank The rank of tensor A. + * @param bRank The rank of tensor B. + */ + static postprocessOutputShape(outputShape: number[], aRank: number, bRank: number) { + // Remove prepended dimension if first input is 1d + if (aRank === 1) { + // outputShape = outputShape.slice(0, outputShape.length - 2).concat(outputShape.slice(outputShape.length - 1)); + outputShape.splice(outputShape.length - 2, 1); + } + // Remove appended dimension if second input is 1d + if (bRank === 1) { + outputShape.pop(); + } + } + + /** + * Calculate the expected shape when matrix multiplication + * @param a The shape of tensor A. Should be a tuple of 2 positive integers + * @param b The shape of tensor B. Should be a tuple of 2 positive integers + * @returns The expected shape of the result, or undefined if N/A + */ + static calcMatMulShape(a: [number, number], b: [number, number]): [number, number]|undefined { + return (a[1] !== b[0]) ? undefined : [a[0], b[1]]; + } +} + +export class BroadcastUtil { + /** + * Calculate the expected shape when broadcasting 2 tensors + * @param a The shape of tensor A. Should be an array of positive integers + * @param b The shape of tensor B. Should be an array of positive integers + * @param isMatMul Whether the operation is MatMul + * @returns The expected shape of the result, or undefined if N/A + */ + static calcShape(adims: readonly number[], bdims: readonly number[], isMatMul = false): readonly number[]|undefined { + const arank = adims.length; + const brank = bdims.length; + if (arank === 0) { + return bdims; + } + if (brank === 0) { + return adims; + } + const crank = Math.max(adims.length, bdims.length); + const cdims = new Array(crank); + + // calculate the last 2 dimension if it is MatMul + if (isMatMul) { + if (arank < 2 || brank < 2) { + return undefined; + } + const cShapeMatMul = + MatMulUtil.calcMatMulShape([adims[arank - 2], adims[arank - 1]], [bdims[brank - 2], bdims[brank - 1]]); + if (cShapeMatMul === undefined) { + return undefined; + } + [cdims[crank - 2], cdims[crank - 1]] = cShapeMatMul; + } + + for (let i = isMatMul ? 3 : 1; i <= crank; i++) { + const aLen = arank - i < 0 ? 1 : adims[arank - i]; + const bLen = brank - i < 0 ? 1 : bdims[brank - i]; + + if (aLen !== bLen && aLen > 1 && bLen > 1) { + return undefined; + } + cdims[crank - i] = Math.max(aLen, bLen); + } + + return cdims; + } + + /** + * Given the indices of a broadcasted tensor, calculate the original indices + * @param broadcastedIndices The given indices of the broadcasted tensor. + * @param originalShape The original shape of the tensor before broadcas + * @returns The calculated indices that maps to the original tensor. + */ + static index(broadcastedIndices: readonly number[], originalShape: readonly number[]): number[] { + // NOTE 1: we assume the parameter broadcastedIndices is valid. ie. it should have the same + // length as the broadcasted shape, and for each dimension the index should + // not be out of range. + const originalIndices = new Array(originalShape.length); + BroadcastUtil.fillIndex(broadcastedIndices, originalShape, originalIndices); + return originalIndices; + } + + /** + * Given the indices of a broadcasted tensor, calculate the original indices + * @param broadcastedIndices The given indices of the broadcasted tensor. + * @param originalShape The original shape of the tensor before broadcast + * @param originalIndices The mapping of broadcastedIndices to the originalIndices (output parameter - will be + * mutated). + */ + static fillIndex(broadcastedIndices: readonly number[], originalShape: readonly number[], originalIndices: number[]) { + // NOTE 1: we assume the parameter broadcastedIndices is valid. ie. it should have the same length as the + // broadcasted shape, and for each dimension the index should not be out of range. + // NOTE 2: we assume the parameter originalIndices has the same length as the originalShape + const dimOffset = broadcastedIndices.length - originalShape.length; + for (let i = 0; i < originalShape.length; i++) { + originalIndices[i] = broadcastedIndices[dimOffset + i] % originalShape[i]; + } + } + + /** + * Perform the broadcasting operation on the specific operator + * @param a The input tensor A + * @param b The input tensor B + * @param op The operator lambda function + * @param inplace Whether to write the result back to A. + * @returns The result tensor, or undefined if input not broadcastable. + */ + static calc( + a: Tensor, b: Tensor, op: (a: string|number, b: string|number) => (string | number), inplace: boolean, + resultType?: Tensor.DataType): Tensor|undefined { + const outputShape = BroadcastUtil.calcShape(a.dims, b.dims); + + if (outputShape) { + if (inplace && !ShapeUtil.areEqual(outputShape, a.dims)) { + // B is not broadcastable to A, failed to calculate inplace. + return undefined; + } + + const size = ShapeUtil.size(outputShape); + const c = inplace ? a : new Tensor(outputShape, resultType || a.type); + + // both inputs are scalars + if (outputShape.length === 0) { + c.set([], op(a.get([]), b.get([]))); + } + + // atleast one input is a non-scalar + else { + const outputIndices = new Array(outputShape.length); + const originalIndicesA = new Array(a.dims.length); + const originalIndicesB = new Array(b.dims.length); + let valA: string|number = 0; + let valB: string|number = 0; + let isAScalar = false; + let isBScalar = false; + if (a.dims.length === 0) { + valA = a.get([]); + isAScalar = true; + } + if (b.dims.length === 0) { + valB = b.get([]); + isBScalar = true; + } + let rest: number; + for (let i = 0; i < size; i++) { + // traversal indices + rest = i; + for (let j = outputShape.length - 1; j >= 0; j--) { + outputIndices[j] = rest % outputShape[j]; + rest = Math.floor(rest / outputShape[j]); + } + + if (!isAScalar) { + // map outputIndices (which is actually broadcasted) to the originalIndices + BroadcastUtil.fillIndex(outputIndices, a.dims, originalIndicesA); + valA = a.get(originalIndicesA); + } + if (!isBScalar) { + BroadcastUtil.fillIndex(outputIndices, b.dims, originalIndicesB); + valB = b.get(originalIndicesB); + } + + c.set(outputIndices, op(valA, valB)); + } + } + + return c; + } + + return undefined; + } + + /** + * Determine if a shape is unidirectional broadcastable to another shape + * @param shape The input shape + * @param finalShape The desired shape after broadcasting + */ + static isValidBroadcast(shape: readonly number[], finalShape: readonly number[]): boolean { + // align shape to the right + const inputRank = shape.length; + const finalRank = finalShape.length; + if (inputRank > finalRank) { + return false; + } + for (let i = 1; i <= inputRank; i++) { + if (shape[inputRank - i] !== 1 && shape[inputRank - i] !== finalShape[finalRank - i]) { + return false; + } + } + return true; + } + + /** + * Determine the broadcasted dims in input shape based on the given output shape. + * Note that this function only returns the broadcasted dims. + * @param inputShape The input shape + * @param outputShape The output shape + * @returns The broadcasted dims in input shape. + */ + static getBroadcastDims(inputShape: readonly number[], outputShape: readonly number[]): number[] { + const inRank = inputShape.length; + const dims: number[] = []; + for (let i = 0; i < inRank; i++) { + const dim = inRank - 1 - i; + const a = inputShape[dim] || 1; + const b = outputShape[outputShape.length - 1 - i] || 1; + if (b > 1 && a === 1) { + dims.unshift(dim); + } + } + return dims; + } +} + +// copy array helper +// mimics memcpy as much as possible +export function arrayCopyHelper( + target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number, + blockSize: number) { + if (sourceIndex < 0 || sourceIndex >= source.length) { + throw new Error('sourceIndex out of bounds'); + } + if (targetIndex < 0 || targetIndex >= target.length) { + throw new Error('targetIndex out of bounds'); + } + if (sourceIndex + blockSize > source.length) { + throw new Error('source indices to be copied are outside bounds'); + } + if (targetIndex + blockSize > target.length) { + throw new Error('target array is too small to hold result'); + } + + for (let offset = 0; offset < blockSize; offset++) { + target[targetIndex + offset] = source[sourceIndex + offset]; + } +} + +export class GemmUtil { + // will make sure input shapes are compatible for this op + // and return back the shape of the output in the form of a tuple + // will throw exception if the input shapes are not compatible + static getShapeOfGemmResult( + leftShape: readonly number[], transLeft: boolean, rightShape: readonly number[], transRight: boolean, + biasShape?: readonly number[]): readonly number[] { + if (leftShape.length !== 2 || rightShape.length !== 2) { + throw new Error('shape need to be of size 2'); + } + + let M: number; + let K: number; + let N: number; + + if (transLeft) { + M = leftShape[1]; + K = leftShape[0]; + } else { + M = leftShape[0]; + K = leftShape[1]; + } + + let kDim = -1; + + if (transRight) { + N = rightShape[0]; + kDim = 1; + } else { + N = rightShape[1]; + kDim = 0; + } + + if (rightShape[kDim] !== K) { + throw new Error('dimension mismatch'); + } + + if (M <= 0 || N <= 0 || K <= 0) { + throw new Error('invalid shape specified'); + } + + if (biasShape && !BroadcastUtil.isValidBroadcast(biasShape, [M, N])) { + throw new Error('gemm: invalid bias shape for broadcast'); + } + + return [M, N, K]; + } +} + +export class ProtoUtil { + static tensorDataTypeFromProto(typeProto: onnx.TensorProto.DataType): Tensor.DataType { + switch (typeProto) { + case onnx.TensorProto.DataType.INT8: + return 'int8'; + case onnx.TensorProto.DataType.UINT8: + return 'uint8'; + case onnx.TensorProto.DataType.BOOL: + return 'bool'; + case onnx.TensorProto.DataType.INT16: + return 'int16'; + case onnx.TensorProto.DataType.UINT16: + return 'uint16'; + case onnx.TensorProto.DataType.INT32: + return 'int32'; + case onnx.TensorProto.DataType.UINT32: + return 'uint32'; + case onnx.TensorProto.DataType.FLOAT: + return 'float32'; + case onnx.TensorProto.DataType.DOUBLE: + return 'float64'; + case onnx.TensorProto.DataType.STRING: + return 'string'; + + // For INT64/UINT64, reduce their value to 32-bits. + // Should throw exception when overflow + case onnx.TensorProto.DataType.INT64: + return 'int32'; + case onnx.TensorProto.DataType.UINT64: + return 'uint32'; + + default: + throw new Error(`unsupported data type: ${onnx.TensorProto.DataType[typeProto]}`); + } + } + + static tensorDataTypeStringToEnum(type: string): onnx.TensorProto.DataType { + switch (type) { + case 'int8': + return onnx.TensorProto.DataType.INT8; + case 'uint8': + return onnx.TensorProto.DataType.UINT8; + case 'bool': + return onnx.TensorProto.DataType.BOOL; + case 'int16': + return onnx.TensorProto.DataType.INT16; + case 'uint16': + return onnx.TensorProto.DataType.UINT16; + case 'int32': + return onnx.TensorProto.DataType.INT32; + case 'uint32': + return onnx.TensorProto.DataType.UINT32; + case 'float32': + return onnx.TensorProto.DataType.FLOAT; + case 'float64': + return onnx.TensorProto.DataType.DOUBLE; + case 'string': + return onnx.TensorProto.DataType.STRING; + case 'int64': + return onnx.TensorProto.DataType.INT64; + case 'uint64': + return onnx.TensorProto.DataType.UINT64; + + default: + throw new Error(`unsupported data type: ${type}`); + } + } + + static tensorDimsFromProto(dims: Array): number[] { + // get rid of Long type for dims + return dims.map(d => Long.isLong(d) ? d.toNumber() : d); + } + + static tensorValueTypeFromProto(valueType: onnx.TypeProto.ITensor): Graph.ValueType { + return { + tensorType: ProtoUtil.tensorDataTypeFromProto(valueType.elemType!), + shape: {dims: ProtoUtil.tensorDimsFromProto(valueType.shape!.dim!.map(d => d.dimValue!))} + }; + } +} + +export class LongUtil { + static longToNumber(n: Long|number) { + return Long.isLong(n) ? n.toNumber() : n; + } +} + +export class ShapeUtil { + static size(dims: readonly number[]): number { + return ShapeUtil.getSizeFromDimensionRange(dims, 0, dims.length); + } + + // `axis` inclusive + static sizeFromDimension(dims: readonly number[], axis: number): number { + if (axis < 0 || axis > dims.length) { + throw new Error(`invalid dimension of ${axis} for sizeFromDimension as Tensor has ${dims.length} dimensions.`); + } + return ShapeUtil.getSizeFromDimensionRange(dims, axis, dims.length); + } + + // `axis` exclusive + static sizeToDimension(dims: readonly number[], axis: number): number { + if (axis < 0 || axis > dims.length) { + throw new Error(`invalid dimension of ${axis} for sizeToDimension as Tensor has ${dims.length} dimensions.`); + } + return ShapeUtil.getSizeFromDimensionRange(dims, 0, axis); + } + + static getSizeFromDimensionRange(dims: readonly number[], start: number, end: number): number { + let size = 1; + for (let i = start; i < end; i++) { + // safety check as this method is called by multiple other methods requiring size. + // size cannot be 0 or negative. + if (dims[i] <= 0) { + throw new Error( + // eslint-disable-next-line max-len + 'cannot get valid size from specified dimension range. Most likely the range contains 0 or negative values in them.'); + } + size *= dims[i]; + } + return size; + } + + static computeStrides(dims: readonly number[]): readonly number[] { + const rank = dims.length; + if (rank === 0) { + return []; + } else if (rank === 1) { + return [1]; + } + const strides = new Array(rank); + strides[rank - 1] = 1; + strides[rank - 2] = dims[rank - 1]; + for (let i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * dims[i + 1]; + } + return strides; + } + + static transpose(dims: readonly number[]): readonly number[] { + const copy = dims.slice(); + return copy.reverse(); + } + + static indicesToOffset(indices: readonly number[], strides: readonly number[], axis?: number): number { + if (axis === undefined) { + axis = indices.length; + } + let offset = 0; + for (let i = 0; i < axis; ++i) { + offset += strides[i] * indices[i]; + } + return offset; + } + + static offsetToIndices(offset: number, strides: readonly number[]): readonly number[] { + const rank = strides.length; + if (rank === 0) { + return []; + } else if (rank === 1) { + return [offset * strides[0]]; + } + const indices: number[] = new Array(strides.length); + for (let i = 0; i < indices.length - 1; ++i) { + indices[i] = Math.floor(offset / strides[i]); + offset -= indices[i] * strides[i]; + } + indices[indices.length - 1] = offset; + return indices; + } + + /** + * normailze axis of range [-r, r) into [0, r). + */ + static normalizeAxis(axis: number, tensorRank: number): number { + if (axis < -tensorRank && axis >= tensorRank) { + throw new Error('unsupported axis for this operation.'); + } + return axis < 0 ? axis + tensorRank : axis; + } + + static normalizeAxes(axes: readonly number[], tensorRank: number): number[] { + return axes.map(x => this.normalizeAxis(x, tensorRank)); + } + + // Increment an index into a tensor (in lexicographic + // ordering), wrapping around the specified upper_bound. + /** + * Increment an index into a tensor (in lexicographic ordering), wrapping around the specified upper_bound. + * @param index Given index to increment (Will be mutated) + * @param dims The dimensions of the tensor for which the given index corresponds to + * @param axisToIncrementOn The 1-indexed axis to increment on. If undefined, axisToIncrementOn == rank + */ + static incrementIndex(index: number[], dims: readonly number[], axisToIncrementOn?: number) { + if (dims.length === 0 || index.length === 0) { + throw new Error('Index incrementing unsupported for scalar Tensor'); + } + if (axisToIncrementOn === undefined) { + axisToIncrementOn = dims.length; + } else { + if (axisToIncrementOn <= 0 || axisToIncrementOn > dims.length) { + throw new Error('Incorrect axis to increment on'); + } + } + + for (let k = axisToIncrementOn - 1; k >= 0; --k) { + index[k]++; + if (index[k] < dims[k]) { + break; + } + index[k] = 0; + } + } + + /** + * Produces a new dimensions array based on the values in the 'originalDimensions' and 'shape' array + * Used in Reshape + * @param originalDims Original Shape array + * @param shapeHints array containing values to compute the new dimensions + * For example: + * originalDims = [2,2] and shapeHints = [0,-1] will return [2,2] + * originalDims = [2,2] and shapeHints = [4] will return [4] + * originalDims = [2,2] and shapeHints = [5] will throw an exception + * https://github.com/onnx/onnx/blob/master/docs/Operators.md#Reshape + */ + + static calculateReshapedDims( + originalDims: readonly number[], shapeHints: number[]|readonly number[]|Tensor.IntegerType): readonly number[] { + // reshape to a Scalar Tensor + if (shapeHints.length === 0) { + if (originalDims.length === 0 || ShapeUtil.size(originalDims) === 1) { + return []; + } else { + throw new Error('cannot reshape to a scalar Tensor'); + } + } + + const nDims = shapeHints.length; + const reshapedDims = new Array(nDims); + let unknownDimension = -1; + let newTensorSize = 1; + for (let i = 0; i < nDims; i++) { + if (shapeHints[i] < -1) { + throw new Error('a dimension in shape hints cannot be less than -1'); + } + if (shapeHints[i] === -1) { + if (unknownDimension !== -1) { + throw new Error('at most one dimension in shape hints can be -1'); + } + unknownDimension = i; + } else { + if (shapeHints[i] === 0) { + if (i >= originalDims.length) { + throw new Error('the dimension with value zero exceeds the dimension size of the input tensor'); + } + reshapedDims[i] = originalDims[i]; + } else { + reshapedDims[i] = shapeHints[i]; + } + newTensorSize *= reshapedDims[i]; + } + } + + const oldTensorSize = ShapeUtil.size(originalDims); + if (unknownDimension !== -1) { + if (oldTensorSize % newTensorSize !== 0) { + throw new Error(`the input tensor cannot be reshaped to the requested shape. Input shape: [${ + originalDims}] Output shape: [${shapeHints}]`); + } + reshapedDims[unknownDimension] = oldTensorSize / newTensorSize; + } + // validate sizes from originalDims and reshapedDims match + else { + if (newTensorSize !== oldTensorSize) { + throw new Error('reshapedDims and originalDims don\'t have matching sizes'); + } + } + return reshapedDims; + } + + /** + * Sorts a given array based on the indices in the Perm array + * Used in Transpose + * @param a Array to be sorted such as dims or strides + * @param perm Perm given; if null a will be reversed + */ + static sortBasedOnPerm(a: readonly number[], perm?: readonly number[]): readonly number[] { + if (perm) { + return perm.map((v) => a[v]); + } else { + return a.slice().reverse(); + } + } + + /** + * Pads a given shape according to the padding values + * @param dims shape of the Tensor to be padded + * @param pad pad values + */ + static padShape(dims: readonly number[], pad: readonly number[]): readonly number[] { + const rank = dims.length; + return dims.map((v, i) => v + pad[i] + pad[i + rank]); + } + + /** + * Determines if the two shapes are identical + * @param shape1 + * @param shape2 + */ + static areEqual(shape1: readonly number[], shape2: readonly number[]): boolean { + if (shape1.length !== shape2.length) { + return false; + } + return shape1.every((v, i) => v === shape2[i]); + } + + /** + * Validates if the given `dims` or `shape` is valid in ONNX.js context and returns data size + * @param dims - input `dims` that needs to be checked + */ + static validateDimsAndCalcSize(dims: readonly number[]): number { + if (dims.length > 6) { + throw new TypeError('Only rank 0 to 6 is supported for tensor shape.'); + } + let size = 1; + for (const n of dims) { + if (!Number.isInteger(n)) { + throw new TypeError(`Invalid shape: ${n} is not an integer`); + } + if (n < 0 || n > 2147483647) { + throw new TypeError(`Invalid shape: length ${n} is not allowed`); + } + size *= n; + } + return size; + } + + /** + * Determines the shape of output tensor y = flatten(x, axis) + * @param dims - shape of input tensor + * @param axis - flatten axis, in the range [-r, r] + */ + static flattenShape(dims: readonly number[], axis: number): readonly number[] { + if (axis < 0) { + axis += dims.length; + } + const total = dims.reduce((x, y) => x * y, 1); + const right = dims.slice(axis).reduce((x, y) => x * y, 1); + const outputDims = [total / right, right]; + + return outputDims; + } + + /** + * Determines the shape of output tensor y = squeeze(x, axes) + * @param dims - shape of input tensor + * @param axes - squeeze axes + */ + static squeezeShape(dims: readonly number[], axes: readonly number[]): readonly number[] { + const outputDims = new Array(); + + // sanity check + axes = ShapeUtil.normalizeAxes(axes, dims.length); + + for (let i = 0; i < dims.length; i++) { + const inSqueezeList = axes.indexOf(i) >= 0; + if (inSqueezeList && dims[i] !== 1) { + throw new Error('squeeze an axis of size different than 1'); + } + + if ((axes.length === 0 && dims[i] > 1) || (axes.length > 0 && !inSqueezeList)) { + outputDims.push(dims[i]); + } + } + + return outputDims; + } + + /** + * Determines the shape of output tensor y = unsqueeze(x, axes) + * @param dims - shape of input tensor + * @param axes - unsqueeze axes + */ + static unsqueezeShape(dims: readonly number[], axes: readonly number[]): readonly number[] { + const outputDims = new Array(dims.length + axes.length); + + // initialize the array elements to 0 + outputDims.fill(0); + + // set all axes indices to 1 in outputDims and check for duplicates + for (let i = 0; i < axes.length; i++) { + const axis = ShapeUtil.normalizeAxis(axes[i], dims.length); + if (axis >= outputDims.length) { + throw new Error('\'axes\' has an out of range axis'); + } + if (outputDims[axis] !== 0) { + throw new Error('\'axes\' has a duplicate axis'); + } + + outputDims[axis] = 1; + } + + // fill in the zero entries of outputDims with the input tensor's shape + let inputDimsIterator = 0; + for (let i = 0; i < outputDims.length; i++) { + if (outputDims[i] === 0) { + outputDims[i] = dims[inputDimsIterator++]; + } + } + + // sanity check assertion. 'inputDimsIterator' + // should be equal to the length of 'dims' + if (inputDimsIterator !== dims.length) { + throw new Error('the unsqueezed dimension could not be established'); + } + + return outputDims; + } +} + +// bunch of helper methods that do a variety of math operations +export class MathUtil { + // y = (x*x) + y + static sqr( + target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number, + blockSize: number) { + if (sourceIndex < 0 || sourceIndex >= source.length) { + throw new Error('sourceIndex out of bounds'); + } + if (targetIndex < 0 || targetIndex >= target.length) { + throw new Error('targetIndex out of bounds'); + } + if (sourceIndex + blockSize > source.length) { + throw new Error('source indices to be copied are outside bounds'); + } + if (targetIndex + blockSize > target.length) { + throw new Error('target array is too small to hold result'); + } + + for (let offset = 0; offset < blockSize; offset++) { + target[targetIndex + offset] += Math.pow(source[sourceIndex + offset], 2); + } + } + + // y = ax + y + static axpy( + target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number, + blockSize: number, alpha: number) { + if (sourceIndex < 0 || sourceIndex >= source.length) { + throw new Error('sourceIndex out of bounds'); + } + if (targetIndex < 0 || targetIndex >= target.length) { + throw new Error('targetIndex out of bounds'); + } + if (sourceIndex + blockSize > source.length) { + throw new Error('source indices to be copied are outside bounds'); + } + if (targetIndex + blockSize > target.length) { + throw new Error('target array is too small to hold result'); + } + + for (let offset = 0; offset < blockSize; offset++) { + target[targetIndex + offset] += (alpha * source[sourceIndex + offset]); + } + } + + // y = pow(x, b) + static powx( + target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number, + blockSize: number, b: number) { + if (sourceIndex < 0 || sourceIndex >= source.length) { + throw new Error('sourceIndex out of bounds'); + } + if (targetIndex < 0 || targetIndex >= target.length) { + throw new Error('targetIndex out of bounds'); + } + if (sourceIndex + blockSize > source.length) { + throw new Error('source indices to be copied are outside bounds'); + } + if (targetIndex + blockSize > target.length) { + throw new Error('target array is too small to hold result'); + } + + for (let offset = 0; offset < blockSize; offset++) { + target[targetIndex + offset] = Math.pow(source[sourceIndex + offset], b); + } + } + + // y = x * y + static mul( + target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number, + blockSize: number) { + if (sourceIndex < 0 || sourceIndex >= source.length) { + throw new Error('sourceIndex out of bounds'); + } + if (targetIndex < 0 || targetIndex >= target.length) { + throw new Error('targetIndex out of bounds'); + } + if (sourceIndex + blockSize > source.length) { + throw new Error('source indices to be copied are outside bounds'); + } + if (targetIndex + blockSize > target.length) { + throw new Error('target array is too small to hold result'); + } + + for (let offset = 0; offset < blockSize; offset++) { + target[targetIndex + offset] = (source[sourceIndex + offset] * target[targetIndex + offset]); + } + } +} + +export class SplitUtil { + /** + * Calculates new Shapes from existing one and the splits given along the axis provides + * @param dims Shape of the Tensor to be splitted into two or more Shapes + * @param axis The dimension along which the Tensor will be split + * @param splits Offsets for the start of each split + */ + static splitShape(dims: readonly number[], axis: number, split: number[], numOutputs?: number): + [number[][], number[]] { + if (split.length === 0) { + if (!numOutputs) { + throw new Error('need to know number of outputs when the \'split\' attribute is not specified'); + } + SplitUtil.determineSplit(dims[axis], numOutputs, split); + } + + const shapes: number[][] = []; + const offsets = [0]; + for (let i = 0; i < split.length; ++i) { + if (i !== 0) { + offsets.push(offsets[i - 1] + split[i - 1]); + } + const shape = dims.slice(); + shape[axis] = split[i]; + shapes.push(shape); + } + return [shapes, offsets]; + } + + static determineSplit(numElementsAlongAxis: number, numOutputs: number, split: number[]) { + // If 'split' is not specified by the user, we need to partition the number of elements equally among the outputs + if (numElementsAlongAxis % numOutputs !== 0) { + throw new Error('cannot split tensor to equal sized parts'); + } + for (let i = 0; i < numOutputs; ++i) { + split.push(numElementsAlongAxis / numOutputs); + } + } +} + +export class ReduceUtil { + /** + * Perform reduce operations on the specific operator + * @param a Input tensor data + * @param axes The dimensions along which the Tensor will be reduced + * @param keepdims If set to true, the axes which are reduced are left in the + * result as dimensions with size one. + * @param op1 The operation to be performed on each element in the tensor + * @param op2 The operation to be performed between elements in the tensor + */ + static calcReduce( + a: Tensor, axes: number[], keepdims: boolean, op1: (b: number) => number, + op2: (a: number, b: number) => number): Tensor { + const dims = a.dims.slice(0); + // if axes is not set, perform reduce on all axes + if (axes.length === 0) { + dims.forEach((d, ind) => axes.push(ind)); + } + // get a temporary broadcastable output shape + const outputDims = ReduceUtil.calcReduceShape(dims, axes, true); + + // loop through the output and calculate result one by one + const size = ShapeUtil.size(outputDims); + const y = new Tensor(outputDims, a.type); + const strides = ShapeUtil.computeStrides(outputDims); + const inputStrides = ShapeUtil.computeStrides(dims); + const indicesY = new Array(dims.length); + for (let i = 0; i < size; i++) { + const indices = ShapeUtil.offsetToIndices(i, strides); + // map index + BroadcastUtil.fillIndex(indices, dims, indicesY); + y.set( + indices, + ReduceUtil.calcReduceByAxis( + a.numberData, axes, dims, 0, ShapeUtil.indicesToOffset(indicesY, inputStrides), op1, op2)); + } + + if (keepdims) { + return y; + } else { + // keepdims == 0, calculate the expected shape + return new Tensor( + ReduceUtil.calcReduceShape(dims, axes, keepdims), y.type, undefined, undefined, y.data, y.dataId); + } + } + + /** + * Perform reduce operations on the specific operator on specific axes + * @param a Input tensor data + * @param axes The dimensions along which the Tensor will be reduced + * @param dims The input dimension. + * @param curAxisInd Index in axes specifying the current dimension along + * which the tensor will be reduced + * @param pos The current index of element to perform operation + * @param op1 The operation to be performed on each element in the tensor + * @param op2 The operation to be performed between elements in the tensor + */ + static calcReduceByAxis( + input: Tensor.NumberType, axes: number[], dims: number[], curAxisInd: number, pos: number, + op1: (b: number) => number, op2: (a: number, b: number) => number): number { + let res = 0; + if (curAxisInd >= axes.length) { + return op1(input[pos]); + } + const axis = axes[curAxisInd]; + const step = axis >= dims.length ? 1 : ShapeUtil.size(dims.slice(axis + 1)); + for (let i = 0; i < dims[axis]; i++) { + res = i === 0 ? ReduceUtil.calcReduceByAxis(input, axes, dims, curAxisInd + 1, pos, op1, op2) : + op2(res, ReduceUtil.calcReduceByAxis(input, axes, dims, curAxisInd + 1, pos, op1, op2)); + pos += step; + } + return res; + } + + /** + * Calculate the expected shape of a reduce operation + * @param dims The input tensor dimension + * @param axes The dimensions along which the Tensor will be reduced + * @param keepdims If set to true, the axes which are reduced are left in the + * result as dimensions with size one. + */ + static calcReduceShape(dims: readonly number[], axes: readonly number[], keepDims: boolean): number[] { + const outputDims = dims.slice(); + for (let i = 0; i < axes.length; i++) { + if (keepDims) { + outputDims[axes[i]] = 1; + } else { + outputDims[axes[i]] = 0; + } + } + return outputDims.filter(dim => dim !== 0); + } +} + +export class PoolConvUtil { + /** + * Adjust the kernel, strides, pads to correct rank. Set to default value if not present + * @param isGlobalOperator If true, perform global pooling. + * @param inputDims The input tensor dimension. + * @param kernelShape The size of the kernel along each axis. + * @param strides Stride along each axis. + * @param pads Padding for the beginning and ending along each axis. + */ + static adjustPoolAttributes( + isGlobalOperator: boolean, inputDims: readonly number[], kernelShape: number[], strides: number[], + pads: number[]) { + if (!isGlobalOperator && kernelShape.length !== inputDims.length - 2) { + throw new Error('length of specified kernel shapes should be 2 less than length of input dimensions'); + } + + if (isGlobalOperator) { + // adjust kernel shape to cover the input dims + for (let dim = 0; dim < inputDims.length - 2; dim++) { + if (dim >= kernelShape.length) { + kernelShape.push(inputDims[dim + 2]); + } else { + kernelShape[dim] = inputDims[dim + 2]; + } + } + } + + // adjust strides length to match kernel shape length + for (let dim = 0; dim < kernelShape.length; dim++) { + if (dim < strides.length) { + if (strides[dim] < 0) { + throw new Error('strides should be greater than or equal to 1'); + } + } else { + strides.push(1); + } + } + + // adjust pads length to match 2 * kernel shape length + for (let dim = 0; dim < kernelShape.length * 2; dim++) { + if (dim < pads.length) { + if (pads[dim] < 0) { + throw new Error('pad should be greater than or equal to 1'); + } + } else { + pads.push(0); + } + } + + // sanity checks for values in kernel shapes and pads + for (let dim = 0; dim < kernelShape.length; dim++) { + if (kernelShape[dim] <= 0) { + throw new Error('kernel shapes need to be greater than 0'); + } + + if (pads[dim] >= kernelShape[dim] || pads[dim + kernelShape.length] >= kernelShape[dim]) { + throw new Error('pads should be smaller than kernel'); + } + } + } + + // adjust pad values based on 'autoPad' attribute + static adjustPadsBasedOnAutoPad( + inputDims: readonly number[], strides: number[], dilations: number[], kernelShape: number[], pads: number[], + autoPad?: string) { + if (!autoPad) { + return; + } + + if (pads.length !== 2 * (inputDims.length - 2)) { + throw new Error('length of pads should be twice the length of data dimensions'); + } + + if (strides.length !== (inputDims.length - 2)) { + throw new Error('length of strides should be the length of data dimensions'); + } + + if (kernelShape.length !== (inputDims.length - 2)) { + throw new Error('length of kernel shapes should be the length of data dimensions'); + } + + for (let dim = 0; dim < inputDims.length - 2; dim++) { + PoolConvUtil.adjustPadAndReturnShape( + inputDims[dim + 2], strides[dim], dilations[dim], kernelShape[dim], pads, dim, dim + inputDims.length - 2, + autoPad); + } + } + + /** + * Calculate the output shape for Pool ops based on input attributes. (Should be used only for Pool ops) + * @param isGlobalOperator If true, perform global pooling. + * @param inputDims The input tensor dimension. (inputs[0].dims) + * @param strides Stride along each axis. + * @param kernelShape The size of the kernel along each axis. + * @param pads Padding for the beginning and ending along each axis. + * @param autoPad DEPRECATED attribute supported for legacy models. Specifies how to implicitly calculate pads in each + * dimension. Can take values NOTSET, SAME_UPPER, SAME_LOWER, or VALID. + */ + static computePoolOutputShape( + isGlobalOperator: boolean, inputDims: readonly number[], strides: number[], kernelShape: number[], pads: number[], + autoPad?: string): number[] { + if (inputDims.length <= 0) { + throw new Error('input shape must be of size greater than 0'); + } + + // Add batch size and number of channels of output + const outputDims = [inputDims[0], inputDims[1]]; + + // TODO: support dilations for pool operators + const dilations = new Array(kernelShape.length).fill(1); + + PoolConvUtil.computeShapeHelper( + isGlobalOperator, inputDims, outputDims, strides, dilations, kernelShape, pads, autoPad); + return outputDims; + } + + /** + * Calculate the output shape for Conv op based on input attributes. (Should be used only for Conv op) + * @param inputDims The input tensor dimension. (inputs[0].dims) + * @param filterDims The filter tensor dimension. (inputs[1].dims) + * @param strides Stride along each axis. + * @param kernelShape The size of the kernel along each axis. + * @param pads Padding for the beginning and ending along each axis. + * @param autoPad DEPRECATED attribute supported for legacy models. Specifies how to implicitly calculate pads in each + * dimension. Can take values NOTSET, SAME_UPPER, SAME_LOWER, or VALID. + */ + static computeConvOutputShape( + inputDims: readonly number[], filterDims: readonly number[], strides: number[], dilations: number[], + kernelShape: number[], pads: number[], autoPad?: string): number[] { + if (inputDims.length <= 0 || filterDims.length <= 0) { + throw new Error('invalid input tensor dims or invalid filter tensor dims'); + } + + // Add batch size and number of channels of output + const outputDims = [inputDims[0], filterDims[0]]; + + PoolConvUtil.computeShapeHelper(false, inputDims, outputDims, strides, dilations, kernelShape, pads, autoPad); + return outputDims; + } + + // will compute output shapes for data dimensions ONLY (i.e.) no batch size and channels + // called by computePoolOutputShape() and computeConvOutputShape() + // adjust pads based on 'autoPad' attribute prior to shape computation + private static computeShapeHelper( + isGlobalOperator: boolean, inputDims: readonly number[], outputDims: number[], strides: readonly number[], + dilations: readonly number[], kernelShape: readonly number[], pads: number[], autoPad?: string) { + if (isGlobalOperator) { + for (let dim = 0; dim < inputDims.length - 2; dim++) { + outputDims.push(1); + } + } else { + for (let dim = 0; dim < inputDims.length - 2; dim++) { + outputDims.push(PoolConvUtil.adjustPadAndReturnShape( + inputDims[dim + 2], strides[dim], dilations[dim], kernelShape[dim], pads, dim, dim + inputDims.length - 2, + autoPad)); + } + } + } + + // helper for computeShapeHelper() and adjustPadsBasedOnAutoPad() + // adjusts pad value for given 'autoPad' string and computes output shape along a particular dimension + private static adjustPadAndReturnShape( + inSize: number, stride: number, dilation: number, kernel: number, pads: number[], padHeadIndex: number, + padTailIndex: number, autoPad?: string): number { + const dkernel = dilation * (kernel - 1) + 1; + if (autoPad && autoPad !== 'NOTSET') { + switch (autoPad) { + case 'VALID': + pads[padHeadIndex] = 0; + pads[padTailIndex] = 0; + return Math.floor(((inSize - dkernel) / stride) + 1); + case 'SAME_LOWER': + case 'SAME_UPPER': + if (dilation !== 1) { + throw new Error('Dilation not supported for SAME_UPPER or SAME_LOWER'); + } else { + const legacyTargetSize = (inSize + stride - 1) / stride; + const padNeeded = (legacyTargetSize - 1) * stride + kernel - inSize; + pads[padHeadIndex] = + (autoPad === 'SAME_LOWER') ? Math.floor((padNeeded + 1) / 2) : Math.floor(padNeeded / 2); + pads[padTailIndex] = padNeeded - pads[padHeadIndex]; + return Math.floor(((inSize + padNeeded - kernel) / stride) + 1); + } + default: + throw new Error('Unsupported AutoPad type'); + } + } else { + return Math.floor(((inSize + pads[padHeadIndex] + pads[padTailIndex] - dkernel) / stride) + 1); + } + } +} diff --git a/js/web/lib/wasm/binding/index.ts b/js/web/lib/wasm/binding/index.ts new file mode 100644 index 0000000000..b01fc1a784 --- /dev/null +++ b/js/web/lib/wasm/binding/index.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import wasmModuleFactory, {BackendWasmModule} from './onnxruntime_wasm'; + +// some global parameters to deal with wasm binding initialization +let wasm: BackendWasmModule; +let initialized = false; +let initializing = false; + +/** + * initialize the WASM instance. + * + * this function should be called before any other calls to the WASM binding. + */ +export const init = async(): Promise => { + if (initialized) { + return Promise.resolve(); + } + if (initializing) { + throw new Error('multiple calls to \'init()\' detected.'); + } + + initializing = true; + + return new Promise((resolve, reject) => { + wasmModuleFactory().then( + initializedModule => { + // resolve init() promise + wasm = initializedModule; + initializing = false; + initialized = true; + resolve(); + }, + err => { + initializing = false; + reject(err); + }); + }); +}; + +export const getInstance = (): BackendWasmModule => wasm; diff --git a/js/web/lib/wasm/binding/onnxruntime_wasm.d.ts b/js/web/lib/wasm/binding/onnxruntime_wasm.d.ts new file mode 100644 index 0000000000..c9ce55822a --- /dev/null +++ b/js/web/lib/wasm/binding/onnxruntime_wasm.d.ts @@ -0,0 +1,32 @@ +export interface BackendWasmModule extends EmscriptenModule { + stackSave(): number; + stackRestore(stack: number): void; + stackAlloc(size: number): number; + + UTF8ToString(offset: number): string; + lengthBytesUTF8(str: string): number; + stringToUTF8(str: string, offset: number, maxBytes: number): void; + + _OrtInit(): void; + + _OrtCreateSession(dataOffset: number, dataLength: number): number; + _OrtReleaseSession(sessionHandle: number): void; + _OrtGetInputCount(sessionHandle: number): number; + _OrtGetOutputCount(sessionHandle: number): number; + _OrtGetInputName(sessionHandle: number, index: number): number; + _OrtGetOutputName(sessionHandle: number, index: number): number; + + _OrtFree(stringHandle: number): void; + + _OrtCreateTensor(dataType: number, dataOffset: number, dataLength: number, dimsOffset: number, dimsLength: number): + number; + _OrtGetTensorData(tensorHandle: number, dataType: number, dataOffset: number, dimsOffset: number, dimsLength: number): + void; + _OrtReleaseTensor(tensorHandle: number): void; + _OrtRun( + sessionHandle: number, inputNamesOffset: number, inputsOffset: number, inputCount: number, + outputNamesOffset: number, outputCount: number, outputsOffset: number): number; +} + +declare const moduleFactory: EmscriptenModuleFactory; +export default moduleFactory; diff --git a/js/web/lib/wasm/index.ts b/js/web/lib/wasm/index.ts new file mode 100644 index 0000000000..dc4e1ca524 --- /dev/null +++ b/js/web/lib/wasm/index.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +export {init} from './binding'; +export {OnnxruntimeWebAssemblySessionHandler} from './session-handler'; diff --git a/js/web/lib/wasm/session-handler.ts b/js/web/lib/wasm/session-handler.ts new file mode 100644 index 0000000000..ccd1f6cfb9 --- /dev/null +++ b/js/web/lib/wasm/session-handler.ts @@ -0,0 +1,315 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {onnx} from 'onnx-proto'; +import {InferenceSession, SessionHandler, Tensor, TypedTensor} from 'onnxruntime-common'; +import {getInstance} from './binding'; + +let ortInit: boolean; + +const tensorDataTypeStringToEnum = (type: string): onnx.TensorProto.DataType => { + switch (type) { + case 'int8': + return onnx.TensorProto.DataType.INT8; + case 'uint8': + return onnx.TensorProto.DataType.UINT8; + case 'bool': + return onnx.TensorProto.DataType.BOOL; + case 'int16': + return onnx.TensorProto.DataType.INT16; + case 'uint16': + return onnx.TensorProto.DataType.UINT16; + case 'int32': + return onnx.TensorProto.DataType.INT32; + case 'uint32': + return onnx.TensorProto.DataType.UINT32; + case 'float32': + return onnx.TensorProto.DataType.FLOAT; + case 'float64': + return onnx.TensorProto.DataType.DOUBLE; + case 'string': + return onnx.TensorProto.DataType.STRING; + case 'int64': + return onnx.TensorProto.DataType.INT64; + case 'uint64': + return onnx.TensorProto.DataType.UINT64; + + default: + throw new Error(`unsupported data type: ${type}`); + } +}; + +const tensorDataTypeEnumToString = (typeProto: onnx.TensorProto.DataType): Tensor.Type => { + switch (typeProto) { + case onnx.TensorProto.DataType.INT8: + return 'int8'; + case onnx.TensorProto.DataType.UINT8: + return 'uint8'; + case onnx.TensorProto.DataType.BOOL: + return 'bool'; + case onnx.TensorProto.DataType.INT16: + return 'int16'; + case onnx.TensorProto.DataType.UINT16: + return 'uint16'; + case onnx.TensorProto.DataType.INT32: + return 'int32'; + case onnx.TensorProto.DataType.UINT32: + return 'uint32'; + case onnx.TensorProto.DataType.FLOAT: + return 'float32'; + case onnx.TensorProto.DataType.DOUBLE: + return 'float64'; + case onnx.TensorProto.DataType.STRING: + return 'string'; + case onnx.TensorProto.DataType.INT64: + return 'int32'; + case onnx.TensorProto.DataType.UINT64: + return 'uint32'; + + default: + throw new Error(`unsupported data type: ${onnx.TensorProto.DataType[typeProto]}`); + } +}; + +const numericTensorTypeToTypedArray = (type: Tensor.Type): Float32ArrayConstructor|Uint8ArrayConstructor| + Int8ArrayConstructor|Uint16ArrayConstructor|Int16ArrayConstructor|Int32ArrayConstructor|BigInt64ArrayConstructor| + Uint8ArrayConstructor|Float64ArrayConstructor|Uint32ArrayConstructor|BigUint64ArrayConstructor => { + switch (type) { + case 'float32': + return Float32Array; + case 'uint8': + return Uint8Array; + case 'int8': + return Int8Array; + case 'uint16': + return Uint16Array; + case 'int16': + return Int16Array; + case 'int32': + return Int32Array; + case 'bool': + return Uint8Array; + case 'float64': + return Float64Array; + case 'uint32': + return Uint32Array; + case 'int64': + return BigInt64Array; + case 'uint64': + return BigUint64Array; + default: + throw new Error(`unsupported type: ${type}`); + } + }; + +export class OnnxruntimeWebAssemblySessionHandler implements SessionHandler { + private sessionHandle: number; + + inputNames: string[]; + private inputNamesUTF8Encoded: number[]; + outputNames: string[]; + private outputNamesUTF8Encoded: number[]; + + loadModel(model: Uint8Array): void { + const wasm = getInstance(); + if (!ortInit) { + wasm._OrtInit(); + ortInit = true; + } + + const modelDataOffset = wasm._malloc(model.byteLength); + try { + wasm.HEAPU8.set(model, modelDataOffset); + this.sessionHandle = wasm._OrtCreateSession(modelDataOffset, model.byteLength); + } finally { + wasm._free(modelDataOffset); + } + + const inputCount = wasm._OrtGetInputCount(this.sessionHandle); + const outputCount = wasm._OrtGetOutputCount(this.sessionHandle); + + this.inputNames = []; + this.inputNamesUTF8Encoded = []; + this.outputNames = []; + this.outputNamesUTF8Encoded = []; + for (let i = 0; i < inputCount; i++) { + const name = wasm._OrtGetInputName(this.sessionHandle, i); + this.inputNamesUTF8Encoded.push(name); + this.inputNames.push(wasm.UTF8ToString(name)); + } + for (let i = 0; i < outputCount; i++) { + const name = wasm._OrtGetOutputName(this.sessionHandle, i); + this.outputNamesUTF8Encoded.push(name); + this.outputNames.push(wasm.UTF8ToString(name)); + } + } + + async dispose(): Promise { + const wasm = getInstance(); + if (this.inputNamesUTF8Encoded) { + this.inputNamesUTF8Encoded.forEach(str => wasm._OrtFree(str)); + this.inputNamesUTF8Encoded = []; + } + if (this.outputNamesUTF8Encoded) { + this.outputNamesUTF8Encoded.forEach(str => wasm._OrtFree(str)); + this.outputNamesUTF8Encoded = []; + } + if (this.sessionHandle) { + wasm._OrtReleaseSession(this.sessionHandle); + this.sessionHandle = 0; + } + } + + async run( + feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType, + _options: InferenceSession.RunOptions): Promise { + const wasm = getInstance(); + + const inputArray: Tensor[] = []; + const inputIndices: number[] = []; + Object.entries(feeds).forEach(kvp => { + const name = kvp[0]; + const tensor = kvp[1]; + const index = this.inputNames.indexOf(name); + if (index === -1) { + throw new Error(`invalid input '${name}'`); + } + if (tensor.type === 'string') { + // TODO: support string tensor + throw new TypeError('string tensor is not supported'); + } + inputArray.push(tensor); + inputIndices.push(index); + }); + + const outputIndices: number[] = []; + Object.entries(fetches).forEach(kvp => { + const name = kvp[0]; + // TODO: support pre-allocated output + const index = this.outputNames.indexOf(name); + if (index === -1) { + throw new Error(`invalid output '${name}'`); + } + outputIndices.push(index); + }); + + const inputCount = inputIndices.length; + const outputCount = outputIndices.length; + + const inputValues: number[] = []; + const inputDataOffsets: number[] = []; + // create input tensors + for (let i = 0; i < inputCount; i++) { + const data = inputArray[i].data; + if (Array.isArray(data)) { + // string tensor + throw new TypeError('string tensor is not supported'); + } else { + const dataOffset = wasm._malloc(data.byteLength); + inputDataOffsets.push(dataOffset); + wasm.HEAPU8.set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength), dataOffset); + + const dims = inputArray[i].dims; + + const stack = wasm.stackSave(); + const dimsOffset = wasm.stackAlloc(4 * dims.length); + try { + let dimIndex = dimsOffset / 4; + dims.forEach(d => wasm.HEAP32[dimIndex++] = d); + const tensor = wasm._OrtCreateTensor( + tensorDataTypeStringToEnum(inputArray[i].type), dataOffset, data.byteLength, dimsOffset, dims.length); + inputValues.push(tensor); + } finally { + wasm.stackRestore(stack); + } + } + } + + const beforeRunStack = wasm.stackSave(); + const inputValuesOffset = wasm.stackAlloc(inputCount * 4); + const inputNamesOffset = wasm.stackAlloc(inputCount * 4); + const outputValuesOffset = wasm.stackAlloc(outputCount * 4); + const outputNamesOffset = wasm.stackAlloc(outputCount * 4); + try { + let inputValuesIndex = inputValuesOffset / 4; + let inputNamesIndex = inputNamesOffset / 4; + let outputValuesIndex = outputValuesOffset / 4; + let outputNamesIndex = outputNamesOffset / 4; + for (let i = 0; i < inputCount; i++) { + wasm.HEAPU32[inputValuesIndex++] = inputValues[i]; + wasm.HEAPU32[inputNamesIndex++] = this.inputNamesUTF8Encoded[inputIndices[i]]; + } + for (let i = 0; i < outputCount; i++) { + wasm.HEAPU32[outputValuesIndex++] = 0; + wasm.HEAPU32[outputNamesIndex++] = this.outputNamesUTF8Encoded[outputIndices[i]]; + } + + // support RunOptions + const errorCode = wasm._OrtRun( + this.sessionHandle, inputNamesOffset, inputValuesOffset, inputCount, outputNamesOffset, outputCount, + outputValuesOffset); + + const output: {[name: string]: Tensor} = {}; + + if (errorCode === 0) { + for (let i = 0; i < outputCount; i++) { + const tensor = wasm.HEAPU32[outputValuesOffset / 4 + i]; + + const beforeGetTensorDataStack = wasm.stackSave(); + // stack allocate 4 pointer value + const tensorDataOffset = wasm.stackAlloc(4 * 4); + try { + wasm._OrtGetTensorData( + tensor, tensorDataOffset, tensorDataOffset + 4, tensorDataOffset + 8, tensorDataOffset + 12); + let tensorDataIndex = tensorDataOffset / 4; + const dataType = wasm.HEAPU32[tensorDataIndex++]; + const dataOffset: number = wasm.HEAPU32[tensorDataIndex++]; + const dimsOffset = wasm.HEAPU32[tensorDataIndex++]; + const dimsLength = wasm.HEAPU32[tensorDataIndex++]; + const dims = []; + for (let i = 0; i < dimsLength; i++) { + dims.push(wasm.HEAPU32[dimsOffset / 4 + i]); + } + wasm._OrtFree(dimsOffset); + + const type = tensorDataTypeEnumToString(dataType); + if (type === 'string') { + // string tensor + throw new TypeError('string tensor is not supported'); + } else { + const typedArray = numericTensorTypeToTypedArray(type); + const size = dims.length === 0 ? 1 : dims.reduce((a, b) => a * b); + const t = new Tensor(type, new typedArray(size), dims) as TypedTensor>; + new Uint8Array(t.data.buffer, t.data.byteOffset, t.data.byteLength) + .set(wasm.HEAPU8.subarray(dataOffset, dataOffset + t.data.byteLength)); + output[this.outputNames[outputIndices[i]]] = t; + } + } finally { + wasm.stackRestore(beforeGetTensorDataStack); + } + + wasm._OrtReleaseTensor(tensor); + } + } + + inputValues.forEach(t => wasm._OrtReleaseTensor(t)); + inputDataOffsets.forEach(i => wasm._free(i)); + + if (errorCode === 0) { + return output; + } else { + throw new Error(`failed to call OrtRun(). error code = ${errorCode}.`); + } + } finally { + wasm.stackRestore(beforeRunStack); + } + } + + startProfiling(): void { + // TODO: implement profiling + } + + endProfiling(): void { + // TODO: implement profiling + } +} diff --git a/js/web/package-lock.json b/js/web/package-lock.json new file mode 100644 index 0000000000..73400f143e --- /dev/null +++ b/js/web/package-lock.json @@ -0,0 +1,5312 @@ +{ + "name": "onnxruntime-web", + "version": "1.7.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@chiragrupani/karma-chromium-edge-launcher": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chiragrupani/karma-chromium-edge-launcher/-/karma-chromium-edge-launcher-2.1.0.tgz", + "integrity": "sha512-POHDni57WeEzA/liw8Ksdzj9FLDoX0KPtvBG+jhXEBcPPARKdRCiP5ntBQLWIHZbp61g5G2g1sD5ZuGuLYyhPA==", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, + "@electron/get": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz", + "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/chai": { + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.16.tgz", + "integrity": "sha512-vI5iOAsez9+roLS3M3+Xx7w+WRuDtSmF8bQkrbcIJ2sC1PcDgVoA0WGpa+bIrJ+y8zqY2oi//fUctkxtIcXJCw==", + "dev": true + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, + "@types/emscripten": { + "version": "1.39.4", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.4.tgz", + "integrity": "sha512-k3LLVMFrdNA9UCvMDPWMbFrGPNb+GcPyw29ktJTo1RCN7RmxFG5XzPZcPKRlnLuLT/FRm8wp4ohvDwNY7GlROQ==", + "dev": true + }, + "@types/eslint": { + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.8.tgz", + "integrity": "sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true + }, + "@types/fs-extra": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.10.tgz", + "integrity": "sha512-O9T2LLkRDiTlalOBdjEkcnT0MRdT2+wglCl7pJUJ3mkWkR8hX4K+5bg2raQNJcLv4V8zGuTXe7Ud3wSqkTyuyQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "@types/karma": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.1.0.tgz", + "integrity": "sha512-JLrEceom1osyv6pUKDCT1Z2WGcecj5UKb99xvEXashYha1B6ntNBNBLTqcVxD2G5PiL5zcpaQodHatnhk3YG+Q==", + "dev": true, + "requires": { + "@types/node": "*", + "log4js": "^6.2.1" + } + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/mocha": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz", + "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", + "dev": true + }, + "@types/node": { + "version": "14.14.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", + "dev": true + }, + "@types/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA==", + "dev": true + }, + "@types/platform": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.3.tgz", + "integrity": "sha512-1fuOulBHWIxAPLBtLms+UtbeRDt6rL7gP5R+Yugfzdg+poCLxXqXTE8i+FpYeiytGRLUEtnFkjsY/j+usbQBqw==", + "dev": true + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz", + "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz", + "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz", + "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", + "dev": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dev": true, + "requires": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "async": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.0.1.tgz", + "integrity": "sha512-ZswD8vwPtmBZzbn9xyi8XBQWXH3AvOQ43Za1KWYq7JeycrZuUYzx01KvHcVbXltjqH4y0MWrQ33008uLTqXuDw==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "boolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.3.tgz", + "integrity": "sha512-EqrTKXQX6Z3A2nRmMEIlAIfjQOgFnVO2nqZGpbcsPnYGWBwpFqzlrozU1dy+S2iqfYDLh26ef4KrgTxu9xQrxA==", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "browserstack-local": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.4.8.tgz", + "integrity": "sha512-s+mc3gTOJwELdLWi4qFVKtGwMbb5JWsR+JxKlMaJkRJxoZ0gg3WREgPxAN0bm6iU5+S4Bi0sz0oxBRZT8BiNsQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^4.0.0", + "is-running": "^2.1.0", + "ps-tree": "=1.2.0", + "temp-fs": "^0.9.9" + }, + "dependencies": { + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true + }, + "https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dev": true, + "requires": { + "agent-base": "5", + "debug": "4" + } + } + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001207", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", + "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", + "dev": true + }, + "chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "dev": true, + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.2.0.tgz", + "integrity": "sha1-RMCMJQbxD7PKb9iI1aNETPjWpmk=", + "dev": true + }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + }, + "core-js": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.1.tgz", + "integrity": "sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA==", + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-node": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", + "dev": true, + "optional": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz", + "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "edge-launcher": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/edge-launcher/-/edge-launcher-1.2.2.tgz", + "integrity": "sha1-60Cq+9Bnpup27/+rBke81VCbN7I=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-12.0.2.tgz", + "integrity": "sha512-14luh9mGzfL4e0sncyy0+kW37IU7Y0Y1tvI97FDRSW0ZBQxi5cmAwSs5dmPmNBFBIGtzkaGaEB01j9RjZuCmow==", + "dev": true, + "requires": { + "@electron/get": "^1.0.1", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + } + }, + "electron-to-chromium": { + "version": "1.3.710", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.710.tgz", + "integrity": "sha512-b3r0E2o4yc7mNmBeJviejF1rEx49PUBi+2NPa7jHEX3arkAXnVgLhR0YmV8oi6/Qf3HH2a8xzQmCjHNH0IpXWQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dev": true, + "requires": { + "base64-arraybuffer": "0.1.4" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "es-module-lexer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", + "dev": true + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "dev": true + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz", + "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "optional": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-docker": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.0.tgz", + "integrity": "sha512-K4GwB4i/HzhAzwP/XSlspzRdFTI9N8OxJOyOU7Y5Rz+p+WBokXWVWblaJeBkggthmoSV0OoGTH5thJNvplpkvQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-function": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-running": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", + "integrity": "sha1-MKc/9cw4VOT8JUkICen1q/jeCeA=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "karma": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" + } + }, + "karma-browserstack-launcher": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.6.0.tgz", + "integrity": "sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==", + "dev": true, + "requires": { + "browserstack": "~1.5.1", + "browserstack-local": "^1.3.7", + "q": "~1.5.0" + } + }, + "karma-chai": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", + "integrity": "sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o=", + "dev": true + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-edge-launcher": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", + "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", + "dev": true, + "requires": { + "edge-launcher": "1.2.2" + } + }, + "karma-electron": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/karma-electron/-/karma-electron-7.0.0.tgz", + "integrity": "sha512-AMwpMCWbYVhqaw9gzUIzmsCftB1ttiNJE4lm+BKPgxmxszdNfIG3gNpxH2rUxwP4aKWucFPo1vAJ4nMQfNBZ3Q==", + "dev": true, + "requires": { + "async": "~3.0.1", + "combine-source-map": "~0.8.0", + "commander": "~2.9.0", + "convert-source-map": "~1.2.0", + "js-string-escape": "~1.0.0", + "minstache": "~1.2.0", + "xtend": "~4.0.1" + } + }, + "karma-firefox-launcher": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.0.tgz", + "integrity": "sha512-dkiyqN2R6fCWt78rciOXJLFDWcQ7QEQi++HgebPJlw1y0ycDjGNDHuSrhdh48QG02fzZKK20WHFWVyBZ6CPngg==", + "dev": true, + "requires": { + "is-wsl": "^2.2.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "karma-mocha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "dev": true, + "requires": { + "minimist": "^1.2.3" + } + }, + "karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + } + }, + "karma-safari-applescript-launcher": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/karma-safari-applescript-launcher/-/karma-safari-applescript-launcher-0.1.0.tgz", + "integrity": "sha512-BAg8Q+VFgb8G9IajAYWvFSmvCYBr/RwqwZBRs6jbyaoIrHdi5boPgjz92c+y95zcKtsOqg8hncelsuuU6pA4hw==", + "dev": true, + "requires": { + "run-applescript": "^3.2.0" + } + }, + "karma-sourcemap-loader": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", + "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "keypress": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "optional": true + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dev": true, + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minstache": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minstache/-/minstache-1.2.0.tgz", + "integrity": "sha1-/xzEA6woRPaNvxjGYhKb5+sO/EE=", + "dev": true, + "requires": { + "commander": "1.0.4" + }, + "dependencies": { + "commander": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/commander/-/commander-1.0.4.tgz", + "integrity": "sha1-Xt6xruI8T7VBprcNaSq+8ZZpotM=", + "dev": true, + "requires": { + "keypress": "0.1.x" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", + "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-polyfill-webpack-plugin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.0.tgz", + "integrity": "sha512-6eKoqK2BpKqUFN1oI1TRoF9TgpsUC1Y8JaT+UUNuUiODhZIm3vcSoNrsqGAoHAhpZxKF0+9MU9VxOWJR/YjpIA==", + "dev": true, + "requires": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.19.0", + "events": "^3.3.0", + "filter-obj": "^2.0.1", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.1.1", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "url": "^0.11.0", + "util": "^0.12.3", + "vm-browserify": "^1.1.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "numpy-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/numpy-parser/-/numpy-parser-1.2.3.tgz", + "integrity": "sha512-hdb0XHWTMk9lOyWxHWbwwstD2MQxpecIbqURtyrAxEf8OUbUjEbdjTu/PimTycX99/l7pSMbtw7ueANMcfQzcA==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", + "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "onnx-proto": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", + "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", + "requires": { + "protobufjs": "^6.8.8" + } + }, + "onnxruntime-common": { + "version": "file:../common" + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "optional": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true, + "optional": true + }, + "protobufjs": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz", + "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "13.13.48", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.48.tgz", + "integrity": "sha512-z8wvSsgWQzkr4sVuMEEOvwMdOQjiRY2Y/ZW4fDfjfe3+TfQrZqFKOthBgk2RnVEmtOKrkwdZ7uTvsxTBLjKGDQ==" + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "ps-tree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "dev": true, + "requires": { + "event-stream": "=3.3.4" + } + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "run-applescript": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-3.2.0.tgz", + "integrity": "sha512-Ep0RsvAjnRcBX1p5vogbaBdAGu/8j/ewpvGqnQYunnLd9SM0vWcPJewPKNnWFggf0hF0pwIgwV5XK7qQ7UZ8Qg==", + "dev": true, + "requires": { + "execa": "^0.10.0" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true, + "optional": true + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "requires": { + "type-fest": "^0.13.1" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "socket.io": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" + } + }, + "socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", + "dev": true + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "requires": { + "debug": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "temp-fs": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", + "integrity": "sha1-gHFzBDeHByDpQxUy/igUNk+IA9c=", + "dev": true, + "requires": { + "rimraf": "~2.5.2" + }, + "dependencies": { + "rimraf": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + } + } + }, + "terser": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "dev": true, + "requires": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "ts-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.1.0.tgz", + "integrity": "sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "optional": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.27", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.27.tgz", + "integrity": "sha512-eXMaRYK2skomGocoX0x9sBXzx5A1ZVQgXfrW4mTc8dT0zS7olEcyfudAzRC5tIIRgLxQ69B6jut3DI+n5hslPA==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.31.0.tgz", + "integrity": "sha512-3fUfZT/FUuThWSSyL32Fsh7weUUfYP/Fjc/cGSbla5KiSo0GtI1JMssCRUopJTvmLjrw05R2q7rlLtiKdSzkzQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.4.0", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "dependencies": { + "enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", + "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.2", + "@webpack-cli/info": "^1.2.3", + "@webpack-cli/serve": "^1.3.1", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", + "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/js/web/package.json b/js/web/package.json new file mode 100644 index 0000000000..77946f0381 --- /dev/null +++ b/js/web/package.json @@ -0,0 +1,67 @@ +{ + "name": "onnxruntime-web", + "version": "1.7.0", + "description": "A Javascript library for running ONNX models on browsers and on Node.js", + "main": "./lib/index.js", + "browser": "./dist/ort-web.min.js", + "types": "./types/lib/index.d.ts", + "scripts": { + "prepare": "tsc && node ./script/prepare-test-data.js", + "build": "node ./script/build.js", + "test": "node ./script/test-runner-cli.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/onnxruntime.git" + }, + "keywords": [ + "ONNX Runtime Web" + ], + "author": "fs-eire", + "license": "MIT", + "dependencies": { + "long": "^4.0.0", + "onnx-proto": "^4.0.4", + "onnxruntime-common": "file:../common", + "platform": "^1.3.6" + }, + "devDependencies": { + "@chiragrupani/karma-chromium-edge-launcher": "^2.1.0", + "@types/chai": "^4.2.16", + "@types/emscripten": "^1.39.4", + "@types/fs-extra": "^9.0.10", + "@types/karma": "^6.1.0", + "@types/long": "^4.0.1", + "@types/minimatch": "^3.0.4", + "@types/minimist": "^1.2.1", + "@types/mocha": "^8.2.2", + "@types/npmlog": "^4.1.2", + "@types/platform": "^1.3.3", + "chai": "^4.3.4", + "electron": "^12.0.2", + "fs-extra": "^9.1.0", + "globby": "^11.0.3", + "karma": "^6.3.2", + "karma-browserstack-launcher": "^1.6.0", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^3.1.0", + "karma-edge-launcher": "^0.4.2", + "karma-electron": "^7.0.0", + "karma-firefox-launcher": "^2.1.0", + "karma-mocha": "^2.0.1", + "karma-mocha-reporter": "^2.2.5", + "karma-safari-applescript-launcher": "^0.1.0", + "karma-sourcemap-loader": "^0.3.8", + "minimatch": "^3.0.4", + "minimist": "^1.2.5", + "mocha": "^8.3.2", + "node-polyfill-webpack-plugin": "^1.1.0", + "npmlog": "^4.1.2", + "numpy-parser": "^1.2.3", + "strip-json-comments": "^3.1.1", + "ts-loader": "^8.1.0", + "typescript": "^4.2.3", + "webpack": "^5.30.0", + "webpack-cli": "^4.6.0" + } +} diff --git a/js/web/script/build.ts b/js/web/script/build.ts new file mode 100644 index 0000000000..8afd7f8048 --- /dev/null +++ b/js/web/script/build.ts @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {execSync, spawnSync} from 'child_process'; +import * as fs from 'fs-extra'; +import minimist from 'minimist'; +import npmlog from 'npmlog'; +import * as path from 'path'; + +// CMD args +const args = minimist(process.argv); +const MODE = args.config || 'prod'; // prod|dev|test +if (['prod', 'dev', 'test'].indexOf(MODE) === -1) { + throw new Error(`unknown build mode: ${MODE}`); +} + +// Path variables +const WASM_BINDING_FOLDER = path.join(__dirname, '..', 'lib', 'wasm', 'binding'); +const WASM_JS_PATH = path.join(WASM_BINDING_FOLDER, 'onnxruntime_wasm.js'); +const WASM_PATH = path.join(WASM_BINDING_FOLDER, 'onnxruntime_wasm.wasm'); +const WASM_DIST_FOLDER = path.join(__dirname, '..', 'dist'); +const WASM_DIST_PATH = path.join(WASM_DIST_FOLDER, 'onnxruntime_wasm.wasm'); + +try { + npmlog.info('Build', `Ensure file: ${WASM_JS_PATH}`); + if (!fs.pathExistsSync(WASM_JS_PATH)) { + throw new Error(`file does not exist: ${WASM_JS_PATH}`); + } + npmlog.info('Build', `Ensure file: ${WASM_PATH}`); + if (!fs.pathExistsSync(WASM_PATH)) { + throw new Error(`file does not exist: ${WASM_PATH}`); + } +} catch (e) { + npmlog.error('Build', `WebAssembly files are not ready. build WASM first. ERR: ${e}`); + throw e; +} + +npmlog.info('Build', `Copying file "${WASM_PATH}" to "${WASM_DIST_PATH}"...`); +fs.ensureDirSync(WASM_DIST_FOLDER); +fs.copyFileSync(WASM_PATH, WASM_DIST_PATH); + +npmlog.info('Build', 'Building bundle...'); +{ + npmlog.info('Build.Bundle', '(1/2) Retrieving npm bin folder...'); + const npmBin = execSync('npm bin', {encoding: 'utf8'}).trimRight(); + npmlog.info('Build.Bundle', `(1/2) Retrieving npm bin folder... DONE, folder: ${npmBin}`); + + npmlog.info('Build.Bundle', '(2/2) Running webpack to generate bundles...'); + const webpackCommand = path.join(npmBin, 'webpack'); + const webpackArgs = ['--env', `--bundle-mode=${MODE}`]; + npmlog.info('Build.Bundle', `CMD: ${webpackCommand} ${webpackArgs.join(' ')}`); + const webpack = spawnSync(webpackCommand, webpackArgs, {shell: true, stdio: 'inherit'}); + if (webpack.status !== 0) { + console.error(webpack.error); + process.exit(webpack.status === null ? undefined : webpack.status); + } + npmlog.info('Build.Bundle', '(2/2) Running webpack to generate bundles... DONE'); +} +npmlog.info('Build', 'Building bundle... DONE'); diff --git a/js/web/script/prepare-test-data.ts b/js/web/script/prepare-test-data.ts new file mode 100644 index 0000000000..429015f60b --- /dev/null +++ b/js/web/script/prepare-test-data.ts @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {spawnSync} from 'child_process'; +import * as fs from 'fs-extra'; +import minimist from 'minimist'; +import npmlog from 'npmlog'; +import * as path from 'path'; + +const ROOT = path.join(__dirname, '..', '..', '..'); +const DEPS_ONNX = path.join(ROOT, 'cmake', 'external', 'onnx'); +const TEST_DATA_ROOT = path.join(__dirname, '..', 'test', 'data'); +const TEST_DATA_NODE = path.join(TEST_DATA_ROOT, 'node'); + +const args = minimist(process.argv); +// prepare test data only when eiter flag '-f' or '--force' is specified, or the folder does not exist. +if (args.f || args.force || !fs.existsSync(TEST_DATA_NODE)) { + npmlog.info('PrepareTestData', 'Preparing node tests ...'); + fs.removeSync(TEST_DATA_NODE); + [['v7', 'rel-1.2.3'], + ['v8', 'rel-1.3.0'], + ['v9', 'rel-1.4.1'], + ['v10', 'rel-1.5.0'], + ['v11', 'rel-1.6.1'], + ['v12', 'rel-1.7.0'], + ].forEach(v => { + const version = v[0]; + const commit = v[1]; + npmlog.info('PrepareTestData', `Checking out deps/onnx ${commit}...`); + const checkout = spawnSync(`git checkout -q -f ${commit}`, {shell: true, stdio: 'inherit', cwd: DEPS_ONNX}); + if (checkout.status !== 0) { + if (checkout.error) { + console.error(checkout.error); + } + process.exit(checkout.status === null ? undefined : checkout.status); + } + const from = path.join(DEPS_ONNX, 'onnx/backend/test/data/node'); + const to = path.join(TEST_DATA_NODE, version); + npmlog.info('PrepareTestData', `Copying folders from "${from}" to "${to}"...`); + fs.copySync(from, to); + }); + + npmlog.info('PrepareTestData', 'Revert git index...'); + const update = spawnSync(`git submodule update ${DEPS_ONNX}`, {shell: true, stdio: 'inherit', cwd: ROOT}); + if (update.status !== 0) { + if (update.error) { + console.error(update.error); + } + process.exit(update.status === null ? undefined : update.status); + } + npmlog.info('PrepareTestData', 'Revert git index... DONE'); +} diff --git a/js/web/script/test-runner-cli-args.ts b/js/web/script/test-runner-cli-args.ts new file mode 100644 index 0000000000..9491e4b882 --- /dev/null +++ b/js/web/script/test-runner-cli-args.ts @@ -0,0 +1,391 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import minimist from 'minimist'; +import npmlog from 'npmlog'; +import {InferenceSession} from 'onnxruntime-common'; + +import {WebGLFlags} from '../lib/backend-onnxjs'; +import {WebAssemblyFlags} from '../lib/backend-wasm'; +import {Logger} from '../lib/onnxjs/instrument'; +import {Test} from '../test/test-types'; + +/* eslint-disable max-len */ +const HELP_MESSAGE = ` +test-runner-cli + +Run ONNX.js tests, models, benchmarks in different environments. + +Usage: + test-runner-cli ... [options] + +Modes: + suite0 Run all unittests, all operator tests and node model tests that described in white list + model Run a single model test + unittest Run all unittests + op Run a single operator test + +Options: + +*** General Options *** + + -h, --help Print this message. + -d, --debug Specify to run test runner in debug mode. + Debug mode outputs verbose log for test runner, sets up ONNX.js environment debug flag, and keeps karma not to exit after tests completed. + -b=<...>, --backend=<...> Specify one or more backend(s) to run the test upon. + Backends can be one or more of the following, splitted by comma: + webgl + wasm + -e=<...>, --env=<...> Specify the environment to run the test. Should be one of the following: + chrome (default) + edge (Windows only) + firefox + electron + safari (MacOS only) + node + bs (for BrowserStack tests) + -p, --profile Enable profiler. + Profiler will generate extra logs which include the information of events time consumption + -P[=<...>], --perf[=<...>] Generate performance number. Cannot be used with flag --debug. + This flag can be used with a number as value, specifying the total count of test cases to run. The test cases may be used multiple times. Default value is 10. + -c, --file-cache Enable file cache. + +*** Logging Options *** + + --log-verbose=<...> Set log level to verbose + --log-info=<...> Set log level to info + --log-warning=<...> Set log level to warning + --log-error=<...> Set log level to error + The 4 flags above specify the logging configuration. Each flag allows to specify one or more category(s), splitted by comma. If use the flags without value, the log level will be applied to all category. + +*** Backend Options *** + + --wasm-worker Set the WebAssembly worker number + --wasm-init-timeout Set the timeout for WebAssembly backend initialization, in milliseconds + --webgl-context-id Set the WebGL context ID (webgl/webgl2) + --webgl-matmul-max-batch-size Set the WebGL matmulMaxBatchSize + --webgl-texture-cache-mode Set the WebGL texture cache mode (initializerOnly/full) + --webgl-texture-pack-mode Set the WebGL texture pack mode (true/false) + +*** Browser Options *** + + --no-sandbox This flag will be passed to Chrome. + Sometimes Chrome need this flag to work together with Karma. + +Examples: + + Run all suite0 tests: + > test-runner-cli suite0 + + Run single model test (test_relu) on WebAssembly backend + > test-runner-cli model test_relu --backend=wasm + + Debug unittest + > test-runner-cli unittest --debug + + Debug operator matmul, highlight verbose log from BaseGlContext and WebGLBackend + > test-runner-cli op matmul --backend=webgl --debug --log-verbose=BaseGlContext,WebGLBackend + + Profile an ONNX model on WebGL backend + > test-runner-cli model --profile --backend=webgl + + Run perf testing of an ONNX model on WebGL backend + > test-runner-cli model -b=webgl -P + `; +/* eslint-enable max-len */ + +export declare namespace TestRunnerCliArgs { + type Mode = 'suite0'|'model'|'unittest'|'op'; + type Backend = 'cpu'|'webgl'|'wasm'|'onnxruntime'; + type Environment = 'chrome'|'edge'|'firefox'|'electron'|'safari'|'node'|'bs'; + type BundleMode = 'prod'|'dev'|'perf'; +} + +export interface TestRunnerCliArgs { + debug: boolean; + mode: TestRunnerCliArgs.Mode; + /** + * The parameter that used when in mode 'model' or 'op', specifying the search string for the model or op test + */ + param?: string; + backends: [TestRunnerCliArgs.Backend]; + env: TestRunnerCliArgs.Environment; + + /** + * Bundle Mode + * + * this field affects the behavior of Karma and Webpack. + * + * For Karma, if flag '--bundle-mode' is not set, the default behavior is 'dev' + * For Webpack, if flag '--bundle-mode' is not set, the default behavior is 'prod' + * + * For running tests, the default mode is 'dev'. If flag '--perf' is set, the mode will be set to 'perf'. + * + * Mode | Output File | Main | Source Map | Webpack Config + * ------ | ------------------ | -------------------- | ------------------ | -------------- + * prod | /dist/ort.min.js | /lib/index.ts | source-map | production + * dev | /test/ort.dev.js | /test/test-main.ts | inline-source-map | development + * perf | /test/ort.perf.js | /test/test-main.ts | (none) | production + */ + bundleMode: TestRunnerCliArgs.BundleMode; + + logConfig: Test.Config['log']; + + /** + * Whether to enable InferenceSession's profiler + */ + profile: boolean; + + /** + * Whether to enable file cache + */ + fileCache: boolean; + + /** + * Specify the times that test cases to run + */ + times?: number; + + cpuOptions?: InferenceSession.CpuExecutionProviderOption; + cpuFlags?: Record; + cudaOptions?: InferenceSession.CudaExecutionProviderOption; + cudaFlags?: Record; + wasmOptions?: InferenceSession.WebAssemblyExecutionProviderOption; + wasmFlags?: WebAssemblyFlags; + webglOptions?: InferenceSession.WebGLExecutionProviderOption; + webglFlags?: WebGLFlags; + + noSandbox?: boolean; +} + + +function parseBooleanArg(arg: unknown, defaultValue: boolean): boolean; +function parseBooleanArg(arg: unknown): boolean|undefined; +function parseBooleanArg(arg: unknown, defaultValue?: boolean): boolean|undefined { + if (typeof arg === 'undefined') { + return defaultValue; + } + + if (typeof arg === 'boolean') { + return arg; + } + + if (typeof arg === 'number') { + return arg !== 0; + } + + if (typeof arg === 'string') { + if (arg.toLowerCase() === 'true') { + return true; + } + if (arg.toLowerCase() === 'false') { + return false; + } + } + + throw new TypeError(`invalid boolean arg: ${arg}`); +} + +function parseLogLevel(arg: T) { + let v: string[]|boolean; + if (typeof arg === 'string') { + v = arg.split(','); + } else if (Array.isArray(arg)) { + v = []; + for (const e of arg) { + v.push(...e.split(',')); + } + } else { + v = arg ? true : false; + } + return v; +} + +function parseLogConfig(args: minimist.ParsedArgs) { + const config: Array<{category: string; config: Logger.Config}> = []; + const verbose = parseLogLevel(args['log-verbose']); + const info = parseLogLevel(args['log-info']); + const warning = parseLogLevel(args['log-warning']); + const error = parseLogLevel(args['log-error']); + + if (typeof error === 'boolean' && error) { + config.push({category: '*', config: {minimalSeverity: 'error'}}); + } else if (typeof warning === 'boolean' && warning) { + config.push({category: '*', config: {minimalSeverity: 'warning'}}); + } else if (typeof info === 'boolean' && info) { + config.push({category: '*', config: {minimalSeverity: 'info'}}); + } else if (typeof verbose === 'boolean' && verbose) { + config.push({category: '*', config: {minimalSeverity: 'verbose'}}); + } + + if (Array.isArray(error)) { + config.push(...error.map(i => ({category: i, config: {minimalSeverity: 'error' as Logger.Severity}}))); + } + if (Array.isArray(warning)) { + config.push(...warning.map(i => ({category: i, config: {minimalSeverity: 'warning' as Logger.Severity}}))); + } + if (Array.isArray(info)) { + config.push(...info.map(i => ({category: i, config: {minimalSeverity: 'info' as Logger.Severity}}))); + } + if (Array.isArray(verbose)) { + config.push(...verbose.map(i => ({category: i, config: {minimalSeverity: 'verbose' as Logger.Severity}}))); + } + + return config; +} + +function parseCpuOptions(_args: minimist.ParsedArgs): InferenceSession.CpuExecutionProviderOption { + return {name: 'cpu'}; +} + +function parseCpuFlags(_args: minimist.ParsedArgs): Record { + return {}; +} + +function parseWasmOptions(_args: minimist.ParsedArgs): InferenceSession.WebAssemblyExecutionProviderOption { + return {name: 'wasm'}; +} + +function parseWasmFlags(args: minimist.ParsedArgs): WebAssemblyFlags { + const worker = args['wasm-worker']; + if (typeof worker !== 'undefined' && typeof worker !== 'number') { + throw new Error('Flag "wasm-worker" must be a number value'); + } + const initTimeout = args['wasm-init-timeout']; + if (typeof initTimeout !== 'undefined' && typeof initTimeout !== 'number') { + throw new Error('Flag "wasm-init-timeout" must be a number value'); + } + return {worker, initTimeout}; +} + +function parseWebglOptions(_args: minimist.ParsedArgs): InferenceSession.WebGLExecutionProviderOption { + return {name: 'webgl'}; +} + +function parseWebglFlags(args: minimist.ParsedArgs): WebGLFlags { + const contextId = args['webgl-context-id']; + if (contextId !== undefined && contextId !== 'webgl' && contextId !== 'webgl2') { + throw new Error('Flag "webgl-context-id" is invalid'); + } + const matmulMaxBatchSize = args['webgl-matmul-max-batch-size']; + if (matmulMaxBatchSize !== undefined && typeof matmulMaxBatchSize !== 'number') { + throw new Error('Flag "webgl-matmul-max-batch-size" must be a number value'); + } + const textureCacheMode = args['webgl-texture-cache-mode']; + if (textureCacheMode !== undefined && textureCacheMode !== 'initializerOnly' && textureCacheMode !== 'full') { + throw new Error('Flag "webgl-texture-cache-mode" is invalid'); + } + const pack = args['webgl-texture-pack-mode']; + if (pack !== undefined && typeof pack !== 'boolean') { + throw new Error('Flag "webgl-texture-pack-mode" is invalid'); + } + + return {contextId, matmulMaxBatchSize, textureCacheMode, pack}; +} + +export function parseTestRunnerCliArgs(cmdlineArgs: string[]): TestRunnerCliArgs { + const args = minimist(cmdlineArgs); + + if (args.help || args.h) { + console.log(HELP_MESSAGE); + process.exit(); + } + + // Option: -d, --debug + const debug = parseBooleanArg(args.debug || args.d, false); + if (debug) { + npmlog.level = 'verbose'; + } + npmlog.verbose('TestRunnerCli.Init', 'Parsing commandline arguments...'); + + const mode = args._.length === 0 ? 'suite0' : args._[0]; + + // Option: -b=<...>, --backend=<...> + const backendArgs = args.backend || args.b; + const backend = (typeof backendArgs !== 'string') ? ['webgl', 'wasm'] : backendArgs.split(','); + for (const b of backend) { + if (b !== 'webgl' && b !== 'wasm') { + throw new Error(`not supported backend ${b}`); + } + } + + // Option: -e=<...>, --env=<...> + const envArg = args.env || args.e; + const env = (typeof envArg !== 'string') ? 'chrome' : envArg; + if (['chrome', 'edge', 'firefox', 'electron', 'safari', 'node', 'bs'].indexOf(env) === -1) { + throw new Error(`not supported env ${env}`); + } + if (env === 'node') { + // TODO: support node + throw new Error('node is currently not supported.'); + } + + // Options: + // --log-verbose=<...> + // --log-info=<...> + // --log-warning=<...> + // --log-error=<...> + const logConfig = parseLogConfig(args); + + // Option: -p, --profile + const profile = (args.profile || args.p) ? true : false; + if (profile) { + logConfig.push({category: 'Profiler.session', config: {minimalSeverity: 'verbose'}}); + logConfig.push({category: 'Profiler.node', config: {minimalSeverity: 'verbose'}}); + logConfig.push({category: 'Profiler.op', config: {minimalSeverity: 'verbose'}}); + logConfig.push({category: 'Profiler.backend', config: {minimalSeverity: 'verbose'}}); + } + + // Option: -P[=<...>], --perf[=<...>] + const perfArg = (args.perf || args.P); + const perf = perfArg ? true : false; + const times = (typeof perfArg === 'number') ? perfArg : 10; + if (debug && perf) { + throw new Error('Flag "perf" cannot be used together with flag "debug".'); + } + if (perf && (mode !== 'model')) { + throw new Error('Flag "perf" can only be used in mode "model".'); + } + if (perf) { + logConfig.push({category: 'TestRunner.Perf', config: {minimalSeverity: 'verbose'}}); + } + + // Option: -c, --file-cache + const fileCache = parseBooleanArg(args['file-cache'] || args.c, false); + + const cpuOptions = parseCpuOptions(args); + const cpuFlags = parseCpuFlags(args); + const wasmOptions = parseWasmOptions(args); + const wasmFlags = parseWasmFlags(args); + const webglOptions = parseWebglOptions(args); + const webglFlags = parseWebglFlags(args); + + // Option: --no-sandbox + const noSandbox = !!args['no-sandbox']; + + npmlog.verbose('TestRunnerCli.Init', ` Mode: ${mode}`); + npmlog.verbose('TestRunnerCli.Init', ` Env: ${env}`); + npmlog.verbose('TestRunnerCli.Init', ` Debug: ${debug}`); + npmlog.verbose('TestRunnerCli.Init', ` Backend: ${backend}`); + npmlog.verbose('TestRunnerCli.Init', 'Parsing commandline arguments... DONE'); + + return { + debug, + mode: mode as TestRunnerCliArgs['mode'], + param: args._.length > 1 ? args._[1] : undefined, + backends: backend as TestRunnerCliArgs['backends'], + bundleMode: perf ? 'perf' : 'dev', + env: env as TestRunnerCliArgs['env'], + logConfig, + profile, + times: perf ? times : undefined, + fileCache, + cpuOptions, + cpuFlags, + webglOptions, + webglFlags, + wasmOptions, + wasmFlags, + noSandbox + }; +} diff --git a/js/web/script/test-runner-cli.ts b/js/web/script/test-runner-cli.ts new file mode 100644 index 0000000000..3ae0443f45 --- /dev/null +++ b/js/web/script/test-runner-cli.ts @@ -0,0 +1,596 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +/* eslint-disable guard-for-in */ +/* eslint-disable @typescript-eslint/no-use-before-define */ + +import {execSync, spawnSync} from 'child_process'; +import * as fs from 'fs'; +import * as globby from 'globby'; +import {default as minimatch} from 'minimatch'; +import npmlog from 'npmlog'; +import * as os from 'os'; +import * as path from 'path'; +import stripJsonComments from 'strip-json-comments'; +import {inspect} from 'util'; + +import {bufferToBase64} from '../test/test-shared'; +import {Test} from '../test/test-types'; + +import {parseTestRunnerCliArgs, TestRunnerCliArgs} from './test-runner-cli-args'; + +npmlog.info('TestRunnerCli', 'Initializing...'); + +const args = parseTestRunnerCliArgs(process.argv.slice(2)); + +npmlog.verbose('TestRunnerCli.Init.Config', inspect(args)); + +const TEST_ROOT = path.join(__dirname, '..', 'test'); +const TEST_DATA_MODEL_NODE_ROOT = path.join(TEST_ROOT, 'data', 'node'); +const TEST_DATA_MODEL_ONNX_ROOT = path.join(__dirname, '..', 'deps/data/data/test/onnx/v7'); +const TEST_DATA_OP_ROOT = path.join(TEST_ROOT, 'data', 'ops'); + +const TEST_DATA_BASE = args.env === 'node' ? TEST_ROOT : '/base/test/'; + +npmlog.verbose('TestRunnerCli.Init', 'Loading whitelist...'); + +// The following is a whitelist of unittests for already implemented operators. +// Modify this list to control what node tests to run. +const jsonWithComments = fs.readFileSync(path.resolve(TEST_ROOT, './test-suite-whitelist.jsonc')).toString(); +const json = stripJsonComments(jsonWithComments, {whitespace: true}); +const whitelist = JSON.parse(json) as Test.WhiteList; +npmlog.verbose('TestRunnerCli.Init', 'Loading whitelist... DONE'); + +// The default backends and opset version lists. Those will be used in suite tests. +const DEFAULT_BACKENDS: readonly TestRunnerCliArgs.Backend[] = + args.env === 'node' ? ['cpu', 'wasm'] : ['wasm', 'webgl']; +const DEFAULT_OPSET_VERSIONS: readonly number[] = [12, 11, 10, 9, 8, 7]; + +const FILE_CACHE_ENABLED = args.fileCache; // whether to enable file cache +const FILE_CACHE_MAX_FILE_SIZE = 1 * 1024 * 1024; // The max size of the file that will be put into file cache +const FILE_CACHE_SPLIT_SIZE = 4 * 1024 * 1024; // The min size of the cache file +const fileCache: Test.FileCache = {}; + +const nodeTests = new Map(); +const onnxTests = new Map(); +const opTests = new Map(); + +const shouldLoadSuiteTestData = (args.mode === 'suite0'); +if (shouldLoadSuiteTestData) { + npmlog.verbose('TestRunnerCli.Init', 'Loading test groups for suite test...'); + + for (const backend of DEFAULT_BACKENDS) { + for (const version of DEFAULT_OPSET_VERSIONS) { + let nodeTest = nodeTests.get(backend); + if (!nodeTest) { + nodeTest = []; + nodeTests.set(backend, nodeTest); + } + nodeTest.push(loadNodeTests(backend, version)); + } + opTests.set(backend, loadOpTests(backend)); + } +} + +if (shouldLoadSuiteTestData) { + npmlog.verbose('TestRunnerCli.Init', 'Loading test groups for suite test... DONE'); + + npmlog.verbose('TestRunnerCli.Init', 'Validate whitelist...'); + validateWhiteList(); + npmlog.verbose('TestRunnerCli.Init', 'Validate whitelist... DONE'); +} + +const modelTestGroups: Test.ModelTestGroup[] = []; +const opTestGroups: Test.OperatorTestGroup[] = []; +let unittest = false; + +npmlog.verbose('TestRunnerCli.Init', 'Preparing test config...'); +switch (args.mode) { + case 'suite0': + for (const backend of DEFAULT_BACKENDS) { + if (args.backends.indexOf(backend) !== -1) { + modelTestGroups.push(...nodeTests.get(backend)!); // model test : node + opTestGroups.push(...opTests.get(backend)!); // operator test + } + } + unittest = true; + break; + + case 'model': + if (!args.param) { + throw new Error('the test folder should be specified in mode \'node\''); + } else { + const testFolderSearchPattern = args.param; + const testFolder = tryLocateModelTestFolder(testFolderSearchPattern); + for (const b of args.backends) { + modelTestGroups.push({name: testFolder, tests: [modelTestFromFolder(testFolder, b, undefined, args.times)]}); + } + } + break; + + case 'unittest': + unittest = true; + break; + + case 'op': + if (!args.param) { + throw new Error('the test manifest should be specified in mode \'op\''); + } else { + const manifestFileSearchPattern = args.param; + const manifestFile = tryLocateOpTestManifest(manifestFileSearchPattern); + for (const b of args.backends) { + opTestGroups.push(opTestFromManifest(manifestFile, b)); + } + } + break; + default: + throw new Error(`unsupported mode '${args.mode}'`); +} + +npmlog.verbose('TestRunnerCli.Init', 'Preparing test config... DONE'); + +npmlog.info('TestRunnerCli', 'Initialization completed. Start to run tests...'); +run({ + unittest, + model: modelTestGroups, + op: opTestGroups, + log: args.logConfig, + profile: args.profile, + options: { + debug: args.debug, + cpuOptions: args.cpuOptions, + webglOptions: args.webglOptions, + wasmOptions: args.wasmOptions, + cpuFlags: args.cpuFlags, + webglFlags: args.webglFlags, + wasmFlags: args.wasmFlags, + } +}); +npmlog.info('TestRunnerCli', 'Tests completed successfully'); + +process.exit(); + +function validateWhiteList() { + for (const backend of DEFAULT_BACKENDS) { + const nodeTest = nodeTests.get(backend); + if (nodeTest) { + for (const testCase of whitelist[backend].node) { + const testCaseName = typeof testCase === 'string' ? testCase : testCase.name; + let found = false; + for (const testGroup of nodeTest) { + found = + found || testGroup.tests.some(test => minimatch(test.modelUrl, path.join('**', testCaseName, '*.onnx'))); + } + if (!found) { + throw new Error(`node model test case '${testCaseName}' in white list does not exist.`); + } + } + } + + const onnxTest = onnxTests.get(backend); + if (onnxTest) { + const onnxModelTests = onnxTest.tests.map(i => i.name); + for (const testCase of whitelist[backend].onnx) { + const testCaseName = typeof testCase === 'string' ? testCase : testCase.name; + if (onnxModelTests.indexOf(testCaseName) === -1) { + throw new Error(`onnx model test case '${testCaseName}' in white list does not exist.`); + } + } + } + + const opTest = opTests.get(backend); + if (opTest) { + const opTests = opTest.map(i => i.name); + for (const testCase of whitelist[backend].ops) { + const testCaseName = typeof testCase === 'string' ? testCase : testCase.name; + if (opTests.indexOf(testCaseName) === -1) { + throw new Error(`operator test case '${testCaseName}' in white list does not exist.`); + } + } + } + } +} + +function loadNodeTests(backend: string, version: number): Test.ModelTestGroup { + return suiteFromFolder( + `node-opset_v${version}-${backend}`, path.join(TEST_DATA_MODEL_NODE_ROOT, `v${version}`), backend, + whitelist[backend].node); +} + +function suiteFromFolder( + name: string, suiteRootFolder: string, backend: string, + whitelist?: readonly Test.WhiteList.Test[]): Test.ModelTestGroup { + const sessions: Test.ModelTest[] = []; + const tests = fs.readdirSync(suiteRootFolder); + for (const test of tests) { + let condition: Test.Condition|undefined; + let times: number|undefined; + if (whitelist) { + const matches = whitelist.filter( + p => minimatch(path.join(suiteRootFolder, test), path.join('**', typeof p === 'string' ? p : p.name))); + if (matches.length === 0) { + times = 0; + } else if (matches.length === 1) { + const match = matches[0]; + if (typeof match !== 'string') { + condition = match.condition; + } + } else { + throw new Error(`multiple whitelist rules matches test: ${path.join(suiteRootFolder, test)}`); + } + } + sessions.push(modelTestFromFolder(path.resolve(suiteRootFolder, test), backend, condition, times)); + } + return {name, tests: sessions}; +} + +function modelTestFromFolder( + testDataRootFolder: string, backend: string, condition?: Test.Condition, times?: number): Test.ModelTest { + if (times === 0) { + npmlog.verbose('TestRunnerCli.Init.Model', `Skip test data from folder: ${testDataRootFolder}`); + return {name: path.basename(testDataRootFolder), backend, modelUrl: '', cases: []}; + } + + let modelUrl: string|null = null; + let cases: Test.ModelTestCase[] = []; + + npmlog.verbose('TestRunnerCli.Init.Model', `Start to prepare test data from folder: ${testDataRootFolder}`); + + try { + for (const thisPath of fs.readdirSync(testDataRootFolder)) { + const thisFullPath = path.join(testDataRootFolder, thisPath); + const stat = fs.lstatSync(thisFullPath); + if (stat.isFile()) { + const ext = path.extname(thisPath); + if (ext.toLowerCase() === '.onnx') { + if (modelUrl === null) { + modelUrl = path.join(TEST_DATA_BASE, path.relative(TEST_ROOT, thisFullPath)); + if (FILE_CACHE_ENABLED && !fileCache[modelUrl] && stat.size <= FILE_CACHE_MAX_FILE_SIZE) { + fileCache[modelUrl] = bufferToBase64(fs.readFileSync(thisFullPath)); + } + } else { + throw new Error('there are multiple model files under the folder specified'); + } + } + } else if (stat.isDirectory()) { + const dataFiles: string[] = []; + for (const dataFile of fs.readdirSync(thisFullPath)) { + const dataFileFullPath = path.join(thisFullPath, dataFile); + const ext = path.extname(dataFile); + + if (ext.toLowerCase() === '.pb') { + const dataFileUrl = path.join(TEST_DATA_BASE, path.relative(TEST_ROOT, dataFileFullPath)); + dataFiles.push(dataFileUrl); + if (FILE_CACHE_ENABLED && !fileCache[dataFileUrl] && + fs.lstatSync(dataFileFullPath).size <= FILE_CACHE_MAX_FILE_SIZE) { + fileCache[dataFileUrl] = bufferToBase64(fs.readFileSync(dataFileFullPath)); + } + } + } + if (dataFiles.length > 0) { + cases.push({dataFiles, name: thisPath}); + } + } + } + + if (modelUrl === null) { + throw new Error('there are no model file under the folder specified'); + } + } catch (e) { + npmlog.error('TestRunnerCli.Init.Model', `Failed to prepare test data. Error: ${inspect(e)}`); + throw e; + } + + const caseCount = cases.length; + if (times !== undefined) { + if (times > caseCount) { + for (let i = 0; cases.length < times; i++) { + const origin = cases[i % caseCount]; + const duplicated = {name: `${origin.name} - copy ${Math.floor(i / caseCount)}`, dataFiles: origin.dataFiles}; + cases.push(duplicated); + } + } else { + cases = cases.slice(0, times); + } + } + + npmlog.verbose('TestRunnerCli.Init.Model', 'Finished preparing test data.'); + npmlog.verbose('TestRunnerCli.Init.Model', '==============================================================='); + npmlog.verbose('TestRunnerCli.Init.Model', ` Model file: ${modelUrl}`); + npmlog.verbose('TestRunnerCli.Init.Model', ` Backend: ${backend}`); + npmlog.verbose('TestRunnerCli.Init.Model', ` Test set(s): ${cases.length} (${caseCount})`); + npmlog.verbose('TestRunnerCli.Init.Model', '==============================================================='); + + return {name: path.basename(testDataRootFolder), condition, modelUrl, backend, cases}; +} + +function tryLocateModelTestFolder(searchPattern: string): string { + const folderCandidates: string[] = []; + // 1 - check whether search pattern is a directory + if (fs.existsSync(searchPattern) && fs.lstatSync(searchPattern).isDirectory()) { + folderCandidates.push(searchPattern); + } + + // 2 - check the globby result of searchPattern + // 3 - check the globby result of ONNX root combined with searchPattern + const globbyPattern = [searchPattern, path.join(TEST_DATA_MODEL_ONNX_ROOT, '**', searchPattern).replace(/\\/g, '/')]; + // 4 - check the globby result of NODE root combined with opset versions and searchPattern + globbyPattern.push(...DEFAULT_OPSET_VERSIONS.map( + v => path.join(TEST_DATA_MODEL_NODE_ROOT, `v${v}`, '**', searchPattern).replace(/\\/g, '/'))); + + folderCandidates.push(...globby.sync(globbyPattern, {onlyDirectories: true, absolute: true})); + + // pick the first folder that matches the pattern + for (const folderCandidate of folderCandidates) { + const modelCandidates = globby.sync('*.onnx', {onlyFiles: true, cwd: folderCandidate}); + if (modelCandidates && modelCandidates.length === 1) { + return folderCandidate; + } + } + + throw new Error(`no model folder found: ${searchPattern}`); +} + +function loadOpTests(backend: string): Test.OperatorTestGroup[] { + const groups: Test.OperatorTestGroup[] = []; + for (const thisPath of fs.readdirSync(TEST_DATA_OP_ROOT)) { + const thisFullPath = path.join(TEST_DATA_OP_ROOT, thisPath); + const stat = fs.lstatSync(thisFullPath); + const ext = path.extname(thisFullPath); + if (stat.isFile() && (ext === '.json' || ext === '.jsonc')) { + const skip = whitelist[backend].ops.indexOf(thisPath) === -1; + groups.push(opTestFromManifest(thisFullPath, backend, skip)); + } + } + + return groups; +} + +function opTestFromManifest(manifestFile: string, backend: string, skip = false): Test.OperatorTestGroup { + let tests: Test.OperatorTest[] = []; + const filePath = path.resolve(process.cwd(), manifestFile); + if (skip) { + npmlog.verbose('TestRunnerCli.Init.Op', `Skip test data from manifest file: ${filePath}`); + } else { + npmlog.verbose('TestRunnerCli.Init.Op', `Start to prepare test data from manifest file: ${filePath}`); + const jsonWithComments = fs.readFileSync(filePath).toString(); + const json = stripJsonComments(jsonWithComments, {whitespace: true}); + tests = JSON.parse(json) as Test.OperatorTest[]; + // field 'verbose' and 'backend' is not set + for (const test of tests) { + test.backend = backend; + } + npmlog.verbose('TestRunnerCli.Init.Op', 'Finished preparing test data.'); + npmlog.verbose('TestRunnerCli.Init.Op', '==============================================================='); + npmlog.verbose('TestRunnerCli.Init.Op', ` Test Group: ${path.relative(TEST_DATA_OP_ROOT, filePath)}`); + npmlog.verbose('TestRunnerCli.Init.Op', ` Backend: ${backend}`); + npmlog.verbose('TestRunnerCli.Init.Op', ` Test case(s): ${tests.length}`); + npmlog.verbose('TestRunnerCli.Init.Op', '==============================================================='); + } + return {name: path.relative(TEST_DATA_OP_ROOT, filePath), tests}; +} + +function tryLocateOpTestManifest(searchPattern: string): string { + for (const manifestCandidate of globby.sync( + [ + searchPattern, path.join(TEST_DATA_OP_ROOT, '**', searchPattern).replace(/\\/g, '/'), + path.join(TEST_DATA_OP_ROOT, '**', searchPattern + '.json').replace(/\\/g, '/'), + path.join(TEST_DATA_OP_ROOT, '**', searchPattern + '.jsonc').replace(/\\/g, '/') + ], + {onlyFiles: true, absolute: true, cwd: TEST_ROOT})) { + return manifestCandidate; + } + + throw new Error(`no OP test manifest found: ${searchPattern}`); +} + +function run(config: Test.Config) { + // STEP 1. write file cache to testdata-file-cache-*.json + npmlog.info('TestRunnerCli.Run', '(1/5) Writing file cache to file: testdata-file-cache-*.json ...'); + const fileCacheUrls = saveFileCache(fileCache); + if (fileCacheUrls.length > 0) { + config.fileCacheUrls = fileCacheUrls; + } + npmlog.info( + 'TestRunnerCli.Run', + `(1/5) Writing file cache to file: testdata-file-cache-*.json ... ${ + fileCacheUrls.length > 0 ? `DONE, ${fileCacheUrls.length} file(s) generated` : 'SKIPPED'}`); + + // STEP 2. write the config to testdata-config.js + npmlog.info('TestRunnerCli.Run', '(2/5) Writing config to file: testdata-config.js ...'); + saveConfig(config); + npmlog.info('TestRunnerCli.Run', '(2/5) Writing config to file: testdata-config.js ... DONE'); + + // STEP 3. get npm bin folder + npmlog.info('TestRunnerCli.Run', '(3/5) Retrieving npm bin folder...'); + const npmBin = execSync('npm bin', {encoding: 'utf8'}).trimRight(); + npmlog.info('TestRunnerCli.Run', `(3/5) Retrieving npm bin folder... DONE, folder: ${npmBin}`); + + if (args.env === 'node') { + // STEP 4. use tsc to build ONNX.js + npmlog.info('TestRunnerCli.Run', '(4/5) Running tsc...'); + const tscCommand = path.join(npmBin, 'tsc'); + const tsc = spawnSync(tscCommand, {shell: true, stdio: 'inherit'}); + if (tsc.status !== 0) { + console.error(tsc.error); + process.exit(tsc.status === null ? undefined : tsc.status); + } + npmlog.info('TestRunnerCli.Run', '(4/5) Running tsc... DONE'); + + // STEP 5. run mocha + npmlog.info('TestRunnerCli.Run', '(5/5) Running mocha...'); + const mochaCommand = path.join(npmBin, 'mocha'); + const mochaArgs = [path.join(TEST_ROOT, 'test-main'), '--timeout 60000']; + npmlog.info('TestRunnerCli.Run', `CMD: ${mochaCommand} ${mochaArgs.join(' ')}`); + const mocha = spawnSync(mochaCommand, mochaArgs, {shell: true, stdio: 'inherit'}); + if (mocha.status !== 0) { + console.error(mocha.error); + process.exit(mocha.status === null ? undefined : mocha.status); + } + npmlog.info('TestRunnerCli.Run', '(5/5) Running mocha... DONE'); + + } else { + // STEP 4. use webpack to generate ONNX.js + npmlog.info('TestRunnerCli.Run', '(4/5) Running webpack to generate ONNX.js...'); + const webpackCommand = path.join(npmBin, 'webpack'); + const webpackArgs = ['--env', `--bundle-mode=${args.bundleMode}`]; + npmlog.info('TestRunnerCli.Run', `CMD: ${webpackCommand} ${webpackArgs.join(' ')}`); + const webpack = spawnSync(webpackCommand, webpackArgs, {shell: true, stdio: 'inherit'}); + if (webpack.status !== 0) { + console.error(webpack.error); + process.exit(webpack.status === null ? undefined : webpack.status); + } + npmlog.info('TestRunnerCli.Run', '(4/5) Running webpack to generate ONNX.js... DONE'); + + // STEP 5. use Karma to run test + npmlog.info('TestRunnerCli.Run', '(5/5) Running karma to start test runner...'); + const karmaCommand = path.join(npmBin, 'karma'); + const browser = getBrowserNameFromEnv(args.env, args.debug); + const karmaArgs = ['start', `--browsers ${browser}`]; + if (args.debug) { + karmaArgs.push('--log-level info'); + } else { + karmaArgs.push('--single-run'); + } + if (args.noSandbox) { + karmaArgs.push('--no-sandbox'); + } + karmaArgs.push(`--bundle-mode=${args.bundleMode}`); + if (browser === 'Edge') { + // There are currently 2 Edge browser launchers: + // - karma-edge-launcher: used to launch the old Edge browser + // - karma-chromium-edge-launcher: used to launch the new chromium-kernel Edge browser + // + + // Those 2 plugins cannot be loaded at the same time, so we need to determine which launchers to use. + // - If we use 'karma-edge-launcher', no plugins config need to be set. + // - If we use 'karma-chromium-edge-launcher', we need to: + // - add plugin "@chiragrupani/karma-chromium-edge-launcher" explicitly, because it does not match the + // default plugins config "^karma-.*" + // - remove "karma-edge-launcher". + + // check if we have the latest Edge installed: + if (os.platform() === 'darwin' || + (os.platform() === 'win32' && + // tslint:disable-next-line:no-require-imports no-submodule-imports + require('@chiragrupani/karma-chromium-edge-launcher/dist/Utilities').default.GetEdgeExe('Edge') !== '')) { + // use "@chiragrupani/karma-chromium-edge-launcher" + karmaArgs.push( + '--karma-plugins=@chiragrupani/karma-chromium-edge-launcher', + '--karma-plugins=(?!karma-edge-launcher$)karma-*'); + } else { + // use "karma-edge-launcher" + + // == Special treatment to Microsoft Edge == + // + // == Edge's Auto Recovery Feature == + // when Edge starts, if it found itself was terminated forcely last time, it always recovers all previous pages. + // this always happen in Karma because `karma-edge-launcher` uses `taskkill` command to kill Edge every + // time. + // + // == The Problem == + // every time when a test is completed, it will be added to the recovery page list. + // if we run the test 100 times, there will be 100 previous tabs when we launch Edge again. + // this run out of resources quickly and fails the futher test. + // and it cannot recover by itself because every time it is terminated forcely or crashes. + // and the auto recovery feature has no way to disable by configuration/commandline/registry + // + // == The Solution == + // for Microsoft Edge, we should clean up the previous active page before each run + // delete the files stores in the specific folder to clean up the recovery page list. + // see also: https://www.laptopmag.com/articles/edge-browser-stop-tab-restore + const deleteEdgeActiveRecoveryCommand = + // eslint-disable-next-line max-len + 'del /F /Q % LOCALAPPDATA %\\Packages\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\\AC\\MicrosoftEdge\\User\\Default\\Recovery\\Active\\*'; + npmlog.info('TestRunnerCli.Run', `CMD: ${deleteEdgeActiveRecoveryCommand}`); + spawnSync(deleteEdgeActiveRecoveryCommand, {shell: true, stdio: 'inherit'}); + } + } + npmlog.info('TestRunnerCli.Run', `CMD: ${karmaCommand} ${karmaArgs.join(' ')}`); + const karma = spawnSync(karmaCommand, karmaArgs, {shell: true, stdio: 'inherit'}); + if (karma.status !== 0) { + console.error(karma.error); + process.exit(karma.status === null ? undefined : karma.status); + } + npmlog.info('TestRunnerCli.Run', '(5/5) Running karma to start test runner... DONE'); + } +} + +function saveFileCache(fileCache: Test.FileCache) { + const fileCacheUrls: string[] = []; + let currentIndex = 0; + let currentCache: Test.FileCache = {}; + let currentContentTotalSize = 0; + for (const key in fileCache) { + const content = fileCache[key]; + if (currentContentTotalSize > FILE_CACHE_SPLIT_SIZE) { + fileCacheUrls.push(saveOneFileCache(currentIndex, currentCache)); + currentContentTotalSize = 0; + currentIndex++; + currentCache = {}; + } + currentCache[key] = content; + currentContentTotalSize += key.length + content.length; + } + if (currentContentTotalSize > 0) { + fileCacheUrls.push(saveOneFileCache(currentIndex, currentCache)); + } + return fileCacheUrls; +} + +function saveOneFileCache(index: number, fileCache: Test.FileCache) { + fs.writeFileSync(path.join(TEST_ROOT, `./testdata-file-cache-${index}.json`), JSON.stringify(fileCache)); + return path.join(TEST_DATA_BASE, `./testdata-file-cache-${index}.json`); +} + +function saveConfig(config: Test.Config) { + let setOptions = ''; + if (config.options.debug !== undefined) { + setOptions += `ort.env.debug = ${config.options.debug};`; + } + if (config.options.webglFlags && config.options.webglFlags.contextId !== undefined) { + setOptions += `ort.env.webgl.contextId = ${JSON.stringify(config.options.webglFlags.contextId)};`; + } + if (config.options.webglFlags && config.options.webglFlags.matmulMaxBatchSize !== undefined) { + setOptions += `ort.env.webgl.matmulMaxBatchSize = ${config.options.webglFlags.matmulMaxBatchSize};`; + } + if (config.options.webglFlags && config.options.webglFlags.textureCacheMode !== undefined) { + setOptions += `ort.env.webgl.textureCacheMode = ${JSON.stringify(config.options.webglFlags.textureCacheMode)};`; + } + if (config.options.webglFlags && config.options.webglFlags.pack !== undefined) { + setOptions += `ort.env.webgl.pack = ${JSON.stringify(config.options.webglFlags.pack)};`; + } + if (config.options.wasmFlags && config.options.wasmFlags.worker !== undefined) { + setOptions += `ort.env.wasm.worker = ${JSON.stringify(config.options.wasmFlags.worker)};`; + } + if (config.options.wasmFlags && config.options.wasmFlags.initTimeout !== undefined) { + setOptions += `ort.env.wasm.initTimeout = ${JSON.stringify(config.options.wasmFlags.initTimeout)};`; + } + // TODO: support onnxruntime nodejs binding + // if (config.model.some(testGroup => testGroup.tests.some(test => test.backend === 'onnxruntime'))) { + // setOptions += 'require(\'onnxjs-node\');'; + // } + + fs.writeFileSync(path.join(TEST_ROOT, './testdata-config.js'), `${setOptions} + +ort.env.ORT_WEB_TEST_DATA=${JSON.stringify(config)};`); +} + +function getBrowserNameFromEnv(env: TestRunnerCliArgs['env'], debug?: boolean) { + switch (env) { + case 'chrome': + return debug ? 'ChromeDebug' : 'ChromeTest'; + case 'edge': + return 'Edge'; + case 'firefox': + return 'Firefox'; + case 'electron': + return 'Electron'; + case 'safari': + return 'Safari'; + case 'bs': + return process.env.ONNXJS_TEST_BS_BROWSERS!; + default: + throw new Error(`env "${env}" not supported.`); + } +} diff --git a/js/web/test/data/ops/abs.jsonc b/js/web/test/data/ops/abs.jsonc new file mode 100644 index 0000000000..061f335020 --- /dev/null +++ b/js/web/test/data/ops/abs.jsonc @@ -0,0 +1,77 @@ +[ + { + "name": "abs with no attributes", + "operator": "Abs", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [-3], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1, 2, 3, -4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/absr.jsonc b/js/web/test/data/ops/absr.jsonc new file mode 100644 index 0000000000..9e27f86dc6 --- /dev/null +++ b/js/web/test/data/ops/absr.jsonc @@ -0,0 +1,26 @@ +[ + { + "name": "abs with no attributes", + "operator": "Abs", + "attributes": [], + "cases": [ + { + "name": "Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/abss.jsonc b/js/web/test/data/ops/abss.jsonc new file mode 100644 index 0000000000..0c08d37941 --- /dev/null +++ b/js/web/test/data/ops/abss.jsonc @@ -0,0 +1,76 @@ +[ + { + "name": "abs with no attributes", + "operator": "Abs", + "attributes": [], + "cases": [ + { + "name": "T[2,3,4]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 11, + 12, + 13, + 14, + -1, + -2, + -3, + -4, + -5, + -6, + -7, + -8, + 101, + 102, + 103, + 104 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 11, + 12, + 13, + 14, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 101, + 102, + 103, + 104 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/acos.jsonc b/js/web/test/data/ops/acos.jsonc new file mode 100644 index 0000000000..96a59e4d17 --- /dev/null +++ b/js/web/test/data/ops/acos.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "Acos with no attributes", + "operator": "Acos", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [0.4], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.1593], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.4706, 1.3694, 1.2661, 1.1593], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4, 0.9, 0.8, 0.7, 0.6], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.4706, + 1.3694, + 1.2661, + 1.1593, + 0.451, + 0.6435, + 0.7954, + 0.9273 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [0.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.4706], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/add.jsonc b/js/web/test/data/ops/add.jsonc new file mode 100644 index 0000000000..3398e02b50 --- /dev/null +++ b/js/web/test/data/ops/add.jsonc @@ -0,0 +1,213 @@ +[ + { + "name": "Add with no attributes", + "operator": "Add", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [5, 4, 4, 5, 5, 6, 5, 7], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3, 3, 4, 6, 3, 5, 6, 8], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3, 3, 2, 5, 4, 6, 2, 6], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[3,2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [ + 2, + 6, + 1, + 2, + 1, + 3, + 1, + 4, + 3, + 5, + 3, + 4, + 1, + 4, + 1, + 6, + 4, + 4, + 5, + 6, + 2, + 4, + 2, + 6 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 3, + 8, + 4, + 6, + 6, + 9, + 8, + 12, + 4, + 7, + 6, + 8, + 6, + 10, + 8, + 14, + 5, + 6, + 8, + 10, + 7, + 10, + 9, + 14 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3, 3, 3, 3], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3, 3, 3, 3], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/add_int32.jsonc b/js/web/test/data/ops/add_int32.jsonc new file mode 100644 index 0000000000..b87a6857b0 --- /dev/null +++ b/js/web/test/data/ops/add_int32.jsonc @@ -0,0 +1,31 @@ +[ + { + "name": "Add with no attributes", + "operator": "Add", + "attributes": [], + "cases": [ + { + "name": "T[2,4] T[2,4] (int32)", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "int32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "int32" + } + ], + "outputs": [ + { + "data": [3, 3, 2, 5, 4, 6, 2, 6], + "dims": [2, 4], + "type": "int32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/and.jsonc b/js/web/test/data/ops/and.jsonc new file mode 100644 index 0000000000..84be981009 --- /dev/null +++ b/js/web/test/data/ops/and.jsonc @@ -0,0 +1,119 @@ +[ + { + "name": "And with no attributes", + "operator": "And", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [true], + "dims": [1], + "type": "bool" + }, + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [true, false, false, true], + "dims": [4], + "type": "bool" + }, + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, false, false, false, true, false, false, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + }, + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + }, + { + "data": [false], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + }, + { + "data": [true], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/asin.jsonc b/js/web/test/data/ops/asin.jsonc new file mode 100644 index 0000000000..23039d6563 --- /dev/null +++ b/js/web/test/data/ops/asin.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "asin with no attributes", + "operator": "Asin", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [0.5], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.52359878], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.10016742, 0.20135792, 0.30469265, 0.41151685], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4, 0.9, 0.8, 0.7, 0.6], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.10016742, + 0.20135792, + 0.30469265, + 0.41151685, + 1.11976951, + 0.92729522, + 0.7753975, + 0.64350111 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [0.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.10016742], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/ceil.jsonc b/js/web/test/data/ops/ceil.jsonc new file mode 100644 index 0000000000..db99057be9 --- /dev/null +++ b/js/web/test/data/ops/ceil.jsonc @@ -0,0 +1,77 @@ +[ + { + "name": "ceil with no attributes", + "operator": "Ceil", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [3.1], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [4], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1.0, 2.1, 3.8, 4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 3, 4, 4], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1.1, 2.2, 1.3, 3.4, 2.5, 3.6, 1.7, 2.9], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2, 3, 2, 4, 3, 4, 2, 3], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/conv.jsonc b/js/web/test/data/ops/conv.jsonc new file mode 100644 index 0000000000..4b7c6975a0 --- /dev/null +++ b/js/web/test/data/ops/conv.jsonc @@ -0,0 +1,163 @@ +[ + { + "name": "conv with bias addition", + "operator": "Conv", + "attributes": [{ "name": "kernel_shape", "data": [2, 2], "type": "ints" }], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [1, 1, 2, 2], + "type": "float32" + }, + { + "data": [1, 1, 1, 1], + "dims": [1, 1, 2, 2], + "type": "float32" + }, + { + "data": [5], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [15], + "dims": [1, 1, 1, 1], + "type": "float32" + } + ] + } + ] + }, + { + "name": "conv - group - A", + "operator": "Conv", + "attributes": [ + { "name": "kernel_shape", "data": [1, 1], "type": "ints" }, + { "name": "group", "data": 2, "type": "int" } + ], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ], + "dims": [1, 2, 3, 3], + "type": "float32" + }, + { + "data": [1.0, 2.0], + "dims": [2, 1, 1, 1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 18.0, + 20.0, + 22.0, + 24.0, + 26.0, + 28.0, + 30.0, + 32.0, + 34.0 + ], + "dims": [1, 2, 3, 3], + "type": "float32" + } + ] + } + ] + }, + { + "name": "conv - group - B", + "operator": "Conv", + "attributes": [ + { "name": "kernel_shape", "data": [1, 1], "type": "ints" }, + { "name": "group", "data": 3, "type": "int" } + ], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0, + 18.0, + 19.0, + 20.0, + 21.0, + 22.0, + 23.0 + ], + "dims": [1, 6, 2, 2], + "type": "float32" + }, + { + "data": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], + "dims": [3, 2, 1, 1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [8, 11, 14, 17, 72, 79, 86, 93, 200, 211, 222, 233], + "dims": [1, 3, 2, 2], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/cos.jsonc b/js/web/test/data/ops/cos.jsonc new file mode 100644 index 0000000000..584eefad8e --- /dev/null +++ b/js/web/test/data/ops/cos.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "Cos with no attributes", + "operator": "Cos", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [0.4], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.92106099], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.99500417, 0.98006658, 0.95533649, 0.92106099], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4, 0.9, 0.8, 0.7, 0.6], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.99500417, + 0.98006658, + 0.95533649, + 0.92106099, + 0.62160997, + 0.69670671, + 0.76484219, + 0.82533561 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [0.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.99500417], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/div.jsonc b/js/web/test/data/ops/div.jsonc new file mode 100644 index 0000000000..3d4e42ac83 --- /dev/null +++ b/js/web/test/data/ops/div.jsonc @@ -0,0 +1,213 @@ +[ + { + "name": "Div with no attributes", + "operator": "Div", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.5, 3, 3, 1.5, 1.5, 1, 1.5, 0.75], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.5, 2, 3, 2, 0.5, 0.66667, 1, 1], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.5, 2, 1, 1.5, 1, 1, 1, 0.5], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[3,2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [ + 2, + 6, + 1, + 2, + 1, + 3, + 1, + 4, + 3, + 5, + 3, + 4, + 1, + 4, + 1, + 6, + 4, + 4, + 5, + 6, + 2, + 4, + 2, + 6 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.5, + 0.3333, + 3, + 2, + 5, + 2, + 7, + 2, + 0.3333, + 0.4, + 1, + 1, + 5, + 1.5, + 7, + 1.3333, + 0.25, + 0.5, + 0.6, + 0.6667, + 2.5, + 1.5, + 3.5, + 1.3333 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [6], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3, 3, 3, 3], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [3, 3, 3, 3], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3, 3, 3, 3], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/equal.jsonc b/js/web/test/data/ops/equal.jsonc new file mode 100644 index 0000000000..2f70f3bd55 --- /dev/null +++ b/js/web/test/data/ops/equal.jsonc @@ -0,0 +1,141 @@ +[ + { + "name": "Equal with no attributes", + "operator": "Equal", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, false, false, false, false, true, false, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 2, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, true, false, false, false, false, true, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 4, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, false, true, false, true, true, true, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [2], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/exp.jsonc b/js/web/test/data/ops/exp.jsonc new file mode 100644 index 0000000000..2459d1df6f --- /dev/null +++ b/js/web/test/data/ops/exp.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "Exp with no attributes", + "operator": "Exp", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [20.08553692], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2.71828183, 7.3890561, 20.08553692, 54.59815003], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 2.71828183, + 7.3890561, + 2.71828183, + 20.08553692, + 7.3890561, + 20.08553692, + 2.71828183, + 7.3890561 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2.71828183], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/floor.jsonc b/js/web/test/data/ops/floor.jsonc new file mode 100644 index 0000000000..f562513ddc --- /dev/null +++ b/js/web/test/data/ops/floor.jsonc @@ -0,0 +1,77 @@ +[ + { + "name": "floor with no attributes", + "operator": "Floor", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [3.1], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1.1, 2.2, 3.3, 4.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1.1, 2.2, 1.3, 3.4, 2.5, 3.6, 1.7, 2.8], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/gather.jsonc b/js/web/test/data/ops/gather.jsonc new file mode 100644 index 0000000000..3b1b0e3821 --- /dev/null +++ b/js/web/test/data/ops/gather.jsonc @@ -0,0 +1,97 @@ +[ + { + "name": "Gather", + "operator": "Gather", + "attributes": [], + "cases": [ + { + "name": "data[4] indices[]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "int32" + } + ], + "outputs": [ + { + "data": [2], + "dims": [], + "type": "float32" + } + ] + }, + { + "name": "data[4] indices[1]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [1], + "dims": [1], + "type": "int32" + } + ], + "outputs": [ + { + "data": [2], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "data[2,4] indices[]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "int32" + } + ], + "outputs": [ + { + "data": [5, 6, 7, 8], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "data[2,4] indices[1]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [1], + "dims": [1], + "type": "int32" + } + ], + "outputs": [ + { + "data": [5, 6, 7, 8], + "dims": [1, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/gemm.jsonc b/js/web/test/data/ops/gemm.jsonc new file mode 100644 index 0000000000..25d569b19d --- /dev/null +++ b/js/web/test/data/ops/gemm.jsonc @@ -0,0 +1,41 @@ +[ + { + "name": "gemm tests", + "operator": "Gemm", + "attributes": [ + { "name": "alpha", "data": 1.0, "type": "float" }, + { "name": "beta", "data": 1.0, "type": "float" }, + { "name": "transA", "data": 0, "type": "int" }, + { "name": "transB", "data": 0, "type": "int" } + ], + "cases": [ + { + "name": "gemm 2D tensors", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 0, 4], + "dims": [4, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [7, 21, 10, 20], + "dims": [2, 2], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/global-average-pool.jsonc b/js/web/test/data/ops/global-average-pool.jsonc new file mode 100644 index 0000000000..9e67163456 --- /dev/null +++ b/js/web/test/data/ops/global-average-pool.jsonc @@ -0,0 +1,199 @@ +[ + { + "name": "GlobalAveragePool", + "operator": "GlobalAveragePool", + "attributes": [], + "cases": [ + { + "name": "T[1,3,5,5] T[1,3,1,1]", + "inputs": [ + { + "data": [ + 1.764052391052246, + 0.40015721321105957, + 0.978738009929657, + 2.2408931255340576, + 1.8675580024719238, + -0.9772778749465942, + 0.9500884413719177, + -0.15135720372200012, + -0.10321885347366333, + 0.4105985164642334, + 0.14404356479644775, + 1.4542734622955322, + 0.7610377073287964, + 0.12167501449584961, + 0.44386324286460876, + 0.3336743414402008, + 1.4940791130065918, + -0.2051582634449005, + 0.3130677044391632, + -0.8540957570075989, + -2.5529897212982178, + 0.653618574142456, + 0.8644362092018127, + -0.7421650290489197, + 2.269754648208618, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100 + ], + "dims": [1, 3, 5, 5], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.47517386078834534, 1, 100], + "dims": [1, 3, 1, 1], + "type": "float32" + } + ] + }, + { + "name": "T[1,3,5,5] T[1,3,1,1]", + "inputs": [ + { + "data": [ + 1.764052391052246, + 0.40015721321105957, + 0.978738009929657, + 2.2408931255340576, + 1.8675580024719238, + -0.9772778749465942, + 0.9500884413719177, + -0.15135720372200012, + -0.10321885347366333, + 0.4105985164642334, + 0.14404356479644775, + 1.4542734622955322, + 0.7610377073287964, + 0.12167501449584961, + 0.44386324286460876, + 0.3336743414402008, + 1.4940791130065918, + -0.2051582634449005, + 0.3130677044391632, + -0.8540957570075989, + -2.5529897212982178, + 0.653618574142456, + 0.8644362092018127, + -0.7421650290489197, + 2.269754648208618, + -1.4543657302856445, + 0.04575851559638977, + -0.18718385696411133, + 1.5327792167663574, + 1.4693588018417358, + 0.154947429895401, + 0.37816253304481506, + -0.8877857327461243, + -1.980796456336975, + -0.34791216254234314, + 0.15634897351264954, + 1.2302906513214111, + 1.202379822731018, + -0.38732680678367615, + -0.302302747964859, + -1.0485529899597168, + -1.420017957687378, + -1.7062702178955078, + 1.950775384902954, + -0.5096521973609924, + -0.4380742907524109, + -1.2527953386306763, + 0.7774903774261475, + -1.6138978004455566, + -0.21274028718471527, + -0.8954665660858154, + 0.38690251111984253, + -0.5108051300048828, + -1.18063223361969, + -0.02818222902715206, + 0.4283318817615509, + 0.06651721894741058, + 0.30247190594673157, + -0.6343221068382263, + -0.3627411723136902, + -0.6724604368209839, + -0.35955315828323364, + -0.8131462931632996, + -1.7262825965881348, + 0.17742614448070526, + -0.4017809331417084, + -1.630198359489441, + 0.46278226375579834, + -0.9072983860969543, + 0.05194539576768875, + 0.7290905714035034, + 0.12898291647434235, + 1.1394007205963135, + -1.234825849533081, + 0.4023416340351105 + ], + "dims": [1, 3, 5, 5], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.47517386078834534, + -0.19405530393123627, + -0.2832600772380829 + ], + "dims": [1, 3, 1, 1], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/greater.jsonc b/js/web/test/data/ops/greater.jsonc new file mode 100644 index 0000000000..2b115c77db --- /dev/null +++ b/js/web/test/data/ops/greater.jsonc @@ -0,0 +1,141 @@ +[ + { + "name": "Greater with no attributes", + "operator": "Greater", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 4, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true, true, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 2], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, true, true, true, false, false, false, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 4, 2, 2, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, true, false, false, false, true, false, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/identity.jsonc b/js/web/test/data/ops/identity.jsonc new file mode 100644 index 0000000000..09c9a8f46c --- /dev/null +++ b/js/web/test/data/ops/identity.jsonc @@ -0,0 +1,60 @@ +[ + { + "name": "identity with no attributes", + "operator": "Identity", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [1234.5678], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1234.5678], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1.1, 2.2, 3.3, 4.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.1, 2.2, 3.3, 4.4], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1.0, 2.1, 1.0, 3.1, 2.0, 3.9, 1.8, 2.7], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 2.1, 1.0, 3.1, 2.0, 3.9, 1.8, 2.7], + "dims": [2, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/image-scaler.jsonc b/js/web/test/data/ops/image-scaler.jsonc new file mode 100644 index 0000000000..c4891f0340 --- /dev/null +++ b/js/web/test/data/ops/image-scaler.jsonc @@ -0,0 +1,79 @@ +[ + { + "name": "abs with no attributes", + "operator": "ImageScaler", + "attributes": [ + { "name": "bias", "data": [0.0, 0.0, 0.0], "type": "floats" }, + { "name": "scale", "data": 0.003921568859368563, "type": "float" } + ], + "cases": [ + { + "name": "T[1,2,3,4]", + "inputs": [ + { + "data": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "dims": [1, 2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.0, + 0.003921568859368563, + 0.007843137718737125, + 0.011764706578105688, + 0.01568627543747425, + 0.019607844296842813, + 0.023529413156211376, + 0.02745098201557994, + 0.0313725508749485, + 0.035294119734317064, + 0.03921568859368563, + 0.04313725745305419, + 0.0, + 0.003921568859368563, + 0.007843137718737125, + 0.011764706578105688, + 0.01568627543747425, + 0.019607844296842813, + 0.023529413156211376, + 0.02745098201557994, + 0.0313725508749485, + 0.035294119734317064, + 0.03921568859368563, + 0.04313725745305419 + ], + "dims": [1, 2, 3, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/leaky-relu.jsonc b/js/web/test/data/ops/leaky-relu.jsonc new file mode 100644 index 0000000000..6352a7b095 --- /dev/null +++ b/js/web/test/data/ops/leaky-relu.jsonc @@ -0,0 +1,67 @@ +[ + { + "name": "leakyRelu with no (default) attributes", + "operator": "LeakyRelu", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [-1.0, 0.0, 1.0, 1.0, -2.0], + "dims": [1, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-0.01, 0.0, 1.0, 1.0], + "dims": [1, 4], + "type": "float32" + } + ] + } + ] + }, + { + "name": "leakyRelu with specified attributes", + "operator": "LeakyRelu", + "attributes": [{ "name": "alpha", "data": 0.05, "type": "float" }], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [-1.0, 0.0, 1.0, 1.0], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-0.05, 0.0, 1.0, 1.0], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [-1.0], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-0.05], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/less.jsonc b/js/web/test/data/ops/less.jsonc new file mode 100644 index 0000000000..56be399eb4 --- /dev/null +++ b/js/web/test/data/ops/less.jsonc @@ -0,0 +1,141 @@ +[ + { + "name": "Less with no attributes", + "operator": "Less", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, false, false, false, false, false, false, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true, false, false, false, true, true, false, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 4, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true, false, false, true, false, false, false, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [false], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/log.jsonc b/js/web/test/data/ops/log.jsonc new file mode 100644 index 0000000000..1c1d266ccf --- /dev/null +++ b/js/web/test/data/ops/log.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "log with no attributes", + "operator": "Log", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.09861229], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.0, 0.69314718, 1.09861229, 1.38629436], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.0, + 0.69314718, + 0.0, + 1.09861229, + 0.69314718, + 1.09861229, + 0.0, + 0.69314718 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/matmul.jsonc b/js/web/test/data/ops/matmul.jsonc new file mode 100644 index 0000000000..0a98dc2e72 --- /dev/null +++ b/js/web/test/data/ops/matmul.jsonc @@ -0,0 +1,1354 @@ +[ + { + "name": "matmul tests with no attributes", + "operator": "MatMul", + "attributes": [], + "cases": [ + { + "name": "multiplies 2D tensors", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 0, 4], + "dims": [4, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [6, 20, 9, 19], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "multiplies 3D tensors", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ], + "dims": [3, 2, 4], + "type": "float32" + }, + { + "data": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36 + ], + "dims": [3, 4, 3], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 190, + 200, + 210, + 470, + 496, + 522, + 422, + 496, + 570, + 510, + 600, + 690, + 1254, + 1296, + 1338, + 1726, + 1784, + 1842 + ], + "dims": [3, 2, 3], + "type": "float32" + } + ] + }, + { + "name": "multiplies 4D tensors", + "inputs": [ + { + "data": [ + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36 + ], + "dims": [2, 3, 4, 3], + "type": "float32" + }, + { + "data": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45 + ], + "dims": [2, 3, 3, 5], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 5824, + 5938, + 6052, + 6166, + 6280, + 6283, + 6406, + 6529, + 6652, + 6775, + 6742, + 6874, + 7006, + 7138, + 7270, + 7201, + 7342, + 7483, + 7624, + 7765, + 9910, + 10060, + 10210, + 10360, + 10510, + 10504, + 10663, + 10822, + 10981, + 11140, + 11098, + 11266, + 11434, + 11602, + 11770, + 11692, + 11869, + 12046, + 12223, + 12400, + 15076, + 15262, + 15448, + 15634, + 15820, + 15805, + 16000, + 16195, + 16390, + 16585, + 16534, + 16738, + 16942, + 17146, + 17350, + 17263, + 17476, + 17689, + 17902, + 18115, + 46, + 52, + 58, + 64, + 70, + 100, + 115, + 130, + 145, + 160, + 154, + 178, + 202, + 226, + 250, + 208, + 241, + 274, + 307, + 340, + 892, + 934, + 976, + 1018, + 1060, + 1081, + 1132, + 1183, + 1234, + 1285, + 1270, + 1330, + 1390, + 1450, + 1510, + 1459, + 1528, + 1597, + 1666, + 1735, + 2818, + 2896, + 2974, + 3052, + 3130, + 3142, + 3229, + 3316, + 3403, + 3490, + 3466, + 3562, + 3658, + 3754, + 3850, + 3790, + 3895, + 4000, + 4105, + 4210 + ], + "dims": [2, 3, 4, 5], + "type": "float32" + } + ] + }, + { + "name": "multiplies 2D broadcasted to 4D tensors", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [ + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192 + ], + "dims": [4, 3, 2, 4, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 369, + 376, + 414, + 422, + 425, + 432, + 478, + 486, + 481, + 488, + 542, + 550, + 537, + 544, + 606, + 614, + 593, + 600, + 670, + 678, + 649, + 656, + 734, + 742, + 705, + 712, + 798, + 806, + 761, + 768, + 862, + 870, + 817, + 824, + 926, + 934, + 873, + 880, + 990, + 998, + 929, + 936, + 1054, + 1062, + 985, + 992, + 1118, + 1126, + 33, + 40, + 30, + 38, + 89, + 96, + 94, + 102, + 145, + 152, + 158, + 166, + 201, + 208, + 222, + 230, + 257, + 264, + 286, + 294, + 313, + 320, + 350, + 358, + 1041, + 1048, + 1182, + 1190, + 1097, + 1104, + 1246, + 1254, + 1153, + 1160, + 1310, + 1318, + 1209, + 1216, + 1374, + 1382, + 1265, + 1272, + 1438, + 1446, + 1321, + 1328, + 1502, + 1510 + ], + "dims": [4, 3, 2, 2, 2], + "type": "float32" + } + ] + }, + { + "name": "multiplies 4D broadcasted to 5D tensors", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ], + "dims": [3, 1, 2, 4], + "type": "float32" + }, + { + "data": [ + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192 + ], + "dims": [4, 3, 2, 4, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 530, + 540, + 1362, + 1388, + 610, + 620, + 1570, + 1596, + 5042, + 5116, + 6130, + 6220, + 5634, + 5708, + 6850, + 6940, + 3538, + 3580, + 4882, + 4940, + 3874, + 3916, + 5346, + 5404, + 1010, + 1020, + 2610, + 2636, + 1090, + 1100, + 2818, + 2844, + 8594, + 8668, + 10450, + 10540, + 9186, + 9260, + 11170, + 11260, + 5554, + 5596, + 7666, + 7724, + 5890, + 5932, + 8130, + 8188, + 50, + 60, + 114, + 140, + 130, + 140, + 322, + 348, + 1490, + 1564, + 1810, + 1900, + 2082, + 2156, + 2530, + 2620, + 1522, + 1564, + 2098, + 2156, + 1858, + 1900, + 2562, + 2620, + 1490, + 1500, + 3858, + 3884, + 1570, + 1580, + 4066, + 4092, + 12146, + 12220, + 14770, + 14860, + 12738, + 12812, + 15490, + 15580, + 7570, + 7612, + 10450, + 10508, + 7906, + 7948, + 10914, + 10972 + ], + "dims": [4, 3, 2, 2, 2], + "type": "float32" + } + ] + }, + { + "name": "multiplies 5D with 2D tensors", + "inputs": [ + { + "data": [ + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "dims": [5, 3, 1, 2, 3], + "type": "float32" + }, + { + "data": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], + "dims": [3, 5], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1342, + 1564, + 1786, + 2008, + 2230, + 1396, + 1627, + 1858, + 2089, + 2320, + 1450, + 1690, + 1930, + 2170, + 2410, + 1504, + 1753, + 2002, + 2251, + 2500, + 1558, + 1816, + 2074, + 2332, + 2590, + 1612, + 1879, + 2146, + 2413, + 2680, + 46, + 52, + 58, + 64, + 70, + 100, + 115, + 130, + 145, + 160, + 154, + 178, + 202, + 226, + 250, + 208, + 241, + 274, + 307, + 340, + 262, + 304, + 346, + 388, + 430, + 316, + 367, + 418, + 469, + 520, + 370, + 430, + 490, + 550, + 610, + 424, + 493, + 562, + 631, + 700, + 478, + 556, + 634, + 712, + 790, + 532, + 619, + 706, + 793, + 880, + 586, + 682, + 778, + 874, + 970, + 640, + 745, + 850, + 955, + 1060, + 694, + 808, + 922, + 1036, + 1150, + 748, + 871, + 994, + 1117, + 1240, + 802, + 934, + 1066, + 1198, + 1330, + 856, + 997, + 1138, + 1279, + 1420, + 910, + 1060, + 1210, + 1360, + 1510, + 964, + 1123, + 1282, + 1441, + 1600, + 1018, + 1186, + 1354, + 1522, + 1690, + 1072, + 1249, + 1426, + 1603, + 1780, + 1126, + 1312, + 1498, + 1684, + 1870, + 1180, + 1375, + 1570, + 1765, + 1960, + 1234, + 1438, + 1642, + 1846, + 2050, + 1288, + 1501, + 1714, + 1927, + 2140 + ], + "dims": [5, 3, 1, 2, 5], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/mul.jsonc b/js/web/test/data/ops/mul.jsonc new file mode 100644 index 0000000000..99867c87c6 --- /dev/null +++ b/js/web/test/data/ops/mul.jsonc @@ -0,0 +1,213 @@ +[ + { + "name": "Mul with no attributes", + "operator": "Mul", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [6, 3, 3, 6, 6, 9, 6, 12], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2, 2, 3, 8, 2, 6, 9, 16], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2, 2, 1, 6, 4, 9, 1, 8], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[3,2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [ + 2, + 6, + 1, + 2, + 1, + 3, + 1, + 4, + 3, + 5, + 3, + 4, + 1, + 4, + 1, + 6, + 4, + 4, + 5, + 6, + 2, + 4, + 2, + 6 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 2, + 12, + 3, + 8, + 5, + 18, + 7, + 32, + 3, + 10, + 9, + 16, + 5, + 24, + 7, + 48, + 4, + 8, + 15, + 24, + 10, + 24, + 14, + 48 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/mul_int32.jsonc b/js/web/test/data/ops/mul_int32.jsonc new file mode 100644 index 0000000000..ddc0032f12 --- /dev/null +++ b/js/web/test/data/ops/mul_int32.jsonc @@ -0,0 +1,31 @@ +[ + { + "name": "Mul with no attributes", + "operator": "Mul", + "attributes": [], + "cases": [ + { + "name": "T[2,4] T[2,4] (int32)", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "int32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "int32" + } + ], + "outputs": [ + { + "data": [2, 2, 1, 6, 4, 9, 1, 8], + "dims": [2, 4], + "type": "int32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/neg.jsonc b/js/web/test/data/ops/neg.jsonc new file mode 100644 index 0000000000..c65da5e578 --- /dev/null +++ b/js/web/test/data/ops/neg.jsonc @@ -0,0 +1,77 @@ +[ + { + "name": "neg with no attributes", + "operator": "Neg", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [1], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1, 2, -1, -2], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1, -2, 1, 2], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1, 2, -1, -2, 0, 1, -1, 0], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1, -2, 1, 2, 0, -1, 1, 0], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/not.jsonc b/js/web/test/data/ops/not.jsonc new file mode 100644 index 0000000000..d8d63b0352 --- /dev/null +++ b/js/web/test/data/ops/not.jsonc @@ -0,0 +1,77 @@ +[ + { + "name": "not with no attributes", + "operator": "Not", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [true], + "dims": [1], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false], + "dims": [1], + "type": "bool" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [true, false, false, true], + "dims": [4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false, true, true, false], + "dims": [4], + "type": "bool" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [true, false, false, true, true, false, false, true], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false, true, true, false, false, true, true, false], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/or.jsonc b/js/web/test/data/ops/or.jsonc new file mode 100644 index 0000000000..249af73f6f --- /dev/null +++ b/js/web/test/data/ops/or.jsonc @@ -0,0 +1,119 @@ +[ + { + "name": "Or with no attributes", + "operator": "Or", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [true], + "dims": [1], + "type": "bool" + }, + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, true, true, true, true, true, true, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [true, false, false, true], + "dims": [4], + "type": "bool" + }, + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, false, true, true, true, false, true, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + }, + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + }, + { + "data": [false], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + }, + { + "data": [true], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/pad-big.jsonc b/js/web/test/data/ops/pad-big.jsonc new file mode 100644 index 0000000000..8c03685de0 --- /dev/null +++ b/js/web/test/data/ops/pad-big.jsonc @@ -0,0 +1,99883 @@ +[ + { + "name": "constant 2D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "reflect", "type": "string" }, + { "name": "pads", "data": [0, 0, 1, 1, 0, 0, 1, 1], "type": "ints" } + ], + "cases": [ + { + "name": "[1,3,128,128]->[1,8,126,126]", + "inputs": [ + { + "data": [ + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1 + ], + "dims": [1, 3, 128, 128], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391, + 0.5058823823928833, + 0.501960813999176, + 0.5058823823928833, + 0.5098039507865906, + 0.5137255191802979, + 0.5176470875740051, + 0.5215686559677124, + 0.5254902243614197, + 0.529411792755127, + 0.5333333611488342, + 0.5372549295425415, + 0.5411764979362488, + 0.545098066329956, + 0.5490196347236633, + 0.5529412031173706, + 0.5568627715110779, + 0.5607843399047852, + 0.5647059082984924, + 0.5686274766921997, + 0.572549045085907, + 0.5764706134796143, + 0.5803921818733215, + 0.5843137502670288, + 0.5882353186607361, + 0.5921568870544434, + 0.5960784554481506, + 0.6000000238418579, + 0.6039215922355652, + 0.6078431606292725, + 0.6117647290229797, + 0.615686297416687, + 0.6196078658103943, + 0.6235294342041016, + 0.6274510025978088, + 0.6313725709915161, + 0.6352941393852234, + 0.6392157077789307, + 0.6431372761726379, + 0.6470588445663452, + 0.6509804129600525, + 0.6549019813537598, + 0.658823549747467, + 0.6627451181411743, + 0.6666666865348816, + 0.6705882549285889, + 0.6745098233222961, + 0.6784313917160034, + 0.6823529601097107, + 0.686274528503418, + 0.6901960968971252, + 0.6941176652908325, + 0.6980392336845398, + 0.7019608020782471, + 0.7058823704719543, + 0.7098039388656616, + 0.7137255072593689, + 0.7176470756530762, + 0.7215686440467834, + 0.7254902124404907, + 0.729411780834198, + 0.7333333492279053, + 0.7372549176216125, + 0.7411764860153198, + 0.7450980544090271, + 0.7490196228027344, + 0.7529411911964417, + 0.7568627595901489, + 0.7607843279838562, + 0.7647058963775635, + 0.7686274647712708, + 0.772549033164978, + 0.7764706015586853, + 0.7803921699523926, + 0.7843137383460999, + 0.7882353067398071, + 0.7921568751335144, + 0.7960784435272217, + 0.800000011920929, + 0.8039215803146362, + 0.8078431487083435, + 0.8117647171020508, + 0.8156862854957581, + 0.8196078538894653, + 0.8235294222831726, + 0.8274509906768799, + 0.8313725590705872, + 0.8352941274642944, + 0.8392156958580017, + 0.843137264251709, + 0.8470588326454163, + 0.8509804010391235, + 0.8549019694328308, + 0.8588235378265381, + 0.8627451062202454, + 0.8666666746139526, + 0.8705882430076599, + 0.8745098114013672, + 0.8784313797950745, + 0.8823529481887817, + 0.886274516582489, + 0.8901960849761963, + 0.8941176533699036, + 0.8980392217636108, + 0.9019607901573181, + 0.9058823585510254, + 0.9098039269447327, + 0.9137254953384399, + 0.9176470637321472, + 0.9215686321258545, + 0.9254902005195618, + 0.929411768913269, + 0.9333333373069763, + 0.9372549057006836, + 0.9411764740943909, + 0.9450980424880981, + 0.9490196108818054, + 0.9529411792755127, + 0.95686274766922, + 0.9607843160629272, + 0.9647058844566345, + 0.9686274528503418, + 0.9725490212440491, + 0.9764705896377563, + 0.9803921580314636, + 0.9843137264251709, + 0.9882352948188782, + 0.9921568632125854, + 0.9960784316062927, + 1, + 0.9960784316062927, + 0.003921568859368563, + 0, + 0.003921568859368563, + 0.007843137718737125, + 0.0117647061124444, + 0.01568627543747425, + 0.019607843831181526, + 0.0235294122248888, + 0.027450980618596077, + 0.0313725508749485, + 0.03529411926865578, + 0.03921568766236305, + 0.04313725605607033, + 0.0470588244497776, + 0.05098039284348488, + 0.054901961237192154, + 0.05882352963089943, + 0.062745101749897, + 0.06666667014360428, + 0.07058823853731155, + 0.07450980693101883, + 0.0784313753247261, + 0.08235294371843338, + 0.08627451211214066, + 0.09019608050584793, + 0.0941176488995552, + 0.09803921729326248, + 0.10196078568696976, + 0.10588235408067703, + 0.10980392247438431, + 0.11372549086809158, + 0.11764705926179886, + 0.12156862765550613, + 0.125490203499794, + 0.12941177189350128, + 0.13333334028720856, + 0.13725490868091583, + 0.1411764770746231, + 0.14509804546833038, + 0.14901961386203766, + 0.15294118225574493, + 0.1568627506494522, + 0.16078431904315948, + 0.16470588743686676, + 0.16862745583057404, + 0.1725490242242813, + 0.1764705926179886, + 0.18039216101169586, + 0.18431372940540314, + 0.1882352977991104, + 0.1921568661928177, + 0.19607843458652496, + 0.20000000298023224, + 0.20392157137393951, + 0.2078431397676468, + 0.21176470816135406, + 0.21568627655506134, + 0.21960784494876862, + 0.2235294133424759, + 0.22745098173618317, + 0.23137255012989044, + 0.23529411852359772, + 0.239215686917305, + 0.24313725531101227, + 0.24705882370471954, + 0.250980406999588, + 0.2549019753932953, + 0.25882354378700256, + 0.26274511218070984, + 0.2666666805744171, + 0.2705882489681244, + 0.27450981736183167, + 0.27843138575553894, + 0.2823529541492462, + 0.2862745225429535, + 0.29019609093666077, + 0.29411765933036804, + 0.2980392277240753, + 0.3019607961177826, + 0.30588236451148987, + 0.30980393290519714, + 0.3137255012989044, + 0.3176470696926117, + 0.32156863808631897, + 0.32549020648002625, + 0.3294117748737335, + 0.3333333432674408, + 0.33725491166114807, + 0.34117648005485535, + 0.3450980484485626, + 0.3490196168422699, + 0.3529411852359772, + 0.35686275362968445, + 0.3607843220233917, + 0.364705890417099, + 0.3686274588108063, + 0.37254902720451355, + 0.3764705955982208, + 0.3803921639919281, + 0.3843137323856354, + 0.38823530077934265, + 0.3921568691730499, + 0.3960784375667572, + 0.4000000059604645, + 0.40392157435417175, + 0.40784314274787903, + 0.4117647111415863, + 0.4156862795352936, + 0.41960784792900085, + 0.42352941632270813, + 0.4274509847164154, + 0.4313725531101227, + 0.43529412150382996, + 0.43921568989753723, + 0.4431372582912445, + 0.4470588266849518, + 0.45098039507865906, + 0.45490196347236633, + 0.4588235318660736, + 0.4627451002597809, + 0.46666666865348816, + 0.47058823704719543, + 0.4745098054409027, + 0.47843137383461, + 0.48235294222831726, + 0.48627451062202454, + 0.4901960790157318, + 0.4941176474094391, + 0.49803921580314636, + 0.4941176474094391 + ], + "dims": [1, 3, 130, 130], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/pad.jsonc b/js/web/test/data/ops/pad.jsonc new file mode 100644 index 0000000000..2d0de76516 --- /dev/null +++ b/js/web/test/data/ops/pad.jsonc @@ -0,0 +1,1291 @@ +[ + { + "name": "constant 2D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "constant", "type": "string" }, + { "name": "value", "data": 1.2, "type": "float" }, + { "name": "pads", "data": [3, 2, 2, 3], "type": "ints" } + ], + "cases": [ + { + "name": "[2,2]->[7,7]", + "inputs": [ + { + "data": [1.0, 2.0, 3.0, 4.0], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.0, + 2.0, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 3.0, + 4.0, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2, + 1.2 + ], + "dims": [7, 7], + "type": "float32" + } + ] + } + ] + }, + { + "name": "constant 3D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "constant", "type": "string" }, + { "name": "value", "data": 2.3, "type": "float" }, + { "name": "pads", "data": [1, 2, 2, 2, 3, 1], "type": "ints" } + ], + "cases": [ + { + "name": "[2,3,4]->[5,8,7]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 1.0, + 2.0, + 3.0, + 4.0, + 2.3, + 2.3, + 2.3, + 5.0, + 6.0, + 7.0, + 8.0, + 2.3, + 2.3, + 2.3, + 1.0, + 2.0, + 3.0, + 4.0, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 5.0, + 6.0, + 7.0, + 8.0, + 2.3, + 2.3, + 2.3, + 1.0, + 2.0, + 3.0, + 4.0, + 2.3, + 2.3, + 2.3, + 5.0, + 6.0, + 7.0, + 8.0, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3, + 2.3 + ], + "dims": [5, 8, 7], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Reflect 1D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "reflect", "type": "string" }, + { "name": "pads", "data": [5, 7], "type": "ints" } + ], + "cases": [ + { + "name": "[3]->[15]", + "inputs": [ + { + "data": [1.0, 2.0, 3.0], + "dims": [3], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 2.0, + 1.0, + 2.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 2.0, + 1.0, + 2.0 + ], + "dims": [15], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Reflect 2D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "reflect", "type": "string" }, + { "name": "pads", "data": [3, 2, 2, 5], "type": "ints" } + ], + "cases": [ + { + "name": "[2,2]->[7,9]", + "inputs": [ + { + "data": [1.0, 2.0, 3.0, 4.0], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0 + ], + "dims": [7, 9], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Reflect 3D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "reflect", "type": "string" }, + { "name": "pads", "data": [1, 2, 2, 2, 3, 1], "type": "ints" } + ], + "cases": [ + { + "name": "[2,3,4]->[5, 8, 7]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 7.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 3.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0 + ], + "dims": [5, 8, 7], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Edge 2D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "edge", "type": "string" }, + { "name": "pads", "data": [3, 2, 2, 3], "type": "ints" } + ], + "cases": [ + { + "name": "[2,2]->[7,7]", + "inputs": [ + { + "data": [1.0, 2.0, 3.0, 4.0], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.0, + 1.0, + 2.0, + 2.0, + 2.0, + 2.0, + 1.0, + 1.0, + 1.0, + 2.0, + 2.0, + 2.0, + 2.0, + 1.0, + 1.0, + 1.0, + 2.0, + 2.0, + 2.0, + 2.0, + 1.0, + 1.0, + 1.0, + 2.0, + 2.0, + 2.0, + 2.0, + 3.0, + 3.0, + 3.0, + 4.0, + 4.0, + 4.0, + 4.0, + 3.0, + 3.0, + 3.0, + 4.0, + 4.0, + 4.0, + 4.0, + 3.0, + 3.0, + 3.0, + 4.0, + 4.0, + 4.0, + 4.0 + ], + "dims": [7, 7], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Edge 3D", + "operator": "Pad", + "attributes": [ + { "name": "mode", "data": "edge", "type": "string" }, + { "name": "pads", "data": [1, 2, 2, 2, 3, 1], "type": "ints" } + ], + "cases": [ + { + "name": "[2,3,4]->[5, 8, 7]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 1.0, + 1.0, + 1.0, + 2.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0, + 5.0, + 5.0, + 5.0, + 6.0, + 7.0, + 8.0, + 8.0 + ], + "dims": [5, 8, 7], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/pow-big-number.jsonc b/js/web/test/data/ops/pow-big-number.jsonc new file mode 100644 index 0000000000..e28c08c057 --- /dev/null +++ b/js/web/test/data/ops/pow-big-number.jsonc @@ -0,0 +1,82 @@ +[ + { + "name": "Pow with no attributes - big number", + "operator": "Pow", + "attributes": [], + "condition": "^((?!iOS).)*$", // does NOT contains 'iOS': large number cannot be handled in a half_float environment + "cases": [ + { + "name": "T[2,4] T[3,2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [ + 2, + 6, + 1, + 2, + 1, + 3, + 1, + 4, + 3, + 5, + 3, + 4, + 1, + 4, + 1, + 6, + 4, + 4, + 5, + 6, + 2, + 4, + 2, + 6 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 64, + 3, + 16, + 5, + 216, + 7, + 4096, + 1, + 32, + 27, + 256, + 5, + 1296, + 7, + 262144, + 1, + 16, + 243, + 4096, + 25, + 1296, + 49, + 262144 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/pow.jsonc b/js/web/test/data/ops/pow.jsonc new file mode 100644 index 0000000000..543d1b4b3d --- /dev/null +++ b/js/web/test/data/ops/pow.jsonc @@ -0,0 +1,141 @@ +[ + { + "name": "Pow with no attributes", + "operator": "Pow", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [9, 3, 3, 9, 9, 27, 9, 81], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 3, 16, 1, 8, 27, 256], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 1, 9, 4, 27, 1, 16], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 1, 1, 1], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [3], + "dims": [], + "type": "float32" + }, + { + "data": [2], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [9], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/reduce-min.jsonc b/js/web/test/data/ops/reduce-min.jsonc new file mode 100644 index 0000000000..f1e7b3a0e8 --- /dev/null +++ b/js/web/test/data/ops/reduce-min.jsonc @@ -0,0 +1,67 @@ +[ + { + "name": "reduceMin - keepdims=1", + "operator": "ReduceMin", + "attributes": [{ "name": "keepdims", "data": 1, "type": "int" }], + "cases": [ + { + "name": "T[1,2,2,1]", + "inputs": [ + { + "data": [1.0, 1.5, 2.0, 2.5], + "dims": [1, 2, 2, 1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0], + "dims": [1, 1, 1, 1], + "type": "float32" + } + ] + } + ] + }, + { + "name": "reduceMin - keepdims=0", + "operator": "ReduceMin", + "attributes": [{ "name": "keepdims", "data": 0, "type": "int" }], + "cases": [ + { + "name": "T[1,1,1,1]", + "inputs": [ + { + "data": [1.0], + "dims": [1, 1, 1, 1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0], + "dims": [], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1.0], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/relu.jsonc b/js/web/test/data/ops/relu.jsonc new file mode 100644 index 0000000000..5aa4a9088f --- /dev/null +++ b/js/web/test/data/ops/relu.jsonc @@ -0,0 +1,43 @@ +[ + { + "name": "relu", + "operator": "Relu", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [1.0, -2.0, 0, 2.0], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 0, 0, 2.0], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [1.0], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/reshape.jsonc b/js/web/test/data/ops/reshape.jsonc new file mode 100644 index 0000000000..3b7b115419 --- /dev/null +++ b/js/web/test/data/ops/reshape.jsonc @@ -0,0 +1,97 @@ +[ + { + "name": "Reshape with '0' and '-1' in the shape tensor input", + "operator": "Reshape", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [1, 1, 1, 1], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [-1, 0], + "dims": [2], + "type": "int32" + } + ], + "outputs": [ + { + "data": [1, 1, 1, 1], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar to 1D", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [1], + "type": "int32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "Scalar to 2D", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1, 1], + "dims": [2], + "type": "int32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [1, 1], + "type": "float32" + } + ] + }, + { + "name": "Scalar to 2D with -1 in shape hints", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [-1, 1], + "dims": [2], + "type": "int32" + } + ], + "outputs": [ + { + "data": [1], + "dims": [1, 1], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/sin.jsonc b/js/web/test/data/ops/sin.jsonc new file mode 100644 index 0000000000..074afa51e3 --- /dev/null +++ b/js/web/test/data/ops/sin.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "sin with no attributes", + "operator": "Sin", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [0.4], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.3894], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.0998, 0.1987, 0.2955, 0.3894], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4, 0.9, 0.8, 0.7, 0.6], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.0998, + 0.1987, + 0.2955, + 0.3894, + 0.7833, + 0.7173, + 0.6442, + 0.5646 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [0.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.0998], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/softmax.jsonc b/js/web/test/data/ops/softmax.jsonc new file mode 100644 index 0000000000..391874bd9d --- /dev/null +++ b/js/web/test/data/ops/softmax.jsonc @@ -0,0 +1,36 @@ +[ + { + "name": "Softmax with no attributes", + "operator": "Softmax", + "attributes": [], + "cases": [ + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1.0, 2.0, 3.0, 4.0], + "dims": [2, 2], + "type": "float32" + }, + { + "data": 1, + "dims": [1], + "type": "int32" + } + ], + "outputs": [ + { + "data": [ + 0.2689414322376251, + 0.7310585975646973, + 0.2689414322376251, + 0.7310585975646973 + ], + "dims": [2, 2], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/split.jsonc b/js/web/test/data/ops/split.jsonc new file mode 100644 index 0000000000..2eb9e8f14f --- /dev/null +++ b/js/web/test/data/ops/split.jsonc @@ -0,0 +1,79 @@ +[ + { + "name": "Split on Axis 0", + "operator": "Split", + "attributes": [ + { "name": "axis", "data": 0, "type": "int" }, + { "name": "split", "data": [2, 4], "type": "ints" } + ], + "cases": [ + { + "name": "T[6]", + "inputs": [ + { + "data": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], + "dims": [6], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 2.0], + "dims": [2], + "type": "float32" + }, + { + "data": [3.0, 4.0, 5.0, 6.0], + "dims": [4], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Split on Axis 1 - 2D", + "operator": "Split", + "attributes": [ + { "name": "axis", "data": 1, "type": "int" }, + { "name": "split", "data": [2, 4], "type": "ints" } + ], + "cases": [ + { + "name": "T[6]", + "inputs": [ + { + "data": [ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0 + ], + "dims": [2, 6], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 2.0, 7.0, 8.0], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [3.0, 4.0, 5.0, 6.0, 9.0, 10.0, 11.0, 12.0], + "dims": [2, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/sqrt.jsonc b/js/web/test/data/ops/sqrt.jsonc new file mode 100644 index 0000000000..fe3ef011c8 --- /dev/null +++ b/js/web/test/data/ops/sqrt.jsonc @@ -0,0 +1,60 @@ +[ + { + "name": "sqrt with no attributes", + "operator": "Sqrt", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [9], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [1, 4, 9, 16], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [1, 4, 9, 16, 25, 36, 49, 64], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/sub.jsonc b/js/web/test/data/ops/sub.jsonc new file mode 100644 index 0000000000..2c1f4e0544 --- /dev/null +++ b/js/web/test/data/ops/sub.jsonc @@ -0,0 +1,213 @@ +[ + { + "name": "Sub with no attributes", + "operator": "Sub", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [3], + "dims": [1], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 2, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 2, 2, 1, 1, 0, 1, -1], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4], + "dims": [4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 3, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1, 1, 2, 2, -1, -1, 0, 0], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[2,4]", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1, 1, 0, 1, 0, 0, 0, -2], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4] T[3,2,4]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6, 7, 8], + "dims": [2, 4], + "type": "float32" + }, + { + "data": [ + 2, + 6, + 1, + 2, + 1, + 3, + 1, + 4, + 3, + 5, + 3, + 4, + 1, + 4, + 1, + 6, + 4, + 4, + 5, + 6, + 2, + 4, + 2, + 6 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + -1, + -4, + 2, + 2, + 4, + 3, + 6, + 4, + -2, + -3, + 0, + 0, + 4, + 2, + 6, + 2, + -3, + -2, + -2, + -2, + 3, + 2, + 5, + 2 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [-1, -1, -1, -1], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [2, 2, 2, 2], + "dims": [2, 2], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 1, 1, 1], + "dims": [2, 2], + "type": "float32" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [1], + "dims": [], + "type": "float32" + }, + { + "data": [1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/sub_int32.jsonc b/js/web/test/data/ops/sub_int32.jsonc new file mode 100644 index 0000000000..0ed2bc123f --- /dev/null +++ b/js/web/test/data/ops/sub_int32.jsonc @@ -0,0 +1,31 @@ +[ + { + "name": "Sub with no attributes", + "operator": "Sub", + "attributes": [], + "cases": [ + { + "name": "T[2,4] T[2,4] (int32)", + "inputs": [ + { + "data": [1, 2, 1, 3, 2, 3, 1, 2], + "dims": [2, 4], + "type": "int32" + }, + { + "data": [2, 1, 1, 2, 2, 3, 1, 4], + "dims": [2, 4], + "type": "int32" + } + ], + "outputs": [ + { + "data": [-1, 1, 0, 1, 0, 0, 0, -2], + "dims": [2, 4], + "type": "int32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/tan.jsonc b/js/web/test/data/ops/tan.jsonc new file mode 100644 index 0000000000..4ff43c1edf --- /dev/null +++ b/js/web/test/data/ops/tan.jsonc @@ -0,0 +1,86 @@ +[ + { + "name": "tan with no attributes", + "operator": "Tan", + "attributes": [], + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [0.4], + "dims": [1], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.42279322], + "dims": [1], + "type": "float32" + } + ] + }, + { + "name": "T[1]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4], + "dims": [4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.10033467, 0.20271004, 0.30933625, 0.42279322], + "dims": [4], + "type": "float32" + } + ] + }, + { + "name": "T[2,4]", + "inputs": [ + { + "data": [0.1, 0.2, 0.3, 0.4, 0.9, 0.8, 0.7, 0.6], + "dims": [2, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 0.10033467, + 0.20271004, + 0.30933625, + 0.42279322, + 1.26015822, + 1.02963856, + 0.84228838, + 0.68413681 + ], + "dims": [2, 4], + "type": "float32" + } + ] + }, + { + "name": "Scalar", + "inputs": [ + { + "data": [0.1], + "dims": [], + "type": "float32" + } + ], + "outputs": [ + { + "data": [0.10033467], + "dims": [], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/transpose.jsonc b/js/web/test/data/ops/transpose.jsonc new file mode 100644 index 0000000000..cb851bf321 --- /dev/null +++ b/js/web/test/data/ops/transpose.jsonc @@ -0,0 +1,470 @@ +[ + { + "name": "Transpose - no perm", + "operator": "Transpose", + "attributes": [], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [1, 2, 3, 4, 5, 6], + "dims": [2, 3], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1, 4, 2, 5, 3, 6], + "dims": [3, 2], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Transpose - perms:[0, 1, 2]", + "operator": "Transpose", + "attributes": [{ "name": "perm", "data": [0, 1, 2], "type": "ints" }], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Transpose - perms:[0, 2, 1]", + "operator": "Transpose", + "attributes": [{ "name": "perm", "data": [0, 2, 1], "type": "ints" }], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 5, + 9, + 2, + 6, + 10, + 3, + 7, + 11, + 4, + 8, + 12, + 13, + 17, + 21, + 14, + 18, + 22, + 15, + 19, + 23, + 16, + 20, + 24 + ], + "dims": [2, 4, 3], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Transpose - perms:[2, 1, 0]", + "operator": "Transpose", + "attributes": [{ "name": "perm", "data": [2, 1, 0], "type": "ints" }], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 13, + 5, + 17, + 9, + 21, + 2, + 14, + 6, + 18, + 10, + 22, + 3, + 15, + 7, + 19, + 11, + 23, + 4, + 16, + 8, + 20, + 12, + 24 + ], + "dims": [4, 3, 2], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Transpose - perms:[2, 0, 1]", + "operator": "Transpose", + "attributes": [{ "name": "perm", "data": [2, 0, 1], "type": "ints" }], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 5, + 9, + 13, + 17, + 21, + 2, + 6, + 10, + 14, + 18, + 22, + 3, + 7, + 11, + 15, + 19, + 23, + 4, + 8, + 12, + 16, + 20, + 24 + ], + "dims": [4, 2, 3], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Transpose - perms:[1, 2, 0]", + "operator": "Transpose", + "attributes": [{ "name": "perm", "data": [1, 2, 0], "type": "ints" }], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 13, + 2, + 14, + 3, + 15, + 4, + 16, + 5, + 17, + 6, + 18, + 7, + 19, + 8, + 20, + 9, + 21, + 10, + 22, + 11, + 23, + 12, + 24 + ], + "dims": [3, 4, 2], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Transpose - perms:[1, 0, 2]", + "operator": "Transpose", + "attributes": [{ "name": "perm", "data": [1, 0, 2], "type": "ints" }], + "cases": [ + { + "name": "T[2,3]", + "inputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "dims": [2, 3, 4], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1, + 2, + 3, + 4, + 13, + 14, + 15, + 16, + 5, + 6, + 7, + 8, + 17, + 18, + 19, + 20, + 9, + 10, + 11, + 12, + 21, + 22, + 23, + 24 + ], + "dims": [3, 2, 4], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/upsample.jsonc b/js/web/test/data/ops/upsample.jsonc new file mode 100644 index 0000000000..5a05ff69c7 --- /dev/null +++ b/js/web/test/data/ops/upsample.jsonc @@ -0,0 +1,518 @@ +[ + { + "name": "Upsample - Nearest", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [1.0, 1.0, 2.0, 3.0], "type": "floats" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [1, 2, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.0, + 1.0, + 3.0, + 3.0, + 3.0, + 1.0, + 1.0, + 1.0, + 3.0, + 3.0, + 3.0, + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 5.0, + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 5.0, + + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 5.0, + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 5.0, + 7.0, + 7.0, + 7.0, + 9.0, + 9.0, + 9.0, + 7.0, + 7.0, + 7.0, + 9.0, + 9.0, + 9.0 + ], + "dims": [1, 2, 4, 6], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - Nearest2X", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [1.0, 1.0, 2.0, 2.0], "type": "floats" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [1, 2, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.0, + 3.0, + 3.0, + 1.0, + 1.0, + 3.0, + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 3.0, + 3.0, + 5.0, + 5.0, + + 3.0, + 3.0, + 5.0, + 5.0, + 3.0, + 3.0, + 5.0, + 5.0, + 7.0, + 7.0, + 9.0, + 9.0, + 7.0, + 7.0, + 9.0, + 9.0 + ], + "dims": [1, 2, 4, 4], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - Nearest222X", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [2.0, 1.0, 2.0, 2.0], "type": "floats" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [1, 2, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.0, + 3.0, + 3.0, + 1.0, + 1.0, + 3.0, + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 3.0, + 3.0, + 5.0, + 5.0, + + 3.0, + 3.0, + 5.0, + 5.0, + 3.0, + 3.0, + 5.0, + 5.0, + 7.0, + 7.0, + 9.0, + 9.0, + 7.0, + 7.0, + 9.0, + 9.0, + + 1.0, + 1.0, + 3.0, + 3.0, + 1.0, + 1.0, + 3.0, + 3.0, + 3.0, + 3.0, + 5.0, + 5.0, + 3.0, + 3.0, + 5.0, + 5.0, + + 3.0, + 3.0, + 5.0, + 5.0, + 3.0, + 3.0, + 5.0, + 5.0, + 7.0, + 7.0, + 9.0, + 9.0, + 7.0, + 7.0, + 9.0, + 9.0 + ], + "dims": [2, 2, 4, 4], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - Nearest15X", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [1.0, 1.0, 2.0, 1.5], "type": "floats" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [1, 2, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.0, + 3.0, + 1.0, + 1.0, + 3.0, + 3.0, + 3.0, + 5.0, + 3.0, + 3.0, + 5.0, + + 3.0, + 3.0, + 5.0, + 3.0, + 3.0, + 5.0, + 7.0, + 7.0, + 9.0, + 7.0, + 7.0, + 9.0 + ], + "dims": [1, 2, 4, 3], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - Nearest_NoScale", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [1.0, 1.0, 1.0, 1.0], "type": "floats" }, + { "name": "mode", "data": "nearest", "type": "string" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [1, 2, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [1, 2, 2, 2], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - 4D Bilinear", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [1.0, 1.0, 2.0, 4.0], "type": "floats" }, + { "name": "mode", "data": "linear", "type": "string" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [2, 1, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.5, + 2.0, + 2.5, + 3.0, + 3.0, + 3.0, + 3.0, + 2.0, + 2.5, + 3.0, + 3.5, + 4.0, + 4.0, + 4.0, + 4.0, + 3.0, + 3.5, + 4.0, + 4.5, + 5.0, + 5.0, + 5.0, + 5.0, + 3.0, + 3.5, + 4.0, + 4.5, + 5.0, + 5.0, + 5.0, + 5.0, + + 3.0, + 3.5, + 4.0, + 4.5, + 5.0, + 5.0, + 5.0, + 5.0, + 5.0, + 5.5, + 6.0, + 6.5, + 7.0, + 7.0, + 7.0, + 7.0, + 7.0, + 7.5, + 8.0, + 8.5, + 9.0, + 9.0, + 9.0, + 9.0, + 7.0, + 7.5, + 8.0, + 8.5, + 9.0, + 9.0, + 9.0, + 9.0 + ], + "dims": [2, 1, 4, 8], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - 2D Bilinear", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [2.0, 4.0], "type": "floats" }, + { "name": "mode", "data": "linear", "type": "string" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0], + "dims": [2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [ + 1.0, + 1.5, + 2.0, + 2.5, + 3.0, + 3.0, + 3.0, + 3.0, + 2.0, + 2.5, + 3.0, + 3.5, + 4.0, + 4.0, + 4.0, + 4.0, + 3.0, + 3.5, + 4.0, + 4.5, + 5.0, + 5.0, + 5.0, + 5.0, + 3.0, + 3.5, + 4.0, + 4.5, + 5.0, + 5.0, + 5.0, + 5.0 + ], + "dims": [4, 8], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - 4D Bilinear ScalesNoOp", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [1.0, 1.0, 1.0, 1.0], "type": "floats" }, + { "name": "mode", "data": "linear", "type": "string" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [2, 1, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 3.0, 3.0, 5.0, 3.0, 5.0, 7.0, 9.0], + "dims": [2, 1, 2, 2], + "type": "float32" + } + ] + } + ] + }, + { + "name": "Upsample - 1D Nearest", + "operator": "Upsample", + "attributes": [ + { "name": "scales", "data": [2.0], "type": "floats" }, + { "name": "mode", "data": "nearest", "type": "string" } + ], + "cases": [ + { + "name": "X", + "inputs": [ + { + "data": [1.0, 2.0, 3.0, 4.0, 5.0], + "dims": [5], + "type": "float32" + } + ], + "outputs": [ + { + "data": [1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0], + "dims": [10], + "type": "float32" + } + ] + } + ] + } +] diff --git a/js/web/test/data/ops/xor.jsonc b/js/web/test/data/ops/xor.jsonc new file mode 100644 index 0000000000..c67bd2d81c --- /dev/null +++ b/js/web/test/data/ops/xor.jsonc @@ -0,0 +1,119 @@ +[ + { + "name": "Xor with no attributes", + "operator": "Xor", + "attributes": [], + "cases": [ + { + "name": "T[0] T[2,4]", + "inputs": [ + { + "data": [true], + "dims": [1], + "type": "bool" + }, + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false, true, false, true, false, true, false, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "T[1] T[2,4]", + "inputs": [ + { + "data": [true, false, false, true], + "dims": [4], + "type": "bool" + }, + { + "data": [true, false, true, false, true, false, true, false], + "dims": [2, 4], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false, false, true, true, false, false, true, true], + "dims": [2, 4], + "type": "bool" + } + ] + }, + { + "name": "Scalar T[2,2]", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + }, + { + "data": [false, false, false, false], + "dims": [2, 2], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "T[2,2] Scalar", + "inputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + }, + { + "data": [false], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [true, true, true, true], + "dims": [2, 2], + "type": "bool" + } + ] + }, + { + "name": "Scalar Scalar", + "inputs": [ + { + "data": [true], + "dims": [], + "type": "bool" + }, + { + "data": [true], + "dims": [], + "type": "bool" + } + ], + "outputs": [ + { + "data": [false], + "dims": [], + "type": "bool" + } + ] + } + ] + } +] diff --git a/js/web/test/test-main.ts b/js/web/test/test-main.ts new file mode 100644 index 0000000000..28e85d313f --- /dev/null +++ b/js/web/test/test-main.ts @@ -0,0 +1,113 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import '../lib/index'; // this need to be the first line + +import * as ort from 'onnxruntime-common'; +import * as platform from 'platform'; + +import {Logger} from '../lib/onnxjs/instrument'; + +import {Test} from './test-types'; + +const ONNX_JS_TEST_CONFIG = (ort.env as any).ORT_WEB_TEST_DATA as Test.Config; + +// Set logging configuration +for (const logConfig of ONNX_JS_TEST_CONFIG.log) { + Logger.set(logConfig.category, logConfig.config); +} + +import {ModelTestContext, OpTestContext, runModelTestSet, runOpTest} from './test-runner'; +import {readJsonFile} from './test-shared'; + +// Unit test +if (ONNX_JS_TEST_CONFIG.unittest) { + // tslint:disable-next-line:no-require-imports + require('./unittests'); +} + +// Set file cache +if (ONNX_JS_TEST_CONFIG.fileCacheUrls) { + before('prepare file cache', async () => { + const allJsonCache = await Promise.all(ONNX_JS_TEST_CONFIG.fileCacheUrls!.map(readJsonFile)) as Test.FileCache[]; + for (const cache of allJsonCache) { + ModelTestContext.setCache(cache); + } + }); +} + +function shouldSkipTest(test: Test.ModelTest|Test.OperatorTest) { + if (!test.cases || test.cases.length === 0) { + return true; + } + if (!test.condition) { + return false; + } + + if (!platform.description) { + throw new Error('failed to check current platform'); + } + const regex = new RegExp(test.condition); + return !regex.test(platform.description); +} + +// ModelTests +for (const group of ONNX_JS_TEST_CONFIG.model) { + describe(`#ModelTest# - ${group.name}`, () => { + for (const test of group.tests) { + const describeTest = shouldSkipTest(test) ? describe.skip : describe; + describeTest(`[${test.backend}] ${test.name}`, () => { + let context: ModelTestContext; + + before('prepare session', async () => { + context = await ModelTestContext.create(test, ONNX_JS_TEST_CONFIG.profile); + }); + + after('release session', () => { + if (context) { + context.release(); + } + }); + + for (const testCase of test.cases) { + it(testCase.name, async () => { + await runModelTestSet(context, testCase); + }); + } + }); + } + }); +} + +// OpTests +for (const group of ONNX_JS_TEST_CONFIG.op) { + describe(`#OpTest# - ${group.name}`, () => { + for (const test of group.tests) { + const describeTest = shouldSkipTest(test) ? describe.skip : describe; + describeTest(`[${test.backend!}]${test.operator} - ${test.name}`, () => { + let context: OpTestContext; + + before('Initialize Context', async () => { + context = new OpTestContext(test); + await context.init(); + if (ONNX_JS_TEST_CONFIG.profile) { + OpTestContext.profiler.start(); + } + }); + + after('Dispose Context', () => { + if (ONNX_JS_TEST_CONFIG.profile) { + OpTestContext.profiler.stop(); + } + context.dispose(); + }); + + for (const testCase of test.cases) { + it(testCase.name, async () => { + await runOpTest(testCase, context); + }); + } + }); + } + }); +} diff --git a/js/web/test/test-runner.ts b/js/web/test/test-runner.ts new file mode 100644 index 0000000000..83289e922e --- /dev/null +++ b/js/web/test/test-runner.ts @@ -0,0 +1,547 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {expect} from 'chai'; +import {readFile} from 'fs'; +import {onnx as onnxProto} from 'onnx-proto'; +import * as ort from 'onnxruntime-common'; +import {extname} from 'path'; +import {inspect, promisify} from 'util'; +import {flags as webglFlags} from '../lib/backend-onnxjs'; + +import {Attribute} from '../lib/onnxjs/attribute'; +import {InferenceHandler, resolveBackend, SessionHandler} from '../lib/onnxjs/backend'; +import {createWebGLContext} from '../lib/onnxjs/backends/webgl/webgl-context-factory'; +import {Logger, Profiler} from '../lib/onnxjs/instrument'; +import {Operator} from '../lib/onnxjs/operators'; +import {Tensor} from '../lib/onnxjs/tensor'; + +import {base64toBuffer, createMockGraph} from './test-shared'; +import {Test} from './test-types'; + +// the threshold that used to compare 2 float numbers. See above for TensorResultValidator.floatEqual(). +const CPU_THRESHOLD_ABSOLUTE_ERROR = 1.0e-4; +const CPU_THRESHOLD_RELATIVE_ERROR = 1.000001; +const WEBGL_THRESHOLD_ABSOLUTE_ERROR = 1.0e-3; +const WEBGL_THRESHOLD_RELATIVE_ERROR = 1.00001; +const WEBGL_HALF_FLOAT_THRESHOLD_ABSOLUTE_ERROR = 0.1; +const WEBGL_HALF_FLOAT_THRESHOLD_RELATIVE_ERROR = 1.02; +const WASM_THRESHOLD_ABSOLUTE_ERROR = 1.0e-4; +const WASM_THRESHOLD_RELATIVE_ERROR = 1.000001; +const ONNXRUNTIME_THRESHOLD_ABSOLUTE_ERROR = 1.0e-3; +const ONNXRUNTIME_THRESHOLD_RELATIVE_ERROR = 1.00001; + +/** + * returns a number to represent the current timestamp in a resolution as high as possible. + */ +const now = (typeof performance !== 'undefined' && performance.now) ? () => performance.now() : Date.now; + +function toInternalTensor(tensor: ort.Tensor): Tensor { + return new Tensor( + tensor.dims, tensor.type as Tensor.DataType, undefined, undefined, tensor.data as Tensor.NumberType); +} +function fromInternalTensor(tensor: Tensor): ort.Tensor { + return new ort.Tensor(tensor.type, tensor.data as ort.Tensor.DataType, tensor.dims); +} + +async function loadFile(uri: string): Promise { + if (typeof fetch === 'undefined') { + // node + return promisify(readFile)(uri); + } else { + // browser + const response = await fetch(uri); + return response.arrayBuffer(); + } +} + +async function loadTensorProto(uriOrData: string|Uint8Array): Promise { + const buf = (typeof uriOrData === 'string') ? await loadFile(uriOrData) : uriOrData; + const tensorProto = onnxProto.TensorProto.decode(Buffer.from(buf)); + const tensor = Tensor.fromProto(tensorProto); + // add property 'name' to the tensor object. + const namedTensor = fromInternalTensor(tensor) as unknown as Test.NamedTensor; + namedTensor.name = tensorProto.name; + return namedTensor; +} + +async function loadMlProto(_uriOrData: string|Uint8Array): Promise { + return Promise.reject('not supported'); +} + +async function loadTensors(testCase: Test.ModelTestCase, fileCache?: FileCacheBuffer) { + const inputs: Test.NamedTensor[] = []; + const outputs: Test.NamedTensor[] = []; + let dataFileType: 'none'|'pb'|'npy' = 'none'; + + for (const dataFile of testCase.dataFiles) { + const ext = extname(dataFile); + if (ext.toLowerCase() === '.pb' || ext.toLowerCase() === '.tpb') { + if (dataFileType === 'none') { + dataFileType = 'pb'; + } + if (dataFileType !== 'pb') { + throw new Error(`cannot load data from test case "${testCase.name}", multiple types of files detected`); + } + + const uriOrData = fileCache && fileCache[dataFile] ? fileCache[dataFile] : dataFile; + const t = ext.toLowerCase() === '.pb' ? await loadTensorProto(uriOrData) : // onnx.TensorProto + await loadMlProto(uriOrData); // (TBD) + + const dataFileBasename = dataFile.split(/[/\\]/).pop()!; + + if (dataFileBasename.indexOf('input') !== -1) { + inputs.push(t); + } else if (dataFileBasename.indexOf('output') !== -1) { + outputs.push(t); + } + } else { + throw new Error(`${ext} file is not supported now`); + } + } + + testCase.inputs = inputs; + testCase.outputs = outputs; +} + +async function initializeSession( + modelFilePath: string, backendHint: string, profile: boolean, + fileCache?: FileCacheBuffer): Promise { + const preloadModelData: Uint8Array|undefined = + fileCache && fileCache[modelFilePath] ? fileCache[modelFilePath] : undefined; + Logger.verbose( + 'TestRunner', + `Start to load model from file: ${modelFilePath}${ + preloadModelData ? ` [preloaded(${preloadModelData.byteLength})]` : ''}`); + + const profilerConfig = profile ? {maxNumberEvents: 65536} : undefined; + const sessionConfig = {executionProviders: [backendHint], profiler: profilerConfig}; + let session: ort.InferenceSession; + + try { + if (preloadModelData) { + session = await ort.InferenceSession.create(preloadModelData, sessionConfig); + } else { + session = await ort.InferenceSession.create(modelFilePath, sessionConfig); + } + } catch (e) { + Logger.error('TestRunner', `Failed to load model from file: ${modelFilePath}. Error: ${inspect(e)}`); + throw e; + } + + if (profile) { + session.startProfiling(); + } + + Logger.verbose('TestRunner', `Finished loading model from file: ${modelFilePath}`); + + return session; +} + +type FileCacheBuffer = { + [filePath: string]: Uint8Array; +}; +/** + * a ModelTestContext object contains all states in a ModelTest + */ +export class ModelTestContext { + private constructor( + readonly session: ort.InferenceSession, + readonly backend: string, + readonly perfData: ModelTestContext.ModelTestPerfData, + private readonly profile: boolean, + ) {} + + /** + * dump the current performance data + */ + private logPerfData() { + const data = this.perfData; + Logger.verbose('TestRunner.Perf', '***Perf Data Start'); + Logger.verbose('TestRunner.Perf', ` * Init : ${data.init}`); + Logger.verbose('TestRunner.Perf', ` * Running times : ${data.count}`); + Logger.verbose('TestRunner.Perf', ` * FirstRun : ${data.firstRun.toFixed(2)}`); + const runs = data.runs; + if (runs.length > 0) { + Logger.verbose('TestRunner.Perf', ` * Runs : ${runs.map(r => r.toFixed(2)).join(', ')}`); + + if (runs.length > 1) { + const avg = runs.reduce((prev, current) => prev + current) / runs.length; + Logger.verbose('TestRunner.Perf', ` * Runs Avg : ${avg.toFixed(2)}`); + const variance = runs.reduce((prev, current) => prev + (current - avg) * (current - avg)); + const sd = Math.sqrt(variance / (runs.length - 1)); + Logger.verbose('TestRunner.Perf', ` * Runs SD : ${sd.toFixed(2)}`); + } + } + Logger.verbose('TestRunner.Perf', '***Perf Data End'); + } + + release(): void { + if (this.profile) { + this.session.endProfiling(); + } + this.logPerfData(); + } + + /** + * create a ModelTestContext object that used in every test cases in the given ModelTest. + */ + static async create(modelTest: Test.ModelTest, profile: boolean): Promise { + if (this.initializing) { + throw new Error('cannot create a ModelTestContext object when the previous creation is not done'); + } + + try { + this.initializing = true; + + const initStart = now(); + const session = await initializeSession(modelTest.modelUrl, modelTest.backend!, profile, this.cache); + const initEnd = now(); + + for (const testCase of modelTest.cases) { + await loadTensors(testCase, this.cache); + } + + return new ModelTestContext( + session, + modelTest.backend!, + {init: initEnd - initStart, firstRun: -1, runs: [], count: 0}, + profile, + ); + } finally { + this.initializing = false; + } + } + + /** + * set the global file cache for looking up model and tensor protobuf files. + */ + static setCache(cache: Test.FileCache): void { + const keys = Object.keys(cache); + Logger.info('TestRunner', `Setting up file cache... Entry count: ${keys.length}.`); + for (const key of keys) { + this.cache[key] = base64toBuffer(cache[key]); + } + } + + private static initializing = false; + private static cache: FileCacheBuffer = {}; +} + +export declare namespace ModelTestContext { + export interface ModelTestPerfData { + init: number; + firstRun: number; + runs: number[]; + count: number; + } +} + +export class TensorResultValidator { + private readonly absoluteThreshold: number; + private readonly relativeThreshold: number; + private readonly maxFloatValue: number = 3.4028234663852886e+38; + + private static isHalfFloat: boolean|undefined; + + constructor(backend: string) { + if (backend === 'cpu') { + this.absoluteThreshold = CPU_THRESHOLD_ABSOLUTE_ERROR; + this.relativeThreshold = CPU_THRESHOLD_RELATIVE_ERROR; + } else if (backend === 'webgl') { + if (TensorResultValidator.isHalfFloat === undefined) { + TensorResultValidator.isHalfFloat = !createWebGLContext(webglFlags.contextId).isRenderFloat32Supported; + } + if (TensorResultValidator.isHalfFloat) { + this.maxFloatValue = 65504; + this.absoluteThreshold = WEBGL_HALF_FLOAT_THRESHOLD_ABSOLUTE_ERROR; + this.relativeThreshold = WEBGL_HALF_FLOAT_THRESHOLD_RELATIVE_ERROR; + } else { + this.absoluteThreshold = WEBGL_THRESHOLD_ABSOLUTE_ERROR; + this.relativeThreshold = WEBGL_THRESHOLD_RELATIVE_ERROR; + } + } else if (backend === 'wasm') { + this.absoluteThreshold = WASM_THRESHOLD_ABSOLUTE_ERROR; + this.relativeThreshold = WASM_THRESHOLD_RELATIVE_ERROR; + } else if (backend === 'onnxruntime') { + this.absoluteThreshold = ONNXRUNTIME_THRESHOLD_ABSOLUTE_ERROR; + this.relativeThreshold = ONNXRUNTIME_THRESHOLD_RELATIVE_ERROR; + } else { + throw new Error(`backend not supported: ${backend}`); + } + } + + checkTensorResult(actual: Tensor[], expected: Tensor[]): void { + // check output size + expect(actual.length, 'size of output tensors').to.equal(expected.length); + + // compare output one-by-one + for (let i = 0; i < actual.length; ++i) { + const match = this.areEqual(actual[i], expected[i]); + if (!match) { + Logger.error( + 'TestRunner', + `Tensor mismatch: \nACTUAL: type=${actual[i].type}; dims=[${actual[i].dims}]; data=[${ + actual[i].data}]\nEXPECT: type=${expected[i].type}; dims=[${expected[i].dims}]; data=[${ + expected[i].data}]`); + } + expect(match, 'tensor data should match').to.be.true; + } + } + + checkApiTensorResult(actual: ort.Tensor[], expected: ort.Tensor[]): void { + this.checkTensorResult(actual.map(toInternalTensor), expected.map(toInternalTensor)); + } + + checkNamedTensorResult(actual: Record, expected: Test.NamedTensor[]): void { + // check output size + expect(Object.getOwnPropertyNames(actual).length, 'size of output tensors').to.equal(expected.length); + + // check output mapping + for (const expectedOneOutput of expected) { + expect(actual, 'keys of output tensors').to.contain.keys(expectedOneOutput.name); + } + + this.checkApiTensorResult(expected.map(i => actual[i.name]!), expected); + } + + // This function check whether 2 tensors should be considered as 'match' or not + areEqual(actual: Tensor, expected: Tensor): boolean { + if (!actual || !expected) { + return false; + } + if (!actual.dims || !expected.dims) { + return false; + } + + const actualDims = actual.dims; + const actualType = actual.type; + const expectedDims = expected.dims; + const expectedType = expected.type; + + if (actualType !== expectedType) { + return false; + } + if (actualDims.length !== expectedDims.length) { + return false; + } + + for (let i = 0; i < actualDims.length; i++) { + if (actualDims[i] !== expectedDims[i]) { + return false; + } + } + + switch (actualType) { + case 'string': + return this.strictEqual(actual.stringData, expected.stringData); + + case 'float32': + case 'float64': + return this.floatEqual( + actual.numberData as number[] | Float32Array | Float64Array, + expected.numberData as number[] | Float32Array | Float64Array); + + case 'uint8': + case 'int8': + case 'uint16': + case 'int16': + case 'int32': + case 'uint32': + case 'bool': + return this.integerEqual( + actual.numberData as number[] | Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | + Int32Array, + expected.numberData as number[] | Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | + Int32Array); + + default: + throw new Error('type not implemented or not supported'); + } + } + strictEqual(actual: T, expected: T): boolean { + try { + expect(actual).to.deep.equal(expected); + return true; + } catch { + return false; + } + } + floatEqual(actual: number[]|Float32Array|Float64Array, expected: number[]|Float32Array|Float64Array): boolean { + if (actual.length !== expected.length) { + return false; + } + + for (let i = actual.length - 1; i >= 0; i--) { + const a = actual[i], b = Math.max(Math.min(expected[i], this.maxFloatValue), -this.maxFloatValue); + + // check for NaN + // + if (Number.isNaN(a) && Number.isNaN(b)) { + continue; // 2 numbers are NaN, treat as equal + } + if (Number.isNaN(a) || Number.isNaN(b)) { + Logger.error('Validator', `a or b isNan -- index:${i}: actual=${actual[i]},expected=${expected[i]}`); + return false; // one is NaN and the other is not + } + + // Comparing 2 float numbers: (Suppose a >= b) + // + // if ( a - b < ABSOLUTE_ERROR || 1.0 < a / b < RELATIVE_ERROR) + // test pass + // else + // test fail + // endif + // + if (Math.abs(actual[i] - expected[i]) < this.absoluteThreshold) { + continue; // absolute error check pass + } + if (a !== 0 && b !== 0 && a / b < this.relativeThreshold && b / a < this.relativeThreshold) { + continue; // relative error check pass + } + + // if code goes here, it means both (abs/rel) check failed. + Logger.error('Validator', `abs/rel check failed-- index:${i}: actual=${actual[i]},expected=${expected[i]}`); + return false; + } + + return true; + } + integerEqual( + actual: number[]|Uint8Array|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array, + expected: number[]|Uint8Array|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array): boolean { + if (actual.length !== expected.length) { + return false; + } + + for (let i = actual.length - 1; i >= 0; i--) { + if (actual[i] !== expected[i]) { + return false; + } + } + + return true; + } +} + +/** + * run a single model test case. the inputs/outputs tensors should already been prepared. + */ +export async function runModelTestSet(context: ModelTestContext, testCase: Test.ModelTestCase): Promise { + Logger.verbose('TestRunner', `Start to run test data from folder: ${testCase.name}`); + const validator = new TensorResultValidator(context.backend); + try { + const feeds: Record = {}; + testCase.inputs!.forEach((tensor, i) => feeds[context.session.inputNames[i]] = tensor); + const start = now(); + const outputs = await context.session.run(feeds); + const end = now(); + if (context.perfData.count === 0) { + context.perfData.firstRun = end - start; + } else { + context.perfData.runs.push(end - start); + } + context.perfData.count++; + + Logger.verbose('TestRunner', `Finished running model from file: ${testCase.name}`); + Logger.verbose('TestRunner', ' Stats:'); + Logger.verbose('TestRunner', ` Input(s): ${testCase.inputs!.length}`); + testCase.inputs!.forEach(i => { + Logger.verbose('TestRunner', ` '${i.name}': ${i.type}[${i.dims.join(',')}]`); + }); + Logger.verbose('TestRunner', ` Output(s): ${outputs.size}`); + for (const name in outputs) { + if (Object.hasOwnProperty.call(outputs, name)) { + const tensor = outputs[name]; + Logger.verbose('TestRunner', ` '${name}': ${tensor.type}[${tensor.dims.join(',')}]`); + } + } + + validator.checkNamedTensorResult(outputs, testCase.outputs!); + + Logger.verbose('TestRunner', ' Result: PASS'); + } catch (e) { + Logger.error('TestRunner', ' Result: FAILED'); + Logger.error('TestRunner', `Failed to run test data from folder: ${testCase.name}. Error: ${inspect(e)}`); + throw e; + } +} + +function initializeOperator( + sessionHandler: SessionHandler, opType: string, attributeValues: readonly Test.AttributeValue[], + opsetImports: readonly Test.OperatorTestOpsetImport[]): Operator { + const attributes = new Attribute(undefined); + attributeValues.forEach(value => attributes.set(value.name, value.type, value.data)); + const graph = createMockGraph(opType, attributes); + return sessionHandler.resolve(graph.getNodes()[0], opsetImports, graph); +} + +/** + * a OpTestContext object contains all states in a OpTest + */ +export class OpTestContext { + static profiler = Profiler.create(); + + readonly backendHint: string; + sessionHandler: SessionHandler; + inferenceHandler: InferenceHandler; + + constructor(protected opTest: Test.OperatorTest) { + this.backendHint = opTest.backend === 'webgl' ? 'webgl' : 'cpu'; + } + createOperator(): Operator { + return initializeOperator( + this.sessionHandler, this.opTest.operator, this.opTest.attributes, + this.opTest.opsets ?? [{domain: '', version: 7}]); + } + + dispose(): void { + this.inferenceHandler.dispose(); + this.sessionHandler.dispose(); + } + + async init(): Promise { + const backend = await resolveBackend(this.backendHint); + this.sessionHandler = backend.createSessionHandler({profiler: OpTestContext.profiler}); + this.inferenceHandler = this.sessionHandler.createInferenceHandler(); + } +} + + +function createTensor(dims: number[], type: Tensor.DataType, data: number[]): Tensor { + const tensor = new Tensor(dims, type); + for (let i = 0; i < data.length; ++i) { + tensor.data[i] = data[i]; + } + return tensor; +} + +async function runOpTestcase( + inferenceHandler: InferenceHandler, operator: Operator, testcase: Test.OperatorTestCase, + validator: TensorResultValidator): Promise { + testcase.inputs.forEach((input, i) => { + Logger.verbose('TestOpRunner', ` Input '${i}': ${input.type}[${input.dims.join(',')}]`); + }); + const inputTensors = + testcase.inputs.map(input => createTensor(input.dims, input.type as Tensor.DataType, input.data)); + + let results = operator.run(inferenceHandler, inputTensors); + if ('then' in results) { + results = await results; + } + + results.forEach((output, i) => { + Logger.verbose('TestOpRunner', ` Result'${i}': ${output.type}[${output.dims.join(',')}]`); + }); + const expectedTensors = + testcase.outputs.map(output => createTensor(output.dims, output.type as Tensor.DataType, output.data)); + validator.checkTensorResult(results, expectedTensors); +} + +/** + * run a single operator test case. + */ +export async function runOpTest(testcase: Test.OperatorTestCase, context: OpTestContext): Promise { + await runOpTestcase( + context.inferenceHandler, context.createOperator(), testcase, new TensorResultValidator(context.backendHint)); +} diff --git a/js/web/test/test-shared.ts b/js/web/test/test-shared.ts new file mode 100644 index 0000000000..f2ea1892aa --- /dev/null +++ b/js/web/test/test-shared.ts @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import * as fs from 'fs'; +import {promisify} from 'util'; + +import {Attribute} from '../lib/onnxjs/attribute'; +import {Graph} from '../lib/onnxjs/graph'; + +export function base64toBuffer(data: string): Uint8Array { + return Buffer.from(data, 'base64'); +} + +export function bufferToBase64(buffer: Uint8Array): string { + return Buffer.from(buffer).toString('base64'); +} + +async function readFile(file: string) { + if (typeof fetch === 'undefined') { + // node + return promisify(fs.readFile)(file); + } else { + // browser + const response = await fetch(file); + const buffer = await response.arrayBuffer(); + return Buffer.from(buffer); + } +} + +export async function readJsonFile(file: string): Promise { + const content = await readFile(file); + return JSON.parse(content.toString()); +} + +/** + * create a single-node graph for unit test purpose + */ +export function createMockGraph(opType: string, attributes: Attribute): Graph { + const node: Graph.Node = {name: '', opType, inputs: [], outputs: [], attributes}; + return { + getInputIndices: () => [], + getInputNames: () => [], + getOutputIndices: () => [], + getOutputNames: () => [], + getNodes: () => [node], + getValues: () => [] + }; +} diff --git a/js/web/test/test-suite-whitelist.jsonc b/js/web/test/test-suite-whitelist.jsonc new file mode 100644 index 0000000000..052d75ac2f --- /dev/null +++ b/js/web/test/test-suite-whitelist.jsonc @@ -0,0 +1,362 @@ +{ + "webgl": { + "onnx": ["resnet50", "squeezenet", "tiny_yolov2", "emotion_ferplus"], + "node": [ + "test_abs", + "test_acos_example", + "test_acos", + "test_add_bcast", + "test_add", + "test_and_bcast3v1d", + "test_and_bcast3v2d", + "test_and_bcast4v2d", + "test_and_bcast4v3d", + "test_and_bcast4v4d", + "test_and2d", + "test_and3d", + "test_and4d", + "test_asin_example", + "test_asin", + "test_atan_example", + "test_atan", + "test_averagepool_1d_default", + "test_averagepool_2d_default", + "test_averagepool_2d_pads", + "test_averagepool_2d_precomputed_pads", + "test_averagepool_2d_precomputed_same_upper", + "test_averagepool_2d_precomputed_strides", + "test_averagepool_2d_same_upper", + "test_averagepool_2d_same_lower", + "test_averagepool_2d_strides", + "test_averagepool_3d_default", + "test_basic_conv_with_padding", + "test_basic_conv_without_padding", + "test_batchnorm_epsilon", + "test_batchnorm_example", + "v{7,8,9,10}/test_clip_splitbounds", + "v{7,8,9,10}/test_clip_outbounds", + "v{7,8,9,10}/test_clip_inbounds", + "v{7,8,9,10}/test_clip_example", + "v{7,8,9,10}/test_clip_default_min", + "v{7,8,9,10}/test_clip_default_max", + "v{7,8,9,10}/test_clip_default_inbounds", + "v{7,8,9,10}/test_clip", + "test_concat_1d_axis_0", + "test_concat_2d_axis_0", + "test_concat_2d_axis_1", + "test_concat_3d_axis_0", + "test_concat_3d_axis_1", + "test_concat_3d_axis_2", + "test_conv_with_strides_and_asymmetric_padding", + "test_conv_with_strides_no_padding", + "test_conv_with_strides_padding", + "test_constant", + "test_cos_example", + "test_cos", + "test_div_bcast", + "test_div_example", + "test_div", + "test_dropout_default", + "test_dropout_random", + "test_elu_example", + "test_elu", + "test_elu_default", + "test_flatten_axis0", + "test_flatten_axis1", + "test_flatten_axis2", + "test_flatten_axis3", + "test_flatten_default_axis", + "test_gather_0", + "test_gather_1", + "test_gemm_nobroadcast", + "test_gemm_broadcast", + "test_globalaveragepool_precomputed", + "test_globalaveragepool", + "test_globalmaxpool_precomputed", + "test_globalmaxpool", + "test_greater_bcast", + "test_greater", + "test_instancenorm_epsilon", + "test_instancenorm_example", + "test_less_bcast", + "test_less", + "test_equal_bcast", + "test_equal", + "test_identity", + "test_leakyrelu_default", + "test_leakyrelu_example", + "test_leakyrelu", + // "test_lrn_default", <-- failing due to low precison. If absolute CPU error threshold is increased from 1e-4 to 1e-2 (100x increase), it passes the test. + // "test_lrn", <-- failing due to low precison. If absolute CPU error threshold is increased from 1e-4 to 1e-3 (10x increase), it passes the test. + "test_matmul_2d", + "test_matmul_3d", + "test_matmul_4d", + "test_maxpool_1d_default", + "test_maxpool_2d_default", + "test_maxpool_2d_pads", + "test_maxpool_2d_precomputed_pads", + "test_maxpool_2d_precomputed_same_upper", + "test_maxpool_2d_precomputed_strides", + "test_maxpool_2d_same_lower", + "test_maxpool_2d_same_upper", + "test_maxpool_2d_strides", + "test_maxpool_3d_default", + "test_mul_bcast", + "test_mul_example", + "test_mul", + "test_neg", + "test_neg_example", + "test_not_2d", + "test_not_3d", + "test_not_4d", + "test_or_bcast3v1d", + "test_or_bcast3v2d", + "test_or_bcast4v2d", + "test_or_bcast4v3d", + "test_or_bcast4v4d", + "test_prelu_broadcast", + "test_prelu_example", + "test_relu", + "test_reshape_extended_dims", + "test_reshape_negative_dim", + "test_reshape_one_dim", + "test_reshape_reduced_dims", + "test_reshape_reordered_dims", + "test_sigmoid", + "test_sigmoid_example", + "test_sin_example", + "test_sin", + "test_softmax_axis_0", + "test_softmax_axis_1", + "test_softmax_axis_2", + "test_softmax_default_axis", + "test_softmax_example", + { + "name": "test_softmax_large_number", + "condition": "^((?!iOS).)*$" // does NOT contains 'iOS': large number cannot be handled in a half_float environment + }, + "test_sub_bcast", + "test_sub_example", + "test_sub", + "test_sum_example", + "test_sum_one_input", + "test_sum_two_inputs", + "test_reduce_log_sum_asc_axes", + "test_reduce_log_sum_default", + "test_reduce_log_sum_desc_axes", + "test_reduce_max_default_axes_keepdim_example", + "test_reduce_max_default_axes_keepdims_random", + "test_reduce_max_do_not_keepdims_example", + "test_reduce_max_do_not_keepdims_random", + "test_reduce_max_keepdims_example", + "test_reduce_max_keepdims_random", + "test_reduce_mean_default_axes_keepdims_example", + "test_reduce_mean_default_axes_keepdims_random", + "test_reduce_mean_do_not_keepdims_example", + "test_reduce_mean_do_not_keepdims_random", + "test_reduce_mean_keepdims_example", + "test_reduce_mean_keepdims_random", + "test_reduce_min_default_axes_keepdims_example", + "test_reduce_min_default_axes_keepdims_random", + "test_reduce_min_do_not_keepdims_example", + "test_reduce_min_do_not_keepdims_random", + "test_reduce_min_keepdims_example", + "test_reduce_min_keepdims_random", + { + "name": "test_reduce_prod_default_axes_keepdims_example", + "condition": "^((?!iOS).)*$" // does NOT contains 'iOS': large number cannot be handled in a half_float environment + }, + "test_reduce_prod_default_axes_keepdims_random", + "test_reduce_prod_do_not_keepdims_example", + "test_reduce_prod_do_not_keepdims_random", + "test_reduce_prod_keepdims_example", + "test_reduce_prod_keepdims_random", + "test_reduce_sum_default_axes_keepdims_example", + "test_reduce_sum_default_axes_keepdims_random", + "test_reduce_sum_do_not_keepdims_example", + "test_reduce_sum_do_not_keepdims_random", + "test_reduce_sum_keepdims_example", + "test_reduce_sum_keepdims_random", + "test_reduce_sum_square_default_axes_keepdims_example", + "test_reduce_sum_square_default_axes_keepdims_random", + "test_reduce_sum_square_do_not_keepdims_example", + "test_reduce_sum_square_do_not_keepdims_random", + "test_reduce_sum_square_keepdims_example", + "test_reduce_sum_square_keepdims_random", + "test_split_variable_parts_default_axis", + "test_split_variable_parts_1d", + "test_split_variable_parts_2d", + "test_split_equal_parts_default_axis", + "test_split_equal_parts_1d", + "test_split_equal_parts_2d", + "v{7,8,9}/test_slice", + "v{7,8,9}/test_slice_default_axes", + "v{7,8,9}/test_slice_end_out_of_bounds", + "v{7,8,9}/test_slice_neg", + // "test_slice_start_out_of_bounds", // tensor shape of 0 + "test_squeeze", + "test_tan_example", + "test_tan", + "test_tanh_example", + "test_tanh", + "test_tile", + "test_tile_precomputed", + "test_transpose_all_permutations_0", + "test_transpose_all_permutations_1", + "test_transpose_all_permutations_2", + "test_transpose_all_permutations_3", + "test_transpose_all_permutations_4", + "test_transpose_all_permutations_5", + "test_transpose_default", + "test_unsqueeze", + "test_xor_bcast3v1d", + "test_xor_bcast3v2d", + "test_xor_bcast4v2d", + "test_xor_bcast4v3d", + "test_xor_bcast4v4d", + "test_xor2d", + "test_xor3d", + "test_xor4d" + ], + "ops": [ + "abs.jsonc", + "acos.jsonc", + "add.jsonc", + "and.jsonc", + "asin.jsonc", + "ceil.jsonc", + "conv.jsonc", + "cos.jsonc", + "div.jsonc", + "equal.jsonc", + "exp.jsonc", + "floor.jsonc", + "global-average-pool.jsonc", + "gemm.jsonc", + "greater.jsonc", + //"identity.jsonc", + "image-scaler.jsonc", + "less.jsonc", + "log.jsonc", + "matmul.jsonc", + "mul.jsonc", + "neg.jsonc", + "not.jsonc", + "or.jsonc", + "leaky-relu.jsonc", + "reduce-min.jsonc", + "relu.jsonc", + "pad.jsonc", + "pad-big.jsonc", + "pow.jsonc", + "pow-big-number.jsonc", + "reshape.jsonc", + "softmax.jsonc", + "sin.jsonc", + "split.jsonc", + "sqrt.jsonc", + "sub.jsonc", + "tan.jsonc", + "transpose.jsonc", + "xor.jsonc" + ] + }, + "wasm": { + "onnx": ["resnet50", "squeezenet", "tiny_yolov2", "emotion_ferplus"], + "node": [ + // Check in node tests that have native Wasm implementations + // (i.e.) not tests that rely on the fallback cpu implementations + // Use the 'cpu' level of node tests to test those implementations + "test_add_bcast", + "test_add", + "test_sub_bcast", + "test_sub_example", + "test_sub", + "test_mul_bcast", + "test_mul_example", + "test_mul", + "test_div_bcast", + "test_div_example", + "test_div", + "test_xor_bcast3v1d", + "test_xor_bcast3v2d", + "test_xor_bcast4v2d", + "test_xor_bcast4v3d", + "test_xor_bcast4v4d", + "test_xor2d", + "test_xor3d", + "test_xor4d", + "test_or_bcast3v1d", + "test_or_bcast3v2d", + "test_or_bcast4v2d", + "test_or_bcast4v3d", + "test_or_bcast4v4d", + "test_and_bcast3v1d", + "test_and_bcast3v2d", + "test_and_bcast4v2d", + "test_and_bcast4v3d", + "test_and_bcast4v4d", + "test_and2d", + "test_and3d", + "test_and4d", + "test_prelu_broadcast", + "test_prelu_example", + "test_basic_conv_with_padding", + "test_basic_conv_without_padding", + "test_batchnorm_epsilon", + "test_batchnorm_example", + "v{7,8,9,10}/test_clip_splitbounds", + "v{7,8,9,10}/test_clip_outbounds", + "v{7,8,9,10}/test_clip_inbounds", + "v{7,8,9,10}/test_clip_example", + "v{7,8,9,10}/test_clip_default_min", + "v{7,8,9,10}/test_clip_default_max", + "v{7,8,9,10}/test_clip_default_inbounds", + "v{7,8,9,10}/test_clip", + "test_conv_with_strides_and_asymmetric_padding", + "test_conv_with_strides_no_padding", + "test_conv_with_strides_padding", + "test_gemm_nobroadcast", + "test_gemm_broadcast", + "test_matmul_2d", + "test_matmul_3d", + "test_matmul_4d", + "test_softmax_axis_0", + "test_softmax_axis_1", + "test_softmax_axis_2", + "test_softmax_default_axis", + "test_softmax_example", + "test_softmax_large_number", + "test_sum_example", + "test_sum_one_input", + "test_sum_two_inputs", + "test_averagepool_1d_default", + "test_averagepool_2d_default", + "test_averagepool_2d_pads", + "test_averagepool_2d_precomputed_pads", + "test_averagepool_2d_precomputed_same_upper", + "test_averagepool_2d_precomputed_strides", + "test_averagepool_2d_same_upper", + "test_averagepool_2d_same_lower", + "test_averagepool_2d_strides", + "test_averagepool_3d_default", + "test_maxpool_1d_default", + "test_maxpool_2d_default", + "test_maxpool_2d_pads", + "test_maxpool_2d_precomputed_pads", + "test_maxpool_2d_precomputed_same_upper", + "test_maxpool_2d_precomputed_strides", + "test_maxpool_2d_same_lower", + "test_maxpool_2d_same_upper", + "test_maxpool_2d_strides", + "test_maxpool_3d_default", + "test_globalaveragepool_precomputed", + "test_globalaveragepool", + "test_globalmaxpool_precomputed", + "test_globalmaxpool", + "test_instancenorm_epsilon", + "test_instancenorm_example" + ], + "ops": [] + } +} diff --git a/js/web/test/test-types.ts b/js/web/test/test-types.ts new file mode 100644 index 0000000000..63a5a22f4b --- /dev/null +++ b/js/web/test/test-types.ts @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {InferenceSession, Tensor} from 'onnxruntime-common'; + +import {WebGLFlags} from '../lib/backend-onnxjs'; +import {WebAssemblyFlags} from '../lib/backend-wasm'; +import {Attribute} from '../lib/onnxjs/attribute'; +import {Logger} from '../lib/onnxjs/instrument'; + +export declare namespace Test { + export interface NamedTensor extends Tensor { + name: string; + } + + /** + * This interface represent a value of Attribute. Should only be used in testing. + */ + export interface AttributeValue { + name: string; + data: Attribute.DataTypeMap[Attribute.DataType]; + type: Attribute.DataType; + } + + /** + * This interface represent a value of Tensor. Should only be used in testing. + */ + export interface TensorValue { + data: number[]; + dims: number[]; + type: Tensor.Type; + } + + /** + * Represent a string to describe the current environment. + * Used in ModelTest and OperatorTest to determine whether to run the test or not. + */ + export type Condition = string; + + export interface ModelTestCase { + name: string; + dataFiles: readonly string[]; + inputs?: NamedTensor[]; // value should be populated at runtime + outputs?: NamedTensor[]; // value should be populated at runtime + } + + export interface ModelTest { + name: string; + modelUrl: string; + backend?: string; // value should be populated at build time + condition?: Condition; + cases: readonly ModelTestCase[]; + } + + export interface ModelTestGroup { + name: string; + tests: readonly ModelTest[]; + } + + export interface OperatorTestCase { + name: string; + inputs: readonly TensorValue[]; + outputs: readonly TensorValue[]; + } + + export interface OperatorTestOpsetImport { + domain: string; + version: number; + } + + export interface OperatorTest { + name: string; + operator: string; + opsets?: readonly OperatorTestOpsetImport[]; + backend?: string; // value should be populated at build time + condition?: Condition; + attributes: readonly AttributeValue[]; + cases: readonly OperatorTestCase[]; + } + + export interface OperatorTestGroup { + name: string; + tests: readonly OperatorTest[]; + } + + // eslint-disable-next-line @typescript-eslint/no-namespace + export namespace WhiteList { + export type TestName = string; + export interface TestDescription { + name: string; + condition: Condition; + } + export type Test = TestName|TestDescription; + } + + /** + * The data schema of a whitelist file. + * A whitelist should only be applied when running suite test cases (suite0) + */ + export interface WhiteList { + [backend: string]: {[group: string]: readonly WhiteList.Test[]}; + } + + /** + * Represent ONNX.js global options + */ + export interface Options { + debug?: boolean; + cpuOptions?: InferenceSession.CpuExecutionProviderOption; + cpuFlags?: Record; + cudaOptions?: InferenceSession.CudaExecutionProviderOption; + cudaFlags?: Record; + wasmOptions?: InferenceSession.WebAssemblyExecutionProviderOption; + wasmFlags?: WebAssemblyFlags; + webglOptions?: InferenceSession.WebGLExecutionProviderOption; + webglFlags?: WebGLFlags; + } + + /** + * Represent a file cache map that preload the files in prepare stage. + * The key is the file path and the value is the file content in BASE64. + */ + export interface FileCache { + [filePath: string]: string; + } + + /** + * The data schema of a test config. + */ + export interface Config { + unittest: boolean; + op: readonly OperatorTestGroup[]; + model: readonly ModelTestGroup[]; + + fileCacheUrls?: readonly string[]; + + log: ReadonlyArray<{category: string; config: Logger.Config}>; + profile: boolean; + options: Options; + } +} diff --git a/js/web/test/unittests/backends/webgl/test_glsl_function_inliner.ts b/js/web/test/unittests/backends/webgl/test_glsl_function_inliner.ts new file mode 100644 index 0000000000..5d8f9a073e --- /dev/null +++ b/js/web/test/unittests/backends/webgl/test_glsl_function_inliner.ts @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {expect} from 'chai'; +import {replaceInlines} from '../../../../lib/onnxjs/backends/webgl/glsl-function-inliner'; +import {Logger} from '../../../../lib/onnxjs/instrument'; + +function removeWhiteSpace(s: string): string { + return s.replace(/\s+/gm, ' '); +} + +describe('#UnitTest# - FunctionInliner', () => { + it('replaces inline and removes original declaration', () => { + const script = ` + precision mediump float; + varying vec4 vColor; + + @inline + float + _and( + float a, + float b + ) { + bool aBool = bool(a); + bool bBool = bool(b); + return float(aBool ^^ bBool); + } + @inline float _less(float a, float b) { return float(a < b); } + void main(void) { + float m = 2.3; + float l; + l = _less(2.0, 3.4); + float k = _and(1.2, -2.1); + gl_FragColor = vColor; + } + `; + const result = replaceInlines(script); + const expected = ` + precision mediump float; + varying vec4 vColor; + + void main(void) { + float m = 2.3; + float l; + { + float a = 2.0; + float b = 3.4; + l = float(a < b); + } + float k; + { + float a = 1.2; + float b = -2.1; + bool aBool = bool(a); + bool bBool = bool(b); + k = float(aBool ^^ bBool); + } + gl_FragColor = vColor; + } + `; + const result2 = removeWhiteSpace(result); + const expected2 = removeWhiteSpace(expected); + Logger.verbose(`Result after cleanup:\n${result2}`); + Logger.verbose(`Expected after cleanup:\n${expected2}`); + expect(result2).to.equal(expected2); + }); +}); diff --git a/js/web/test/unittests/backends/webgl/test_pack_unpack.ts b/js/web/test/unittests/backends/webgl/test_pack_unpack.ts new file mode 100644 index 0000000000..40c6e9a88b --- /dev/null +++ b/js/web/test/unittests/backends/webgl/test_pack_unpack.ts @@ -0,0 +1,396 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {expect} from 'chai'; + +import {Backend, InferenceHandler, resolveBackend, SessionHandler} from '../../../../lib/onnxjs/backend'; +import {WebGLInferenceHandler} from '../../../../lib/onnxjs/backends/webgl/inference-handler'; +import {WebGLPack} from '../../../../lib/onnxjs/backends/webgl/ops/pack'; +import {WebGLUnpack} from '../../../../lib/onnxjs/backends/webgl/ops/unpack'; +import {WebGLContext} from '../../../../lib/onnxjs/backends/webgl/webgl-context'; +import {Profiler} from '../../../../lib/onnxjs/instrument'; +import {Tensor} from '../../../../lib/onnxjs/tensor'; +import {ShapeUtil} from '../../../../lib/onnxjs/util'; + +let backend: Backend|undefined; +let sessionhandler: SessionHandler|undefined; +let inferenceHandler: InferenceHandler|undefined; + +function createAscendingArray(size: number): Float32Array { + return new Float32Array(Array.from({length: size}, (v, i) => (i + 1))); +} + +// create a webgl texture and fill it with the array content +function createTextureFromArray( + glContext: WebGLContext, dataArray: Float32Array, type: GLenum, width: number, height: number) { + const gl = glContext.gl; + + // create the texture + const texture = gl.createTexture(); + // bind the texture so the following methods effect this texture. + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (glContext.version === 2) { + const webgl2Gl = gl as WebGL2RenderingContext; + gl.texImage2D(webgl2Gl.TEXTURE_2D, 0, webgl2Gl.RGBA32F, width, height, 0, webgl2Gl.RGBA, webgl2Gl.FLOAT, dataArray); + } else { + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.FLOAT, dataArray); + } + + glContext.checkError(); + return texture; +} + +// create a cpu array and download GPU texture data to this array +function createArrayFromTexture( + gl: WebGLRenderingContext, texture: WebGLTexture, width: number, height: number): Float32Array { + const resultDataBuffer = new Float32Array(width * height * 4); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.framebufferTexture2D( + gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, + 0); // 0, we aren't using MIPMAPs + gl.readPixels(0, 0, width, height, gl.RGBA, gl.FLOAT, resultDataBuffer); + return resultDataBuffer; +} + +function getExpectedElementCount(inputShape: number[], isPacked = true): number { + const rank = inputShape.length; + + if (isPacked) { + // scalar + if (rank === 0) { + return 4; + } + + // 1D tensor + if (rank === 1) { + if (inputShape[0] % 2) { + return (inputShape[0] + 1) * 2; + } else { + return inputShape[0] * 2; + } + } + + // process width + let inputWidth = inputShape[rank - 2] % 2 ? inputShape[rank - 2] + 1 : inputShape[rank - 2]; + if (rank > 2) { + for (let i = 0; i < rank - 2; ++i) { + inputWidth *= inputShape[i]; + } + } + // process height + let inputHeight = inputShape[rank - 1]; + if (inputHeight % 2) { + inputHeight++; + } + return inputWidth * inputHeight; + } else { + let totalCount = 1; + for (let i = 0; i < rank; i++) { + totalCount *= inputShape[i]; + } + return totalCount; + } +} + +function generateExpected(inputArray: Float32Array, inputShape: number[]): Float32Array { + if (inputShape.length === 0) { + const result = new Float32Array(4); + result[0] = inputArray[0]; + return result; + } + const rank = inputShape.length; + + const inputHeight = rank === 1 ? 1 : inputShape[rank - 2]; + const inputWidth = inputShape[rank - 1]; + const paddedW = inputWidth % 2 ? inputWidth + 1 : inputWidth; + const paddedH = inputHeight % 2 ? inputHeight + 1 : inputHeight; + + let B = 1; + if (rank > 2) { + for (let i = 0; i < rank - 2; ++i) { + B *= inputShape[i]; + } + } + + const result = new Float32Array(B * paddedW * paddedH); + let ii = 0; + for (let b = 0; b < B; ++b) { + for (let j = 0; j < paddedH; j += 2) { + for (let i = 0; i < paddedW; i += 2) { + const index = j * inputWidth + i + b * (inputHeight * inputWidth); + result[ii++] = inputArray[index]; + + if (i + 1 < inputWidth) { + result[ii++] = inputArray[index + 1]; + } else { + result[ii++] = 0; + } + + if ((j + 1) < inputHeight) { + result[ii++] = inputArray[(j + 1) * inputWidth + i + b * (inputHeight * inputWidth)]; + } else { + result[ii++] = 0; + } + + if (i + 1 < inputWidth && j + 1 < inputHeight) { + result[ii++] = inputArray[(j + 1) * inputWidth + i + 1 + b * (inputHeight * inputWidth)]; + } else { + result[ii++] = 0; + } + } + } + } + return result; +} + +interface TestData { + elementCount: number; + inputShape: number[]; + outputShape: number[]; + inputTextureShape: number[]; + outputTextureShape: number[]; + rawData?: Float32Array; + useGeneratedOutput?: boolean; +} +function getTestData(isPacked = true): TestData[] { + if (isPacked) { + return [ + // test scalar + {elementCount: 1, inputShape: [], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 1]}, + + // test 1D tensor + {elementCount: 1, inputShape: [1], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 1]}, + {elementCount: 16, inputShape: [16], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 8]}, + {elementCount: 9, inputShape: [9], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 5]}, + + // test 2D tensor + {elementCount: 1, inputShape: [1, 1], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 1]}, + {elementCount: 16, inputShape: [4, 4], outputShape: [], inputTextureShape: [], outputTextureShape: [2, 2]}, + {elementCount: 16, inputShape: [2, 8], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 4]}, + {elementCount: 16, inputShape: [8, 2], outputShape: [], inputTextureShape: [], outputTextureShape: [4, 1]}, + {elementCount: 15, inputShape: [3, 5], outputShape: [], inputTextureShape: [], outputTextureShape: [2, 3]}, + {elementCount: 18, inputShape: [3, 6], outputShape: [], inputTextureShape: [], outputTextureShape: [2, 3]}, + {elementCount: 10, inputShape: [2, 5], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 3]}, + {elementCount: 6, inputShape: [1, 6], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 3]}, + {elementCount: 6, inputShape: [6, 1], outputShape: [], inputTextureShape: [], outputTextureShape: [3, 1]}, + {elementCount: 5, inputShape: [5, 1], outputShape: [], inputTextureShape: [], outputTextureShape: [3, 1]}, + {elementCount: 5, inputShape: [1, 5], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 3]}, + + // test 3D tensor + {elementCount: 1, inputShape: [1, 1, 1], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 1]}, + {elementCount: 16, inputShape: [2, 2, 4], outputShape: [], inputTextureShape: [], outputTextureShape: [2, 2]}, + {elementCount: 24, inputShape: [2, 3, 4], outputShape: [], inputTextureShape: [], outputTextureShape: [4, 2]}, + {elementCount: 30, inputShape: [5, 3, 2], outputShape: [], inputTextureShape: [], outputTextureShape: [10, 1]}, + {elementCount: 9, inputShape: [1, 3, 3], outputShape: [], inputTextureShape: [], outputTextureShape: [2, 2]}, + + // test 4D tensor + {elementCount: 1, inputShape: [1, 1, 1, 1], outputShape: [], inputTextureShape: [], outputTextureShape: [1, 1]}, + {elementCount: 16, inputShape: [1, 2, 2, 4], outputShape: [], inputTextureShape: [], outputTextureShape: [2, 2]}, + {elementCount: 32, inputShape: [2, 2, 2, 4], outputShape: [], inputTextureShape: [], outputTextureShape: [4, 2]}, + {elementCount: 36, inputShape: [2, 2, 3, 3], outputShape: [], inputTextureShape: [], outputTextureShape: [8, 2]}, + {elementCount: 80, inputShape: [2, 5, 2, 4], outputShape: [], inputTextureShape: [], outputTextureShape: [10, 2]}, + {elementCount: 12, inputShape: [2, 1, 3, 2], outputShape: [], inputTextureShape: [], outputTextureShape: [4, 1]}, + ]; + } else { + return [ + // // test 1D tensor + { + elementCount: 8, + inputShape: [8], + outputShape: [8], + inputTextureShape: [4, 1], + outputTextureShape: [1, 8], + rawData: new Float32Array([1, 2, 0, 0, 3, 4, 0, 0, 5, 6, 0, 0, 7, 8, 0, 0]), + }, + + // // test 2D tensor + { + elementCount: 16, + inputShape: [4, 4], + outputShape: [4, 4], + inputTextureShape: [2, 2], + outputTextureShape: [4, 4], + useGeneratedOutput: true, + }, + { + elementCount: 8, + inputShape: [2, 4], + outputShape: [2, 4], + inputTextureShape: [2, 1], + outputTextureShape: [2, 4], + useGeneratedOutput: true, + }, + { + elementCount: 6, + inputShape: [2, 3], + outputShape: [2, 3], + inputTextureShape: [2, 1], + outputTextureShape: [2, 3], + rawData: new Float32Array([1, 2, 4, 5, 3, 0, 6, 0]), + }, + + // // test 3d tensor + { + elementCount: 16, + inputShape: [2, 2, 4], + outputShape: [2, 2, 4], + inputTextureShape: [2, 2], + outputTextureShape: [4, 4], + useGeneratedOutput: true, + }, + { + elementCount: 24, + inputShape: [2, 3, 4], + outputShape: [2, 3, 4], + inputTextureShape: [2, 4], + outputTextureShape: [6, 4], + rawData: new Float32Array([ + 1, 2, 5, 6, 3, 4, 7, 8, 9, 10, 0, 0, 11, 12, 0, 0, + 13, 14, 17, 18, 15, 16, 19, 20, 21, 22, 0, 0, 23, 24, 0, 0 + ]) + }, + // test 4d tensor + { + elementCount: 32, + inputShape: [2, 2, 2, 4], + outputShape: [2, 2, 2, 4], + inputTextureShape: [2, 4], + outputTextureShape: [8, 4], + useGeneratedOutput: true, + }, + { + elementCount: 64, + inputShape: [2, 2, 4, 4], + outputShape: [2, 2, 4, 4], + inputTextureShape: [2, 8], + outputTextureShape: [16, 4], + useGeneratedOutput: true, + }, + ]; + } +} + +describe('#UnitTest# - pack - Tensor pack', () => { + before('Initialize Context', async () => { + const profiler = Profiler.create(); + backend = await resolveBackend('webgl'); + sessionhandler = backend.createSessionHandler({profiler}); + inferenceHandler = sessionhandler.createInferenceHandler(); + }); + const testDataSet = getTestData(); + for (let k = 0; k < testDataSet.length; ++k) { + const testData = testDataSet[k]; + describe(`Test pack ${JSON.stringify(testData)}`, () => {}); + it(`Test pack kernal ${JSON.stringify(testData)}`, () => { + const op = new WebGLPack(); + + const elementCount = testData.elementCount; + const inputData = createAscendingArray(elementCount); + const inputTensorShape = testData.inputShape; + const outputTextureShape = testData.outputTextureShape; + + const inputTensor = new Tensor(inputTensorShape, 'float32', undefined, undefined, inputData); + + // compile shader code + const programInfo = op.createProgramInfo(inferenceHandler! as WebGLInferenceHandler, [inputTensor]); + const webglInferenceHandler = inferenceHandler as WebGLInferenceHandler; + const artifact = webglInferenceHandler.session.programManager.build(programInfo); + webglInferenceHandler.session.programManager.setArtifact(op, artifact); + + // run kernal and get output + const runData = op.createRunData(webglInferenceHandler, artifact.programInfo, [inputTensor]); + webglInferenceHandler.session.programManager.run(artifact, runData); + const resultTexture = runData.outputTextureData.texture; + const gl = webglInferenceHandler.session.textureManager.glContext.gl; + const resultDataBuffer = createArrayFromTexture(gl, resultTexture, outputTextureShape[1], outputTextureShape[0]); + + expect(resultDataBuffer).to.not.equal(null); + + const outputElementCount = getExpectedElementCount(testData.inputShape); + expect(resultDataBuffer).to.have.lengthOf(outputElementCount); + console.log(resultDataBuffer); + const expectedOutput = generateExpected(inputData, testData.inputShape); + expect(resultDataBuffer).to.deep.equal(expectedOutput); + }); + } +}); + +describe('#UnitTest# - unpack - Tensor unpack', () => { + before('Initialize Context', async () => { + const profiler = Profiler.create(); + backend = await resolveBackend('webgl'); + sessionhandler = backend.createSessionHandler({profiler}); + inferenceHandler = sessionhandler.createInferenceHandler(); + }); + const testDataSet = getTestData(false); + for (let k = 0; k < testDataSet.length; ++k) { + const testData = testDataSet[k]; + describe(`Test unpack ${JSON.stringify(testData)}`, () => {}); + it('Test unpack kernal ', () => { + const op = new WebGLUnpack(); + + const elementCount = testData.elementCount; + const inputTensorShape = testData.inputShape; + const inputTextureShape = testData.inputTextureShape; + const outputTensorShape = testData.outputShape; + + // create input data and tensor. The input data will be used to verify if the output tensor contains the + // same value but possibly different order depending on our packing algorithm. + const inputData = createAscendingArray(elementCount); + const inputTensor = new Tensor(inputTensorShape, 'float32', undefined, undefined, inputData); + + const webglInferenceHandler = inferenceHandler as WebGLInferenceHandler; + + // manually creat packed texture from inputTensor, and insert in cache + const gl = webglInferenceHandler.session.textureManager.glContext.gl; + webglInferenceHandler.session.textureManager.glContext.checkError(); + const webglTexture = createTextureFromArray( + webglInferenceHandler.session.textureManager.glContext, testData.rawData ? testData.rawData : inputData, + gl.RGBA, inputTextureShape[0], inputTextureShape[1]); + webglInferenceHandler.session.textureManager.glContext.checkError(); + const packedShape = inputTextureShape; + const textureData = { + width: inputTextureShape[0], + height: inputTextureShape[1], + channels: 4 as const, + isPacked: true, + shape: packedShape, + strides: ShapeUtil.computeStrides(packedShape), + unpackedShape: outputTensorShape, + tensor: inputTensor, + texture: webglTexture! + }; + + webglInferenceHandler.setTextureData(inputTensor.dataId, textureData); + + // compile shader code + const programInfo = op.createProgramInfo(inferenceHandler! as WebGLInferenceHandler, [inputTensor]); + + const artifact = webglInferenceHandler.session.programManager.build(programInfo); + webglInferenceHandler.session.programManager.setArtifact(op, artifact); + + // run kernal and get output + const runData = op.createRunData(webglInferenceHandler, artifact.programInfo, [inputTensor]); + webglInferenceHandler.session.programManager.run(artifact, runData); + const result = runData.outputTextureData.tensor.data; + + const resultDataBuffer = createArrayFromTexture(gl, webglTexture!, inputTextureShape[0], inputTextureShape[1]); + + webglInferenceHandler.session.textureManager.glContext.checkError(); + // verify result. + const expectedOutput = testData.useGeneratedOutput ? generateExpected(inputData, testData.inputShape) : inputData; + expect(result).to.not.equal(null); + expect(result).to.have.lengthOf(elementCount); + + expect(resultDataBuffer).to.deep.equal(testData.rawData ? testData.rawData : inputData); + const outputElementCount = getExpectedElementCount(testData.inputShape); + + expect(resultDataBuffer).to.have.lengthOf(outputElementCount); + expect(result).to.deep.equal(expectedOutput); + }); + } +}); diff --git a/js/web/test/unittests/index.ts b/js/web/test/unittests/index.ts new file mode 100644 index 0000000000..853d1dd5a8 --- /dev/null +++ b/js/web/test/unittests/index.ts @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +if (typeof window !== 'undefined') { + require('./backends/webgl/test_glsl_function_inliner'); + require('./backends/webgl/test_pack_unpack'); +} + +require('./opset'); diff --git a/js/web/test/unittests/opset.ts b/js/web/test/unittests/opset.ts new file mode 100644 index 0000000000..c807f41894 --- /dev/null +++ b/js/web/test/unittests/opset.ts @@ -0,0 +1,102 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import {expect} from 'chai'; + +import {Attribute} from '../../lib/onnxjs/attribute'; +import {WEBGL_OP_RESOLVE_RULES} from '../../lib/onnxjs/backends/webgl/op-resolve-rules'; +import {Graph} from '../../lib/onnxjs/graph'; +import {Operator} from '../../lib/onnxjs/operators'; +import {OpSet, resolveOperator} from '../../lib/onnxjs/opset'; + +function createTestGraphNode(name: string, opType: string): Graph.Node { + return {name, opType, inputs: [], outputs: [], attributes: new Attribute(null)}; +} + +function dummyOpConstructor(): Operator { + // tslint:disable-next-line:no-any + return {} as any as Operator; +} + +function checkConsistency(rules: readonly OpSet.ResolveRule[]) { + const VERSION_MIN = 1, VERSION_MAX = 10; + const typeRules = new Map(); + rules.forEach(rule => { + let ruleSet = typeRules.get(rule[0]); + if (!ruleSet) { + ruleSet = []; + typeRules.set(rule[0], ruleSet); + } + ruleSet.push(rule); + }); + + typeRules.forEach((rules, type) => { + for (let i = VERSION_MIN; i < VERSION_MAX; i++) { + let match = false; + for (const r of rules) { + try { + resolveOperator(createTestGraphNode('', type), [{domain: '', version: i}], [r]); + } catch { + continue; + } + expect(match, `multiple rules overlapped: opType='${type}', domain='', version=${i}`).to.be.false; + match = true; + } + } + }); +} + +describe('#UnitTest# - resolveOperator', () => { + const nodeAbs = createTestGraphNode('Abs_1', 'Abs'); + const opset7 = [{domain: '', version: 7}]; + it('ExpectFail - no rule available', () => { + expect(() => { + resolveOperator(nodeAbs, opset7, []); + }).to.throw(TypeError); + }); + it('ExpectFail - no matching rule', () => { + expect(() => { + resolveOperator(nodeAbs, opset7, [['And', '', '7', dummyOpConstructor], ['Sub', '', '7', dummyOpConstructor]]); + }).to.throw(TypeError); + }); + it('ExpectFail - version not match (exact match)', () => { + expect(() => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '6', dummyOpConstructor]]); + }).to.throw(TypeError); + }); + it('ExpectFail - version not match (minimum version match)', () => { + expect(() => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '8+', dummyOpConstructor]]); + }).to.throw(TypeError); + }); + it('ExpectFail - version not match (range match 1)', () => { + expect(() => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '4-6', dummyOpConstructor]]); + }).to.throw(TypeError); + }); + it('ExpectFail - version not match (range match 2)', () => { + expect(() => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '8-10', dummyOpConstructor]]); + }).to.throw(TypeError); + }); + it('ExpectPass - version match (exact match)', () => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '7', dummyOpConstructor]]); + }); + it('ExpectPass - version match (minimum version match)', () => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '5+', dummyOpConstructor]]); + }); + it('ExpectPass - version match (range match 1)', () => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '5-7', dummyOpConstructor]]); + }); + it('ExpectPass - version match (range match 2)', () => { + resolveOperator(nodeAbs, opset7, [['Abs', '', '6-9', dummyOpConstructor]]); + }); +}); + +describe('#UnitTest# - resolve rules', () => { + const webglCheckOnlyRules = + WEBGL_OP_RESOLVE_RULES.map(rule => [rule[0], rule[1], rule[2], dummyOpConstructor] as OpSet.ResolveRule); + it('Consistency check - onnx.ai - webgl', () => { + checkConsistency(webglCheckOnlyRules); + }); +}); diff --git a/js/web/tsconfig.json b/js/web/tsconfig.json new file mode 100644 index 0000000000..efe0651d84 --- /dev/null +++ b/js/web/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "declarationDir": "./types", + "lib": ["DOM"] + }, + "include": ["lib", "script", "test"] +} diff --git a/js/web/webpack.config.js b/js/web/webpack.config.js new file mode 100644 index 0000000000..45c3d775d0 --- /dev/null +++ b/js/web/webpack.config.js @@ -0,0 +1,156 @@ +const path = require('path'); +const webpack = require('webpack'); +const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); +const minimist = require('minimist'); + +function buildAllConfig({ + suffix = '', + format = 'umd', + target = 'ES2017', + mode = 'production', + devtool = 'source-map' +}) { + return { + entry: path.resolve(__dirname, 'lib/index.ts'), + output: { + path: path.resolve(__dirname, 'dist'), + filename: `ort${suffix}.js`, + library: { + name: 'ort', + type: format + } + }, + externals: { + 'fs': 'fs', + 'path': 'path', + 'util': 'util', + }, + resolve: { extensions: ['.ts', '.js'] }, + plugins: [new webpack.WatchIgnorePlugin({ paths: [/\.js$/, /\.d\.ts$/] })], + module: { + rules: [{ + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + options: { + compilerOptions: { target: target } + } + } + ] + }] + }, + mode: mode, + devtool: devtool, + }; +} + +function buildWebConfig({ + suffix = '', + format = 'umd', + target = 'ES2017', + mode = 'production', + devtool = 'source-map' +}) { + return { + entry: path.resolve(__dirname, 'lib/index.ts'), + output: { + path: path.resolve(__dirname, 'dist'), + filename: `ort-web${suffix}.js`, + library: { + type: format + } + }, + externals: { + 'onnxruntime-common': 'ort', + 'fs': 'fs', + 'path': 'path', + 'util': 'util', + }, + resolve: { extensions: ['.ts', '.js'] }, + plugins: [new webpack.WatchIgnorePlugin({ paths: [/\.js$/, /\.d\.ts$/] })], + module: { + rules: [{ + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + options: { + compilerOptions: { target: target } + } + } + ] + }] + }, + mode: mode, + devtool: devtool, + }; +} + +function buildTestRunnerConfig({ + suffix = '', + format = 'umd', + target = 'es5', + mode = 'production', + devtool = 'source-map' +}) { + return { + entry: path.resolve(__dirname, 'test/test-main.ts'), + output: { + path: path.resolve(__dirname, 'test'), + filename: `ort${suffix}.js`, + library: { + type: format + }, + devtoolNamespace: '', + }, + externals: { + 'onnxruntime-common': 'ort', + 'fs': 'fs', + }, + resolve: { extensions: ['.ts', '.js'] }, + plugins: [ + new webpack.WatchIgnorePlugin({ paths: [/\.js$/, /\.d\.ts$/] }), + new NodePolyfillPlugin() + ], + module: { + rules: [{ + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + options: { + compilerOptions: { target: target } + } + } + ] + }] + }, + mode: mode, + devtool: devtool, + }; + +} + +module.exports = () => { + const args = minimist(process.argv); + const bundleMode = args['bundle-mode'] || 'prod'; // 'prod'|'dev'|'perf'|undefined; + const builds = []; + + if (bundleMode === 'prod') { + builds.push( + buildAllConfig({ suffix: '.min', target: 'es5' }), + buildWebConfig({ suffix: '.min', target: 'es5' }), + buildAllConfig({ mode: 'development', devtool: 'inline-source-map', target: 'es5' }), + buildWebConfig({ mode: 'development', devtool: 'inline-source-map', target: 'es5' }), + ); + } + + if (bundleMode === 'dev') { + builds.push(buildTestRunnerConfig({ suffix: '.dev', mode: 'development', devtool: 'inline-source-map' })); + } else if (bundleMode === 'perf') { + builds.push(buildTestRunnerConfig({ suffix: '.perf', devtool: undefined })); + } + + return builds; +};