From aeb066c7c0fcc934d6d760aa157bc93691f74f75 Mon Sep 17 00:00:00 2001 From: XVIID Date: Thu, 16 Mar 2023 03:44:13 +0700 Subject: [PATCH] Add @antv/smart-color @antv/color-schema --- README.md | 4 +- .../0.2.3/build/color-schema.json | 1056 +++++++++++++++++ .../0.2.3/esm/__tests__/generated.test.d.ts | 1 + .../0.2.3/esm/__tests__/generated.test.js | 23 + .../0.2.3/esm/__tests__/generated.test.js.map | 1 + .../0.2.3/esm/__tests__/index.test.d.ts | 1 + .../0.2.3/esm/__tests__/index.test.js | 24 + .../0.2.3/esm/__tests__/index.test.js.map | 1 + .../0.2.3/esm/build/color-schema.json | 1056 +++++++++++++++++ .../0.2.3/esm/examples/classic.json | 137 +++ vendors/color-schema/0.2.3/esm/package.json | 111 ++ vendors/color-schema/0.2.3/esm/src/index.d.ts | 2 + vendors/color-schema/0.2.3/esm/src/index.js | 4 + .../color-schema/0.2.3/esm/src/index.js.map | 1 + .../0.2.3/esm/src/schema/assetPack.d.ts | 5 + .../0.2.3/esm/src/schema/assetPack.js | 2 + .../0.2.3/esm/src/schema/assetPack.js.map | 1 + .../0.2.3/esm/src/schema/color.d.ts | 17 + .../0.2.3/esm/src/schema/color.js | 15 + .../0.2.3/esm/src/schema/color.js.map | 1 + .../0.2.3/esm/src/schema/colorValue.d.ts | 195 +++ .../0.2.3/esm/src/schema/colorValue.js | 59 + .../0.2.3/esm/src/schema/colorValue.js.map | 1 + .../0.2.3/esm/src/schema/index.d.ts | 5 + .../0.2.3/esm/src/schema/index.js | 4 + .../0.2.3/esm/src/schema/index.js.map | 1 + .../0.2.3/esm/src/schema/palette.d.ts | 36 + .../0.2.3/esm/src/schema/palette.js | 21 + .../0.2.3/esm/src/schema/palette.js.map | 1 + .../0.2.3/lib/__tests__/generated.test.d.ts | 1 + .../0.2.3/lib/__tests__/generated.test.js | 26 + .../0.2.3/lib/__tests__/generated.test.js.map | 1 + .../0.2.3/lib/__tests__/index.test.d.ts | 1 + .../0.2.3/lib/__tests__/index.test.js | 27 + .../0.2.3/lib/__tests__/index.test.js.map | 1 + .../0.2.3/lib/build/color-schema.json | 1056 +++++++++++++++++ .../0.2.3/lib/examples/classic.json | 137 +++ vendors/color-schema/0.2.3/lib/package.json | 111 ++ vendors/color-schema/0.2.3/lib/src/index.d.ts | 2 + vendors/color-schema/0.2.3/lib/src/index.js | 8 + .../color-schema/0.2.3/lib/src/index.js.map | 1 + .../0.2.3/lib/src/schema/assetPack.d.ts | 5 + .../0.2.3/lib/src/schema/assetPack.js | 3 + .../0.2.3/lib/src/schema/assetPack.js.map | 1 + .../0.2.3/lib/src/schema/color.d.ts | 17 + .../0.2.3/lib/src/schema/color.js | 20 + .../0.2.3/lib/src/schema/color.js.map | 1 + .../0.2.3/lib/src/schema/colorValue.d.ts | 195 +++ .../0.2.3/lib/src/schema/colorValue.js | 63 + .../0.2.3/lib/src/schema/colorValue.js.map | 1 + .../0.2.3/lib/src/schema/index.d.ts | 5 + .../0.2.3/lib/src/schema/index.js | 7 + .../0.2.3/lib/src/schema/index.js.map | 1 + .../0.2.3/lib/src/schema/palette.d.ts | 36 + .../0.2.3/lib/src/schema/palette.js | 28 + .../0.2.3/lib/src/schema/palette.js.map | 1 + vendors/color-schema/0.2.3/src/index.ts | 4 + .../0.2.3/src/schema/assetPack.ts | 6 + .../color-schema/0.2.3/src/schema/color.ts | 38 + .../0.2.3/src/schema/colorValue.ts | 273 +++++ .../color-schema/0.2.3/src/schema/index.ts | 7 + .../color-schema/0.2.3/src/schema/palette.ts | 69 ++ vendors/color-schema/LICENSE | 21 + vendors/color-schema/README.md | 228 ++++ vendors/smart-color/0.2.1/esm/constant.d.ts | 9 + vendors/smart-color/0.2.1/esm/constant.js | 47 + vendors/smart-color/0.2.1/esm/constant.js.map | 1 + .../colorAesthetic/colorHarmony.d.ts | 2 + .../evaluators/colorAesthetic/colorHarmony.js | 39 + .../colorAesthetic/colorHarmony.js.map | 1 + .../esm/evaluators/colorAesthetic/index.d.ts | 2 + .../esm/evaluators/colorAesthetic/index.js | 19 + .../evaluators/colorAesthetic/index.js.map | 1 + .../pairPreference/LAB_TO_COOLNESS.d.ts | 1 + .../pairPreference/LAB_TO_COOLNESS.js | 3 + .../pairPreference/LAB_TO_COOLNESS.js.map | 1 + .../colorAesthetic/pairPreference/index.d.ts | 2 + .../colorAesthetic/pairPreference/index.js | 93 ++ .../pairPreference/index.js.map | 1 + .../evaluators/colorDifference/CIEDE2000.d.ts | 2 + .../evaluators/colorDifference/CIEDE2000.js | 64 + .../colorDifference/CIEDE2000.js.map | 1 + .../colorDifference/contrastRatio.d.ts | 2 + .../colorDifference/contrastRatio.js | 23 + .../colorDifference/contrastRatio.js.map | 1 + .../colorDifference/euclideanDistance.d.ts | 2 + .../colorDifference/euclideanDistance.js | 8 + .../colorDifference/euclideanDistance.js.map | 1 + .../esm/evaluators/colorDifference/index.d.ts | 2 + .../esm/evaluators/colorDifference/index.js | 23 + .../evaluators/colorDifference/index.js.map | 1 + .../0.2.1/esm/evaluators/index.d.ts | 2 + .../smart-color/0.2.1/esm/evaluators/index.js | 3 + .../0.2.1/esm/evaluators/index.js.map | 1 + .../esm/extractors/getPaletteFromImage.d.ts | 2 + .../esm/extractors/getPaletteFromImage.js | 63 + .../esm/extractors/getPaletteFromImage.js.map | 1 + .../esm/extractors/getPaletteFromString.d.ts | 2 + .../esm/extractors/getPaletteFromString.js | 17 + .../extractors/getPaletteFromString.js.map | 1 + .../0.2.1/esm/extractors/index.d.ts | 2 + .../smart-color/0.2.1/esm/extractors/index.js | 3 + .../0.2.1/esm/extractors/index.js.map | 1 + .../esm/generators/achromaticGeneration.d.ts | 2 + .../esm/generators/achromaticGeneration.js | 23 + .../generators/achromaticGeneration.js.map | 1 + .../esm/generators/analogousGeneration.d.ts | 2 + .../esm/generators/analogousGeneration.js | 30 + .../esm/generators/analogousGeneration.js.map | 1 + .../esm/generators/categoricalGeneration.d.ts | 5 + .../esm/generators/categoricalGeneration.js | 27 + .../generators/categoricalGeneration.js.map | 1 + .../generators/complementaryGeneration.d.ts | 2 + .../esm/generators/complementaryGeneration.js | 29 + .../generators/complementaryGeneration.js.map | 1 + .../generators/discreteScaleGeneration.d.ts | 2 + .../esm/generators/discreteScaleGeneration.js | 13 + .../generators/discreteScaleGeneration.js.map | 1 + .../0.2.1/esm/generators/index.d.ts | 9 + .../smart-color/0.2.1/esm/generators/index.js | 39 + .../0.2.1/esm/generators/index.js.map | 1 + .../generators/monochromaticGeneration.d.ts | 2 + .../esm/generators/monochromaticGeneration.js | 15 + .../generators/monochromaticGeneration.js.map | 1 + .../generators/polychromaticGeneration.d.ts | 2 + .../esm/generators/polychromaticGeneration.js | 16 + .../generators/polychromaticGeneration.js.map | 1 + .../0.2.1/esm/generators/random.d.ts | 1 + .../0.2.1/esm/generators/random.js | 8 + .../0.2.1/esm/generators/random.js.map | 1 + .../esm/generators/randomGeneration.d.ts | 2 + .../0.2.1/esm/generators/randomGeneration.js | 22 + .../esm/generators/randomGeneration.js.map | 1 + .../splitComplementaryGeneration.d.ts | 2 + .../splitComplementaryGeneration.js | 16 + .../splitComplementaryGeneration.js.map | 1 + .../esm/generators/tetradicGeneration.d.ts | 2 + .../esm/generators/tetradicGeneration.js | 16 + .../esm/generators/tetradicGeneration.js.map | 1 + .../esm/generators/triadicGeneration.d.ts | 2 + .../0.2.1/esm/generators/triadicGeneration.js | 16 + .../esm/generators/triadicGeneration.js.map | 1 + .../0.2.1/esm/generators/types.d.ts | 5 + .../smart-color/0.2.1/esm/generators/types.js | 2 + .../0.2.1/esm/generators/types.js.map | 1 + .../esm/generators/validateConfiguration.d.ts | 8 + .../esm/generators/validateConfiguration.js | 22 + .../generators/validateConfiguration.js.map | 1 + vendors/smart-color/0.2.1/esm/index.d.ts | 8 + vendors/smart-color/0.2.1/esm/index.js | 13 + vendors/smart-color/0.2.1/esm/index.js.map | 1 + .../0.2.1/esm/optimizers/index.d.ts | 2 + .../smart-color/0.2.1/esm/optimizers/index.js | 49 + .../0.2.1/esm/optimizers/index.js.map | 1 + .../esm/optimizers/optimizePaletteByGA.d.ts | 7 + .../esm/optimizers/optimizePaletteByGA.js | 132 +++ .../esm/optimizers/optimizePaletteByGA.js.map | 1 + .../0.2.1/esm/simulators/colorBlindness.d.ts | 3 + .../0.2.1/esm/simulators/colorBlindness.js | 17 + .../esm/simulators/colorBlindness.js.map | 1 + .../0.2.1/esm/simulators/grayscale.d.ts | 4 + .../0.2.1/esm/simulators/grayscale.js | 39 + .../0.2.1/esm/simulators/grayscale.js.map | 1 + .../0.2.1/esm/simulators/index.d.ts | 4 + .../smart-color/0.2.1/esm/simulators/index.js | 11 + .../0.2.1/esm/simulators/index.js.map | 1 + vendors/smart-color/0.2.1/esm/types.d.ts | 47 + vendors/smart-color/0.2.1/esm/types.js | 2 + vendors/smart-color/0.2.1/esm/types.js.map | 1 + .../utils/colorComputation/colorBlend.d.ts | 2 + .../esm/utils/colorComputation/colorBlend.js | 115 ++ .../utils/colorComputation/colorBlend.js.map | 1 + .../colorComputation/colorBrightenDarken.d.ts | 3 + .../colorComputation/colorBrightenDarken.js | 78 ++ .../colorBrightenDarken.js.map | 1 + .../esm/utils/colorComputation/index.d.ts | 3 + .../0.2.1/esm/utils/colorComputation/index.js | 13 + .../esm/utils/colorComputation/index.js.map | 1 + .../0.2.1/esm/utils/colorConversion.d.ts | 10 + .../0.2.1/esm/utils/colorConversion.js | 93 ++ .../0.2.1/esm/utils/colorConversion.js.map | 1 + .../smart-color/0.2.1/esm/utils/degree.d.ts | 2 + vendors/smart-color/0.2.1/esm/utils/degree.js | 7 + .../smart-color/0.2.1/esm/utils/degree.js.map | 1 + .../0.2.1/esm/utils/getHexByName.d.ts | 1 + .../0.2.1/esm/utils/getHexByName.js | 153 +++ .../0.2.1/esm/utils/getHexByName.js.map | 1 + .../smart-color/0.2.1/esm/utils/helper.d.ts | 4 + vendors/smart-color/0.2.1/esm/utils/helper.js | 42 + .../smart-color/0.2.1/esm/utils/helper.js.map | 1 + .../smart-color/0.2.1/esm/utils/image.d.ts | 1 + vendors/smart-color/0.2.1/esm/utils/image.js | 15 + .../smart-color/0.2.1/esm/utils/image.js.map | 1 + .../smart-color/0.2.1/esm/utils/index.d.ts | 5 + vendors/smart-color/0.2.1/esm/utils/index.js | 6 + .../smart-color/0.2.1/esm/utils/index.js.map | 1 + .../smart-color/0.2.1/js/smart-color.min.js | 1 + vendors/smart-color/0.2.1/lib/constant.d.ts | 9 + vendors/smart-color/0.2.1/lib/constant.js | 50 + vendors/smart-color/0.2.1/lib/constant.js.map | 1 + .../colorAesthetic/colorHarmony.d.ts | 2 + .../evaluators/colorAesthetic/colorHarmony.js | 43 + .../colorAesthetic/colorHarmony.js.map | 1 + .../lib/evaluators/colorAesthetic/index.d.ts | 2 + .../lib/evaluators/colorAesthetic/index.js | 23 + .../evaluators/colorAesthetic/index.js.map | 1 + .../pairPreference/LAB_TO_COOLNESS.d.ts | 1 + .../pairPreference/LAB_TO_COOLNESS.js | 6 + .../pairPreference/LAB_TO_COOLNESS.js.map | 1 + .../colorAesthetic/pairPreference/index.d.ts | 2 + .../colorAesthetic/pairPreference/index.js | 97 ++ .../pairPreference/index.js.map | 1 + .../evaluators/colorDifference/CIEDE2000.d.ts | 2 + .../evaluators/colorDifference/CIEDE2000.js | 68 ++ .../colorDifference/CIEDE2000.js.map | 1 + .../colorDifference/contrastRatio.d.ts | 2 + .../colorDifference/contrastRatio.js | 27 + .../colorDifference/contrastRatio.js.map | 1 + .../colorDifference/euclideanDistance.d.ts | 2 + .../colorDifference/euclideanDistance.js | 13 + .../colorDifference/euclideanDistance.js.map | 1 + .../lib/evaluators/colorDifference/index.d.ts | 2 + .../lib/evaluators/colorDifference/index.js | 27 + .../evaluators/colorDifference/index.js.map | 1 + .../0.2.1/lib/evaluators/index.d.ts | 2 + .../smart-color/0.2.1/lib/evaluators/index.js | 8 + .../0.2.1/lib/evaluators/index.js.map | 1 + .../lib/extractors/getPaletteFromImage.d.ts | 2 + .../lib/extractors/getPaletteFromImage.js | 68 ++ .../lib/extractors/getPaletteFromImage.js.map | 1 + .../lib/extractors/getPaletteFromString.d.ts | 2 + .../lib/extractors/getPaletteFromString.js | 21 + .../extractors/getPaletteFromString.js.map | 1 + .../0.2.1/lib/extractors/index.d.ts | 2 + .../smart-color/0.2.1/lib/extractors/index.js | 8 + .../0.2.1/lib/extractors/index.js.map | 1 + .../lib/generators/achromaticGeneration.d.ts | 2 + .../lib/generators/achromaticGeneration.js | 27 + .../generators/achromaticGeneration.js.map | 1 + .../lib/generators/analogousGeneration.d.ts | 2 + .../lib/generators/analogousGeneration.js | 34 + .../lib/generators/analogousGeneration.js.map | 1 + .../lib/generators/categoricalGeneration.d.ts | 5 + .../lib/generators/categoricalGeneration.js | 31 + .../generators/categoricalGeneration.js.map | 1 + .../generators/complementaryGeneration.d.ts | 2 + .../lib/generators/complementaryGeneration.js | 33 + .../generators/complementaryGeneration.js.map | 1 + .../generators/discreteScaleGeneration.d.ts | 2 + .../lib/generators/discreteScaleGeneration.js | 17 + .../generators/discreteScaleGeneration.js.map | 1 + .../0.2.1/lib/generators/index.d.ts | 9 + .../smart-color/0.2.1/lib/generators/index.js | 43 + .../0.2.1/lib/generators/index.js.map | 1 + .../generators/monochromaticGeneration.d.ts | 2 + .../lib/generators/monochromaticGeneration.js | 19 + .../generators/monochromaticGeneration.js.map | 1 + .../generators/polychromaticGeneration.d.ts | 2 + .../lib/generators/polychromaticGeneration.js | 20 + .../generators/polychromaticGeneration.js.map | 1 + .../0.2.1/lib/generators/random.d.ts | 1 + .../0.2.1/lib/generators/random.js | 12 + .../0.2.1/lib/generators/random.js.map | 1 + .../lib/generators/randomGeneration.d.ts | 2 + .../0.2.1/lib/generators/randomGeneration.js | 26 + .../lib/generators/randomGeneration.js.map | 1 + .../splitComplementaryGeneration.d.ts | 2 + .../splitComplementaryGeneration.js | 20 + .../splitComplementaryGeneration.js.map | 1 + .../lib/generators/tetradicGeneration.d.ts | 2 + .../lib/generators/tetradicGeneration.js | 20 + .../lib/generators/tetradicGeneration.js.map | 1 + .../lib/generators/triadicGeneration.d.ts | 2 + .../0.2.1/lib/generators/triadicGeneration.js | 20 + .../lib/generators/triadicGeneration.js.map | 1 + .../0.2.1/lib/generators/types.d.ts | 5 + .../smart-color/0.2.1/lib/generators/types.js | 3 + .../0.2.1/lib/generators/types.js.map | 1 + .../lib/generators/validateConfiguration.d.ts | 8 + .../lib/generators/validateConfiguration.js | 26 + .../generators/validateConfiguration.js.map | 1 + vendors/smart-color/0.2.1/lib/index.d.ts | 8 + vendors/smart-color/0.2.1/lib/index.js | 35 + vendors/smart-color/0.2.1/lib/index.js.map | 1 + .../0.2.1/lib/optimizers/index.d.ts | 2 + .../smart-color/0.2.1/lib/optimizers/index.js | 53 + .../0.2.1/lib/optimizers/index.js.map | 1 + .../lib/optimizers/optimizePaletteByGA.d.ts | 7 + .../lib/optimizers/optimizePaletteByGA.js | 137 +++ .../lib/optimizers/optimizePaletteByGA.js.map | 1 + .../0.2.1/lib/simulators/colorBlindness.d.ts | 3 + .../0.2.1/lib/simulators/colorBlindness.js | 23 + .../lib/simulators/colorBlindness.js.map | 1 + .../0.2.1/lib/simulators/grayscale.d.ts | 4 + .../0.2.1/lib/simulators/grayscale.js | 44 + .../0.2.1/lib/simulators/grayscale.js.map | 1 + .../0.2.1/lib/simulators/index.d.ts | 4 + .../smart-color/0.2.1/lib/simulators/index.js | 17 + .../0.2.1/lib/simulators/index.js.map | 1 + vendors/smart-color/0.2.1/lib/types.d.ts | 47 + vendors/smart-color/0.2.1/lib/types.js | 3 + vendors/smart-color/0.2.1/lib/types.js.map | 1 + .../utils/colorComputation/colorBlend.d.ts | 2 + .../lib/utils/colorComputation/colorBlend.js | 119 ++ .../utils/colorComputation/colorBlend.js.map | 1 + .../colorComputation/colorBrightenDarken.d.ts | 3 + .../colorComputation/colorBrightenDarken.js | 83 ++ .../colorBrightenDarken.js.map | 1 + .../lib/utils/colorComputation/index.d.ts | 3 + .../0.2.1/lib/utils/colorComputation/index.js | 20 + .../lib/utils/colorComputation/index.js.map | 1 + .../0.2.1/lib/utils/colorConversion.d.ts | 10 + .../0.2.1/lib/utils/colorConversion.js | 105 ++ .../0.2.1/lib/utils/colorConversion.js.map | 1 + .../smart-color/0.2.1/lib/utils/degree.d.ts | 2 + vendors/smart-color/0.2.1/lib/utils/degree.js | 12 + .../smart-color/0.2.1/lib/utils/degree.js.map | 1 + .../0.2.1/lib/utils/getHexByName.d.ts | 1 + .../0.2.1/lib/utils/getHexByName.js | 157 +++ .../0.2.1/lib/utils/getHexByName.js.map | 1 + .../smart-color/0.2.1/lib/utils/helper.d.ts | 4 + vendors/smart-color/0.2.1/lib/utils/helper.js | 49 + .../smart-color/0.2.1/lib/utils/helper.js.map | 1 + .../smart-color/0.2.1/lib/utils/image.d.ts | 1 + vendors/smart-color/0.2.1/lib/utils/image.js | 19 + .../smart-color/0.2.1/lib/utils/image.js.map | 1 + .../smart-color/0.2.1/lib/utils/index.d.ts | 5 + vendors/smart-color/0.2.1/lib/utils/index.js | 28 + .../smart-color/0.2.1/lib/utils/index.js.map | 1 + vendors/smart-color/0.2.1/src/.DS_Store | Bin 0 -> 8196 bytes .../0.2.1/src/@types/color-blind.d.ts | 4 + vendors/smart-color/0.2.1/src/constant.ts | 53 + .../0.2.1/src/evaluators/.DS_Store | Bin 0 -> 6148 bytes .../src/evaluators/colorAesthetic/.DS_Store | Bin 0 -> 6148 bytes .../evaluators/colorAesthetic/colorHarmony.ts | 46 + .../src/evaluators/colorAesthetic/index.ts | 20 + .../colorAesthetic/pairPreference/.DS_Store | Bin 0 -> 6148 bytes .../pairPreference/LAB_TO_COOLNESS.ts | 2 + .../colorAesthetic/pairPreference/index.ts | 106 ++ .../evaluators/colorDifference/CIEDE2000.ts | 74 ++ .../colorDifference/contrastRatio.ts | 25 + .../colorDifference/euclideanDistance.ts | 9 + .../src/evaluators/colorDifference/index.ts | 24 + .../smart-color/0.2.1/src/evaluators/index.ts | 2 + .../src/extractors/getPaletteFromImage.ts | 73 ++ .../src/extractors/getPaletteFromString.ts | 18 + .../smart-color/0.2.1/src/extractors/index.ts | 2 + .../src/generators/achromaticGeneration.ts | 26 + .../src/generators/analogousGeneration.ts | 34 + .../src/generators/categoricalGeneration.ts | 33 + .../src/generators/complementaryGeneration.ts | 33 + .../src/generators/discreteScaleGeneration.ts | 18 + .../smart-color/0.2.1/src/generators/index.ts | 41 + .../src/generators/monochromaticGeneration.ts | 18 + .../src/generators/polychromaticGeneration.ts | 19 + .../0.2.1/src/generators/random.ts | 8 + .../0.2.1/src/generators/randomGeneration.ts | 24 + .../splitComplementaryGeneration.ts | 18 + .../src/generators/tetradicGeneration.ts | 18 + .../0.2.1/src/generators/triadicGeneration.ts | 18 + .../smart-color/0.2.1/src/generators/types.ts | 6 + .../src/generators/validateConfiguration.ts | 26 + vendors/smart-color/0.2.1/src/index.ts | 23 + .../smart-color/0.2.1/src/optimizers/index.ts | 77 ++ .../src/optimizers/optimizePaletteByGA.ts | 172 +++ .../0.2.1/src/simulators/colorBlindness.ts | 19 + .../0.2.1/src/simulators/grayscale.ts | 42 + .../smart-color/0.2.1/src/simulators/index.ts | 13 + vendors/smart-color/0.2.1/src/types.ts | 96 ++ .../src/utils/colorComputation/colorBlend.ts | 134 +++ .../colorComputation/colorBrightenDarken.ts | 77 ++ .../0.2.1/src/utils/colorComputation/index.ts | 12 + .../0.2.1/src/utils/colorConversion.ts | 104 ++ vendors/smart-color/0.2.1/src/utils/degree.ts | 6 + .../0.2.1/src/utils/getHexByName.ts | 152 +++ vendors/smart-color/0.2.1/src/utils/helper.ts | 44 + vendors/smart-color/0.2.1/src/utils/image.ts | 14 + vendors/smart-color/0.2.1/src/utils/index.ts | 15 + vendors/smart-color/LICENSE | 21 + vendors/smart-color/README.md | 101 ++ 380 files changed, 10765 insertions(+), 2 deletions(-) create mode 100644 vendors/color-schema/0.2.3/build/color-schema.json create mode 100644 vendors/color-schema/0.2.3/esm/__tests__/generated.test.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/__tests__/generated.test.js create mode 100644 vendors/color-schema/0.2.3/esm/__tests__/generated.test.js.map create mode 100644 vendors/color-schema/0.2.3/esm/__tests__/index.test.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/__tests__/index.test.js create mode 100644 vendors/color-schema/0.2.3/esm/__tests__/index.test.js.map create mode 100644 vendors/color-schema/0.2.3/esm/build/color-schema.json create mode 100644 vendors/color-schema/0.2.3/esm/examples/classic.json create mode 100644 vendors/color-schema/0.2.3/esm/package.json create mode 100644 vendors/color-schema/0.2.3/esm/src/index.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/src/index.js create mode 100644 vendors/color-schema/0.2.3/esm/src/index.js.map create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/assetPack.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/assetPack.js create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/assetPack.js.map create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/color.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/color.js create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/color.js.map create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/colorValue.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/colorValue.js create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/colorValue.js.map create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/index.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/index.js create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/index.js.map create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/palette.d.ts create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/palette.js create mode 100644 vendors/color-schema/0.2.3/esm/src/schema/palette.js.map create mode 100644 vendors/color-schema/0.2.3/lib/__tests__/generated.test.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/__tests__/generated.test.js create mode 100644 vendors/color-schema/0.2.3/lib/__tests__/generated.test.js.map create mode 100644 vendors/color-schema/0.2.3/lib/__tests__/index.test.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/__tests__/index.test.js create mode 100644 vendors/color-schema/0.2.3/lib/__tests__/index.test.js.map create mode 100644 vendors/color-schema/0.2.3/lib/build/color-schema.json create mode 100644 vendors/color-schema/0.2.3/lib/examples/classic.json create mode 100644 vendors/color-schema/0.2.3/lib/package.json create mode 100644 vendors/color-schema/0.2.3/lib/src/index.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/src/index.js create mode 100644 vendors/color-schema/0.2.3/lib/src/index.js.map create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/assetPack.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/assetPack.js create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/assetPack.js.map create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/color.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/color.js create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/color.js.map create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/colorValue.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/colorValue.js create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/colorValue.js.map create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/index.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/index.js create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/index.js.map create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/palette.d.ts create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/palette.js create mode 100644 vendors/color-schema/0.2.3/lib/src/schema/palette.js.map create mode 100644 vendors/color-schema/0.2.3/src/index.ts create mode 100644 vendors/color-schema/0.2.3/src/schema/assetPack.ts create mode 100644 vendors/color-schema/0.2.3/src/schema/color.ts create mode 100644 vendors/color-schema/0.2.3/src/schema/colorValue.ts create mode 100644 vendors/color-schema/0.2.3/src/schema/index.ts create mode 100644 vendors/color-schema/0.2.3/src/schema/palette.ts create mode 100644 vendors/color-schema/LICENSE create mode 100644 vendors/color-schema/README.md create mode 100644 vendors/smart-color/0.2.1/esm/constant.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/constant.js create mode 100644 vendors/smart-color/0.2.1/esm/constant.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/index.js create mode 100644 vendors/smart-color/0.2.1/esm/evaluators/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js create mode 100644 vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js.map create mode 100644 vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js create mode 100644 vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js.map create mode 100644 vendors/smart-color/0.2.1/esm/extractors/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/extractors/index.js create mode 100644 vendors/smart-color/0.2.1/esm/extractors/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/analogousGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/index.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/random.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/random.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/random.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/randomGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/randomGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/randomGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/triadicGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/types.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/types.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/types.js.map create mode 100644 vendors/smart-color/0.2.1/esm/generators/validateConfiguration.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js create mode 100644 vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js.map create mode 100644 vendors/smart-color/0.2.1/esm/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/index.js create mode 100644 vendors/smart-color/0.2.1/esm/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/optimizers/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/optimizers/index.js create mode 100644 vendors/smart-color/0.2.1/esm/optimizers/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js create mode 100644 vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js.map create mode 100644 vendors/smart-color/0.2.1/esm/simulators/colorBlindness.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js create mode 100644 vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js.map create mode 100644 vendors/smart-color/0.2.1/esm/simulators/grayscale.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/simulators/grayscale.js create mode 100644 vendors/smart-color/0.2.1/esm/simulators/grayscale.js.map create mode 100644 vendors/smart-color/0.2.1/esm/simulators/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/simulators/index.js create mode 100644 vendors/smart-color/0.2.1/esm/simulators/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/types.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/types.js create mode 100644 vendors/smart-color/0.2.1/esm/types.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorConversion.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorConversion.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/colorConversion.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/degree.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/degree.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/degree.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/getHexByName.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/getHexByName.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/getHexByName.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/helper.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/helper.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/helper.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/image.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/image.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/image.js.map create mode 100644 vendors/smart-color/0.2.1/esm/utils/index.d.ts create mode 100644 vendors/smart-color/0.2.1/esm/utils/index.js create mode 100644 vendors/smart-color/0.2.1/esm/utils/index.js.map create mode 100644 vendors/smart-color/0.2.1/js/smart-color.min.js create mode 100644 vendors/smart-color/0.2.1/lib/constant.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/constant.js create mode 100644 vendors/smart-color/0.2.1/lib/constant.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/index.js create mode 100644 vendors/smart-color/0.2.1/lib/evaluators/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js create mode 100644 vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js.map create mode 100644 vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js create mode 100644 vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js.map create mode 100644 vendors/smart-color/0.2.1/lib/extractors/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/extractors/index.js create mode 100644 vendors/smart-color/0.2.1/lib/extractors/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/analogousGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/index.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/random.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/random.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/random.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/randomGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/randomGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/randomGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/triadicGeneration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/types.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/types.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/types.js.map create mode 100644 vendors/smart-color/0.2.1/lib/generators/validateConfiguration.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js create mode 100644 vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js.map create mode 100644 vendors/smart-color/0.2.1/lib/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/index.js create mode 100644 vendors/smart-color/0.2.1/lib/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/optimizers/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/optimizers/index.js create mode 100644 vendors/smart-color/0.2.1/lib/optimizers/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js create mode 100644 vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js.map create mode 100644 vendors/smart-color/0.2.1/lib/simulators/colorBlindness.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js create mode 100644 vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js.map create mode 100644 vendors/smart-color/0.2.1/lib/simulators/grayscale.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/simulators/grayscale.js create mode 100644 vendors/smart-color/0.2.1/lib/simulators/grayscale.js.map create mode 100644 vendors/smart-color/0.2.1/lib/simulators/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/simulators/index.js create mode 100644 vendors/smart-color/0.2.1/lib/simulators/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/types.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/types.js create mode 100644 vendors/smart-color/0.2.1/lib/types.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorConversion.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorConversion.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/colorConversion.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/degree.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/degree.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/degree.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/getHexByName.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/getHexByName.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/getHexByName.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/helper.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/helper.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/helper.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/image.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/image.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/image.js.map create mode 100644 vendors/smart-color/0.2.1/lib/utils/index.d.ts create mode 100644 vendors/smart-color/0.2.1/lib/utils/index.js create mode 100644 vendors/smart-color/0.2.1/lib/utils/index.js.map create mode 100644 vendors/smart-color/0.2.1/src/.DS_Store create mode 100644 vendors/smart-color/0.2.1/src/@types/color-blind.d.ts create mode 100644 vendors/smart-color/0.2.1/src/constant.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/.DS_Store create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/.DS_Store create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/colorHarmony.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/index.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/pairPreference/.DS_Store create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/pairPreference/index.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorDifference/CIEDE2000.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorDifference/contrastRatio.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorDifference/euclideanDistance.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/colorDifference/index.ts create mode 100644 vendors/smart-color/0.2.1/src/evaluators/index.ts create mode 100644 vendors/smart-color/0.2.1/src/extractors/getPaletteFromImage.ts create mode 100644 vendors/smart-color/0.2.1/src/extractors/getPaletteFromString.ts create mode 100644 vendors/smart-color/0.2.1/src/extractors/index.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/achromaticGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/analogousGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/categoricalGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/complementaryGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/discreteScaleGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/index.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/monochromaticGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/polychromaticGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/random.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/randomGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/splitComplementaryGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/tetradicGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/triadicGeneration.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/types.ts create mode 100644 vendors/smart-color/0.2.1/src/generators/validateConfiguration.ts create mode 100644 vendors/smart-color/0.2.1/src/index.ts create mode 100644 vendors/smart-color/0.2.1/src/optimizers/index.ts create mode 100644 vendors/smart-color/0.2.1/src/optimizers/optimizePaletteByGA.ts create mode 100644 vendors/smart-color/0.2.1/src/simulators/colorBlindness.ts create mode 100644 vendors/smart-color/0.2.1/src/simulators/grayscale.ts create mode 100644 vendors/smart-color/0.2.1/src/simulators/index.ts create mode 100644 vendors/smart-color/0.2.1/src/types.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/colorComputation/colorBlend.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/colorComputation/colorBrightenDarken.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/colorComputation/index.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/colorConversion.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/degree.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/getHexByName.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/helper.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/image.ts create mode 100644 vendors/smart-color/0.2.1/src/utils/index.ts create mode 100644 vendors/smart-color/LICENSE create mode 100644 vendors/smart-color/README.md diff --git a/README.md b/README.md index b8de4b38..dff19ad5 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,10 @@

- Last Version + Last Version - Vendors + Vendors MIT License diff --git a/vendors/color-schema/0.2.3/build/color-schema.json b/vendors/color-schema/0.2.3/build/color-schema.json new file mode 100644 index 00000000..f09cf48d --- /dev/null +++ b/vendors/color-schema/0.2.3/build/color-schema.json @@ -0,0 +1,1056 @@ +{ + "$ref": "#/definitions/ColorSchema", + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "AssetPack": { + "additionalProperties": false, + "properties": { + "brandName": { + "type": "string" + }, + "palettes": { + "items": { + "$ref": "#/definitions/Palette" + }, + "type": "array" + } + }, + "required": [ + "brandName", + "palettes" + ], + "type": "object" + }, + "CMYKValue": { + "additionalProperties": false, + "properties": { + "c": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "k": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "m": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "c", + "m", + "y", + "k" + ], + "type": "object" + }, + "CategoricalPalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "categorical", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "Color": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsl", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSLValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsv", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSVValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsi", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSIValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "rgb", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "rgba", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBAValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "lab", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LABValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "lch", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LCHValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "cmyk", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/CMYKValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + } + ] + }, + "ColorSchema": { + "$ref": "#/definitions/AssetPack" + }, + "ColorSchemeType": { + "enum": [ + "monochromatic", + "complementary", + "split-complementary", + "achromatic", + "analogous", + "triadic", + "tetradic", + "polychromatic", + "customized" + ], + "type": "string" + }, + "ContinuousColor": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsl", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSLValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsv", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSVValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsi", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSIValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "rgb", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "rgba", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBAValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "lab", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LABValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "lch", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LCHValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "cmyk", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/CMYKValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + } + ] + }, + "ContinuousScalePalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/ContinuousColor" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "continuous-scale", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "DiscreteScalePalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "discrete-scale", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "HSIValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "i": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "i" + ], + "type": "object" + }, + "HSLValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "l": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "l" + ], + "type": "object" + }, + "HSVValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "v": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "v" + ], + "type": "object" + }, + "LABValue": { + "additionalProperties": false, + "properties": { + "a": { + "maximum": 98.254, + "minimum": -86.185, + "type": "number" + }, + "b": { + "maximum": 94.482, + "minimum": -107.863, + "type": "number" + }, + "l": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "l", + "a", + "b" + ], + "type": "object" + }, + "LCHValue": { + "additionalProperties": false, + "properties": { + "c": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "l": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "l", + "c", + "h" + ], + "type": "object" + }, + "MatrixPalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "origin": { + "additionalProperties": false, + "properties": { + "x": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "y": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "matrix", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "origin", + "semantic", + "type" + ], + "type": "object" + }, + "Palette": { + "anyOf": [ + { + "$ref": "#/definitions/CategoricalPalette" + }, + { + "$ref": "#/definitions/DiscreteScalePalette" + }, + { + "$ref": "#/definitions/ContinuousScalePalette" + }, + { + "$ref": "#/definitions/MatrixPalette" + } + ] + }, + "RGBAValue": { + "additionalProperties": false, + "properties": { + "a": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "b": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "r", + "g", + "b", + "a" + ], + "type": "object" + }, + "RGBValue": { + "additionalProperties": false, + "properties": { + "b": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "r", + "g", + "b" + ], + "type": "object" + }, + "Undertone": { + "enum": [ + "warm", + "neutral", + "cool" + ], + "type": "string" + } + } +} diff --git a/vendors/color-schema/0.2.3/esm/__tests__/generated.test.d.ts b/vendors/color-schema/0.2.3/esm/__tests__/generated.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/__tests__/generated.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vendors/color-schema/0.2.3/esm/__tests__/generated.test.js b/vendors/color-schema/0.2.3/esm/__tests__/generated.test.js new file mode 100644 index 00000000..d9fcdc17 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/__tests__/generated.test.js @@ -0,0 +1,23 @@ +import Ajv from 'ajv'; +import { matchersWithOptions } from 'jest-json-schema'; +import colorSchema from '../build/color-schema.json'; +import classic from '../examples/classic.json'; +expect.extend(matchersWithOptions({ + schemas: [colorSchema], +})); +const colorAssets = classic; +describe('test', () => { + test('schema itself is valid', () => { + expect(colorSchema).toBeValidSchema(); + }); + it('schema validate', () => { + // by jest-json-schema (powered by ajv) + expect(colorAssets).toMatchSchema(colorSchema); + // by ajv + const ajv = new Ajv(); + const validate = ajv.compile(colorSchema); + const valid = validate(colorAssets); + expect(valid).toBe(true); + }); +}); +//# sourceMappingURL=generated.test.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/__tests__/generated.test.js.map b/vendors/color-schema/0.2.3/esm/__tests__/generated.test.js.map new file mode 100644 index 00000000..55a8d078 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/__tests__/generated.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generated.test.js","sourceRoot":"src/","sources":["__tests__/generated.test.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAE/C,MAAM,CAAC,MAAM,CACX,mBAAmB,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,CAAC;CACvB,CAAC,CACH,CAAC;AAEF,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,uCAAuC;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE/C,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/__tests__/index.test.d.ts b/vendors/color-schema/0.2.3/esm/__tests__/index.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/__tests__/index.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vendors/color-schema/0.2.3/esm/__tests__/index.test.js b/vendors/color-schema/0.2.3/esm/__tests__/index.test.js new file mode 100644 index 00000000..ee402c02 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/__tests__/index.test.js @@ -0,0 +1,24 @@ +// import * as colorSchema from "../hand-made-schema.json"; +import Ajv from 'ajv'; +import { matchersWithOptions } from 'jest-json-schema'; +import * as colorSchema from '../build/color-schema.json'; +import classic from '../examples/classic.json'; +expect.extend(matchersWithOptions({ + schemas: [colorSchema], +})); +const colorAssets = classic; +describe('test', () => { + test('schema itself is valid', () => { + expect(colorSchema).toBeValidSchema(); + }); + it('schema validate', () => { + // by jest-json-schema (powered by ajv) + expect(colorAssets).toMatchSchema(colorSchema); + // by ajv + const ajv = new Ajv(); + const validate = ajv.compile(colorSchema); + const valid = validate(colorAssets); + expect(valid).toBe(true); + }); +}); +//# sourceMappingURL=index.test.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/__tests__/index.test.js.map b/vendors/color-schema/0.2.3/esm/__tests__/index.test.js.map new file mode 100644 index 00000000..471b48fd --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/__tests__/index.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.test.js","sourceRoot":"src/","sources":["__tests__/index.test.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAC1D,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAE/C,MAAM,CAAC,MAAM,CACX,mBAAmB,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,CAAC;CACvB,CAAC,CACH,CAAC;AAEF,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,uCAAuC;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE/C,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/build/color-schema.json b/vendors/color-schema/0.2.3/esm/build/color-schema.json new file mode 100644 index 00000000..fa6f023f --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/build/color-schema.json @@ -0,0 +1,1056 @@ +{ + "$ref": "#/definitions/ColorSchema", + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "AssetPack": { + "additionalProperties": false, + "properties": { + "brandName": { + "type": "string" + }, + "palettes": { + "items": { + "$ref": "#/definitions/Palette" + }, + "type": "array" + } + }, + "required": [ + "brandName", + "palettes" + ], + "type": "object" + }, + "CMYKValue": { + "additionalProperties": false, + "properties": { + "c": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "k": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "m": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "c", + "m", + "y", + "k" + ], + "type": "object" + }, + "CategoricalPalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "categorical", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "Color": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsl", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSLValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsv", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSVValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsi", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSIValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "rgb", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "rgba", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBAValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "lab", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LABValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "lch", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LCHValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "cmyk", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/CMYKValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + } + ] + }, + "ColorSchema": { + "$ref": "#/definitions/AssetPack" + }, + "ColorSchemeType": { + "enum": [ + "monochromatic", + "complementary", + "split-complementary", + "achromatic", + "analogous", + "triadic", + "tetradic", + "polychromatic", + "customized" + ], + "type": "string" + }, + "ContinuousColor": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsl", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSLValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsv", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSVValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsi", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSIValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "rgb", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "rgba", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBAValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "lab", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LABValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "lch", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LCHValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "cmyk", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/CMYKValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + } + ] + }, + "ContinuousScalePalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/ContinuousColor" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "continuous-scale", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "DiscreteScalePalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "discrete-scale", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "HSIValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "i": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "i" + ], + "type": "object" + }, + "HSLValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "l": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "l" + ], + "type": "object" + }, + "HSVValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "v": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "v" + ], + "type": "object" + }, + "LABValue": { + "additionalProperties": false, + "properties": { + "a": { + "maximum": 98.254, + "minimum": -86.185, + "type": "number" + }, + "b": { + "maximum": 94.482, + "minimum": -107.863, + "type": "number" + }, + "l": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "l", + "a", + "b" + ], + "type": "object" + }, + "LCHValue": { + "additionalProperties": false, + "properties": { + "c": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "l": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "l", + "c", + "h" + ], + "type": "object" + }, + "MatrixPalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "origin": { + "additionalProperties": false, + "properties": { + "x": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "y": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "matrix", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "origin", + "semantic", + "type" + ], + "type": "object" + }, + "Palette": { + "anyOf": [ + { + "$ref": "#/definitions/CategoricalPalette" + }, + { + "$ref": "#/definitions/DiscreteScalePalette" + }, + { + "$ref": "#/definitions/ContinuousScalePalette" + }, + { + "$ref": "#/definitions/MatrixPalette" + } + ] + }, + "RGBAValue": { + "additionalProperties": false, + "properties": { + "a": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "b": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "r", + "g", + "b", + "a" + ], + "type": "object" + }, + "RGBValue": { + "additionalProperties": false, + "properties": { + "b": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "r", + "g", + "b" + ], + "type": "object" + }, + "Undertone": { + "enum": [ + "warm", + "neutral", + "cool" + ], + "type": "string" + } + } +} diff --git a/vendors/color-schema/0.2.3/esm/examples/classic.json b/vendors/color-schema/0.2.3/esm/examples/classic.json new file mode 100644 index 00000000..9cf335ec --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/examples/classic.json @@ -0,0 +1,137 @@ +{ + "brandName": "antd", + "palettes": [ + { + "name": "trinity", + "semantic": "three", + "type": "categorical", + "colors": [ + { + "model": "rgb", + "value": { "r": 255, "g": 0, "b": 0 }, + "name": "red", + "undertone": "warm", + "usage": ["danger", "apple"] + }, + { + "model": "rgb", + "value": { "r": 0, "g": 255, "b": 0 }, + "name": "green", + "undertone": "neutral" + }, + { + "model": "rgb", + "value": { "r": 0, "g": 0, "b": 255 }, + "name": "blue", + "undertone": "cool" + } + ], + "usage": ["highlight"] + }, + { + "name": "scale1", + "semantic": "passional", + "type": "discrete-scale", + "colors": [ + { "model": "rgb", "value": { "r": 255, "g": 247, "b": 236 } }, + { "model": "rgb", "value": { "r": 253, "g": 212, "b": 158 } }, + { "model": "rgb", "value": { "r": 252, "g": 141, "b": 89 } }, + { "model": "rgb", "value": { "r": 215, "g": 48, "b": 31 } }, + { "model": "rgb", "value": { "r": 127, "g": 0, "b": 0 } } + ], + "usage": ["visualization"] + }, + { + "name": "Leaf Yellow", + "semantic": "tranquil", + "type": "discrete-scale", + "description": "Colors of leaves in different seasons.", + "colors": [ + { "model": "rgb", "value": { "r": 255, "g": 235, "b": 176 } }, + { "model": "rgb", "value": { "r": 255, "g": 223, "b": 128 } }, + { "model": "rgb", "value": { "r": 250, "g": 202, "b": 62 } }, + { "model": "rgb", "value": { "r": 230, "g": 184, "b": 1 } }, + { "model": "rgb", "value": { "r": 181, "g": 172, "b": 35 } }, + { "model": "rgb", "value": { "r": 106, "g": 154, "b": 72 } }, + { "model": "rgb", "value": { "r": 32, "g": 135, "b": 107 } }, + { "model": "rgb", "value": { "r": 6, "g": 116, "b": 107 } }, + { "model": "rgb", "value": { "r": 4, "g": 78, "b": 72 } } + ] + }, + { + "name": "scale3", + "semantic": "passional", + "type": "continuous-scale", + "colors": [ + { "model": "rgb", "value": { "r": 255, "g": 247, "b": 236 }, "location": 0 }, + { "model": "rgb", "value": { "r": 252, "g": 141, "b": 89 }, "location": 0.2 }, + { "model": "rgb", "value": { "r": 127, "g": 0, "b": 0 }, "location": 1 } + ] + }, + { + "name": "Matrix", + "semantic": "mysterious", + "type": "matrix", + "colors": [ + [{ + "model": "rgb", + "value": { "r": 139, "g": 89, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 103, "g": 82, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 20, "g": 68, "b": 237 } + }], + [{ + "model": "rgb", + "value": { "r": 183, "g": 141, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 136, "g": 129, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 27, "g": 107, "b": 237 } + }], + [{ + "model": "rgb", + "value": { "r": 215, "g": 209, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 160, "g": 191, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 32, "g": 159, "b": 237 } + }] + ], + "origin": { + "x": [{ + "model": "rgb", + "value": { "r": 215, "g": 209, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 160, "g": 191, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 32, "g": 159, "b": 237 } + }], + "y": [{ + "model": "rgb", + "value": { "r": 215, "g": 209, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 183, "g": 141, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 139, "g": 89, "b": 255 } + }] + } + } + ] +} diff --git a/vendors/color-schema/0.2.3/esm/package.json b/vendors/color-schema/0.2.3/esm/package.json new file mode 100644 index 00000000..d7050b27 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/package.json @@ -0,0 +1,111 @@ +{ + "name": "@antv/color-schema", + "version": "0.2.3", + "description": "JSON Schema for Color Palette", + "main": "lib/src/index.js", + "types": "lib/src/index.d.ts", + "unpkg": "dist/index.min.js", + "module": "esm/src/index.js", + "files": [ + "src", + "esm", + "lib", + "build" + ], + "scripts": { + "clean": "rimraf lib esm dist", + "lint-staged": "lint-staged", + "size": "limit-size", + "format": "prettier --write \"src/**/*.ts\" \"__tests__/**/*.ts\" \"demo/**/*.{ts,tsx}\"", + "format-check": " prettier ./src/**/*.ts ./__tests__/**/*.ts ./demo/**/*.{ts,tsx} --check", + "lint": "eslint ./src/**/*.ts ./__tests__/**/*.ts ./demo/**/*.{ts,tsx} && npm run format-check", + "fix": "eslint ./src/**/*.ts ./__tests__/**/*.ts ./demo/**/*.{ts,tsx} --fix && npm run format", + "test": "jest", + "build:umd": "rimraf ./dist && rollup -c && npm run size", + "build:cjs": "rimraf ./lib && tsc --module commonjs --outDir lib", + "build:esm": "rimraf ./esm && tsc --module ESNext --outDir esm", + "build": "run-p build:*", + "schema": "mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t ColorSchema --no-type-check --no-ref-encode > build/color-schema.json", + "ci": "run-s lint test build schema", + "prepublishOnly": "npm run ci", + "prepare": "husky install", + "setup:demo": "cd demo && npm install --package-lock=false", + "start:demo": "npm run setup:demo && cd demo && npm start", + "deploy:site": "cd demo && npm run deploy:site", + "preversion": "npm run lint", + "version": "npm run format && git add -A src", + "postversion": "git push && git push --tags", + "one-stop-setup": "npm install --package-lock=false && run-s build setup:demo" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/antvis/color-schema.git" + }, + "author": { + "name": "AntV", + "url": "https://antv.vision/" + }, + "license": "MIT", + "homepage": "https://antvis.github.io/color-schema", + "publishConfig": { + "access": "public" + }, + "bugs": { + "url": "https://github.com/antvis/color-schema/issues" + }, + "dependencies": { + "@types/chroma-js": "^2.1.3" + }, + "devDependencies": { + "@babel/runtime": "^7.13.10", + "@commitlint/cli": "^12.1.4", + "@commitlint/config-conventional": "^12.1.4", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-typescript": "^8.2.1", + "@types/jest": "^26.0.22", + "@types/jest-json-schema": "^2.1.3", + "@typescript-eslint/eslint-plugin": "^4.28.3", + "@typescript-eslint/parser": "^4.28.3", + "ajv": "^8.0.4", + "chroma-js": "^2.1.1", + "eslint": "^7.29.0", + "eslint-config-airbnb": "^18.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.24.0", + "husky": "^7.0.1", + "jest": "^26.6.3", + "jest-json-schema": "^5.0.0", + "limit-size": "^0.1.4", + "lint-staged": "^11.0.1", + "npm-run-all": "^4.1.5", + "prettier": "^2.3.0", + "rimraf": "^3.0.2", + "rollup": "^2.53.1", + "rollup-plugin-terser": "^7.0.2", + "ts-jest": "^26.5.4", + "ts-json-schema-generator": "^0.89.2", + "typescript": "^4.2.4" + }, + "lint-staged": { + "*.{ts,tsx}": [ + "eslint --fix", + "prettier --write", + "git add" + ] + }, + "limit-size": [ + { + "path": "dist/index.min.js", + "limit": "8 Kb", + "gzip": true + }, + { + "path": "dist/index.min.js", + "limit": "24 Kb" + } + ] +} diff --git a/vendors/color-schema/0.2.3/esm/src/index.d.ts b/vendors/color-schema/0.2.3/esm/src/index.d.ts new file mode 100644 index 00000000..48252c7a --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/index.d.ts @@ -0,0 +1,2 @@ +export declare const version: string; +export * from './schema'; diff --git a/vendors/color-schema/0.2.3/esm/src/index.js b/vendors/color-schema/0.2.3/esm/src/index.js new file mode 100644 index 00000000..ea77669a --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/index.js @@ -0,0 +1,4 @@ +import pkg from '../package.json'; +export const version = pkg.version; +export * from './schema'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/index.js.map b/vendors/color-schema/0.2.3/esm/src/index.js.map new file mode 100644 index 00000000..d9b2a901 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAEnC,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/assetPack.d.ts b/vendors/color-schema/0.2.3/esm/src/schema/assetPack.d.ts new file mode 100644 index 00000000..fc4750b6 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/assetPack.d.ts @@ -0,0 +1,5 @@ +import { Palette } from './palette'; +export interface AssetPack { + brandName: string; + palettes: Palette[]; +} diff --git a/vendors/color-schema/0.2.3/esm/src/schema/assetPack.js b/vendors/color-schema/0.2.3/esm/src/schema/assetPack.js new file mode 100644 index 00000000..9f21fd9f --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/assetPack.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=assetPack.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/assetPack.js.map b/vendors/color-schema/0.2.3/esm/src/schema/assetPack.js.map new file mode 100644 index 00000000..f5c71073 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/assetPack.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assetPack.js","sourceRoot":"src/","sources":["src/schema/assetPack.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/color.d.ts b/vendors/color-schema/0.2.3/esm/src/schema/color.d.ts new file mode 100644 index 00000000..b33c1700 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/color.d.ts @@ -0,0 +1,17 @@ +import { ColorValue } from './colorValue'; +export declare type Undertone = 'warm' | 'neutral' | 'cool'; +export interface ColorBaseInfo { + id?: string; + name?: string; + undertone?: Undertone; + usage?: string[]; +} +export declare type Color = ColorBaseInfo & ColorValue; +export declare type ContinuousColor = Color & { + /** + * @minimum 0 + * @maximum 1 + */ + location?: number; +}; +export declare function colorToHex(color: Color): string; diff --git a/vendors/color-schema/0.2.3/esm/src/schema/color.js b/vendors/color-schema/0.2.3/esm/src/schema/color.js new file mode 100644 index 00000000..746a26f9 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/color.js @@ -0,0 +1,15 @@ +import chroma from 'chroma-js'; +const isChromaColor = (color) => { + if (chroma.valid(color)) { + return true; + } + return false; +}; +export function colorToHex(color) { + const { value } = color; + if (isChromaColor(value)) { + return chroma(value).hex(); + } + return ''; +} +//# sourceMappingURL=color.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/color.js.map b/vendors/color-schema/0.2.3/esm/src/schema/color.js.map new file mode 100644 index 00000000..ceba8a32 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/color.js.map @@ -0,0 +1 @@ +{"version":3,"file":"color.js","sourceRoot":"src/","sources":["src/schema/color.ts"],"names":[],"mappings":"AAAA,OAAO,MAAgC,MAAM,WAAW,CAAC;AAsBzD,MAAM,aAAa,GAAG,CAAC,KAAU,EAAwB,EAAE;IACzD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;KAC5B;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/colorValue.d.ts b/vendors/color-schema/0.2.3/esm/src/schema/colorValue.d.ts new file mode 100644 index 00000000..e7f6238e --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/colorValue.d.ts @@ -0,0 +1,195 @@ +export declare type ColorModel = 'hsl' | 'hsv' | 'hsi' | 'rgb' | 'rgba' | 'lab' | 'lch' | 'cmyk'; +export interface HSLValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + l: number; +} +declare type range = [number, number]; +export declare const HSLValueRange: Record; +export interface HSLColor { + model: 'hsl'; + value: HSLValue; +} +export interface HSVValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + v: number; +} +export declare const HSVValueRange: Record; +export interface HSVColor { + model: 'hsv'; + value: HSVValue; +} +export interface HSIValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + i: number; +} +export declare const HSIValueRange: Record; +export interface HSIColor { + model: 'hsi'; + value: HSIValue; +} +export interface RGBValue { + /** + * @minimum 0 + * @maximum 255 + */ + r: number; + /** + * @minimum 0 + * @maximum 255 + */ + g: number; + /** + * @minimum 0 + * @maximum 255 + */ + b: number; +} +export declare const RGBValueRange: Record; +export interface RGBColor { + model: 'rgb'; + value: RGBValue; +} +export interface RGBAValue { + /** + * @minimum 0 + * @maximum 255 + */ + r: number; + /** + * @minimum 0 + * @maximum 255 + */ + g: number; + /** + * @minimum 0 + * @maximum 255 + */ + b: number; + /** + * @minimum 0 + * @maximum 1 + */ + a: number; +} +export declare const RGBAValueRange: Record; +export interface RGBAColor { + model: 'rgba'; + value: RGBAValue; +} +export interface LABValue { + /** + * @minimum 0 + * @maximum 100 + */ + l: number; + /** + * @minimum -86.185 + * @maximum 98.254 + */ + a: number; + /** + * @minimum -107.863 + * @maximum 94.482 + */ + b: number; +} +export declare const LABRange: Record; +export interface LABColor { + model: 'lab'; + value: LABValue; +} +export interface LCHValue { + /** + * @minimum 0 + * @maximum 100 + */ + l: number; + /** + * @minimum 0 + * @maximum 100 + */ + c: number; + /** + * @minimum 0 + * @maximum 360 + */ + h: number; +} +export declare const LCHRange: Record; +export interface LCHColor { + model: 'lch'; + value: LCHValue; +} +export interface CMYKValue { + /** + * @minimum 0 + * @maximum 1 + */ + c: number; + /** + * @minimum 0 + * @maximum 1 + */ + m: number; + /** + * @minimum 0 + * @maximum 1 + */ + y: number; + /** + * @minimum 0 + * @maximum 1 + */ + k: number; +} +export declare const CMYKRange: Record; +export interface CMYKColor { + model: 'cmyk'; + value: CMYKValue; +} +interface ColorModelInfo { + [key: string]: range; +} +export declare const ColorModelRange: Record; +export declare function isColorValue(colorValue: ColorValue): colorValue is ColorValue; +export declare type ColorValue = HSLColor | HSVColor | HSIColor | RGBColor | RGBAColor | LABColor | LCHColor | CMYKColor; +export {}; diff --git a/vendors/color-schema/0.2.3/esm/src/schema/colorValue.js b/vendors/color-schema/0.2.3/esm/src/schema/colorValue.js new file mode 100644 index 00000000..8d24aa09 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/colorValue.js @@ -0,0 +1,59 @@ +export const HSLValueRange = { + h: [0, 360], + s: [0, 1], + l: [0, 1], +}; +export const HSVValueRange = { + h: [0, 360], + s: [0, 1], + v: [0, 1], +}; +export const HSIValueRange = { + h: [0, 360], + s: [0, 1], + i: [0, 1], +}; +export const RGBValueRange = { + r: [0, 255], + g: [0, 255], + b: [0, 255], +}; +export const RGBAValueRange = { + r: [0, 255], + g: [0, 255], + b: [0, 255], + a: [0, 1], +}; +export const LABRange = { + l: [0, 100], + a: [-86.185, 98.254], + b: [-107.863, 94.482], +}; +export const LCHRange = { + l: [0, 100], + c: [0, 100], + h: [0, 360], +}; +export const CMYKRange = { + c: [0, 1], + m: [0, 1], + y: [0, 1], + k: [0, 1], +}; +export const ColorModelRange = { + lab: LABRange, + lch: LCHRange, + rgb: RGBValueRange, + rgba: RGBAValueRange, + hsl: HSLValueRange, + hsv: HSVValueRange, + hsi: HSIValueRange, + cmyk: CMYKRange, +}; +export function isColorValue(colorValue) { + const { model, value } = colorValue; + const colorModelRange = ColorModelRange[model]; + return (Object.keys(value).sort().join(',') === Object.keys(colorModelRange).sort().join(',') && + Object.entries(value).every(([key, v]) => v >= colorModelRange[key][0] && v <= colorModelRange[key][1])); +} +//# sourceMappingURL=colorValue.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/colorValue.js.map b/vendors/color-schema/0.2.3/esm/src/schema/colorValue.js.map new file mode 100644 index 00000000..a5be2e3c --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/colorValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorValue.js","sourceRoot":"src/","sources":["src/schema/colorValue.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/index.d.ts b/vendors/color-schema/0.2.3/esm/src/schema/index.d.ts new file mode 100644 index 00000000..41d662f4 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/index.d.ts @@ -0,0 +1,5 @@ +import { AssetPack } from './assetPack'; +export declare type ColorSchema = AssetPack; +export * from './palette'; +export * from './color'; +export * from './colorValue'; diff --git a/vendors/color-schema/0.2.3/esm/src/schema/index.js b/vendors/color-schema/0.2.3/esm/src/schema/index.js new file mode 100644 index 00000000..20d502ed --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/index.js @@ -0,0 +1,4 @@ +export * from './palette'; +export * from './color'; +export * from './colorValue'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/index.js.map b/vendors/color-schema/0.2.3/esm/src/schema/index.js.map new file mode 100644 index 00000000..75fac638 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["src/schema/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/palette.d.ts b/vendors/color-schema/0.2.3/esm/src/schema/palette.d.ts new file mode 100644 index 00000000..50bb296c --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/palette.d.ts @@ -0,0 +1,36 @@ +import { Color, ContinuousColor } from './color'; +export declare type ColorSchemeType = 'monochromatic' | 'complementary' | 'split-complementary' | 'achromatic' | 'analogous' | 'triadic' | 'tetradic' | 'polychromatic' | 'customized'; +export interface PaletteBaseInfo { + id?: string; + name: string; + semantic: string | null; + description?: string; + colorScheme?: ColorSchemeType; + usage?: string[]; +} +export declare type PaletteType = 'categorical' | 'discrete-scale' | 'continuous-scale' | 'matrix'; +export declare type CategoricalPalette = PaletteBaseInfo & { + type: 'categorical'; + colors: Color[]; +}; +export declare type DiscreteScalePalette = PaletteBaseInfo & { + type: 'discrete-scale'; + colors: Color[]; +}; +export declare type ContinuousScalePalette = PaletteBaseInfo & { + type: 'continuous-scale'; + colors: ContinuousColor[]; +}; +export declare type MatrixPalette = PaletteBaseInfo & { + type: 'matrix'; + colors: Color[][]; + origin: { + x: Color[]; + y: Color[]; + }; +}; +export declare function isCategoricalPalette(palette: Palette): palette is CategoricalPalette; +export declare function isDiscreteScalePalette(palette: Palette): palette is DiscreteScalePalette; +export declare function isContinuousPalette(palette: Palette): palette is ContinuousScalePalette; +export declare function isMatrixPalette(palette: Palette): palette is MatrixPalette; +export declare type Palette = CategoricalPalette | DiscreteScalePalette | ContinuousScalePalette | MatrixPalette; diff --git a/vendors/color-schema/0.2.3/esm/src/schema/palette.js b/vendors/color-schema/0.2.3/esm/src/schema/palette.js new file mode 100644 index 00000000..fb0e008b --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/palette.js @@ -0,0 +1,21 @@ +export function isCategoricalPalette(palette) { + if (palette.type === 'categorical') + return true; + return false; +} +export function isDiscreteScalePalette(palette) { + if (palette.type === 'discrete-scale') + return true; + return false; +} +export function isContinuousPalette(palette) { + if (palette.type === 'continuous-scale') + return true; + return false; +} +export function isMatrixPalette(palette) { + if (palette.type === 'matrix') + return true; + return false; +} +//# sourceMappingURL=palette.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/esm/src/schema/palette.js.map b/vendors/color-schema/0.2.3/esm/src/schema/palette.js.map new file mode 100644 index 00000000..84b67bc8 --- /dev/null +++ b/vendors/color-schema/0.2.3/esm/src/schema/palette.js.map @@ -0,0 +1 @@ +{"version":3,"file":"palette.js","sourceRoot":"src/","sources":["src/schema/palette.ts"],"names":[],"mappings":"AAgDA,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/__tests__/generated.test.d.ts b/vendors/color-schema/0.2.3/lib/__tests__/generated.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/__tests__/generated.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vendors/color-schema/0.2.3/lib/__tests__/generated.test.js b/vendors/color-schema/0.2.3/lib/__tests__/generated.test.js new file mode 100644 index 00000000..21f05a37 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/__tests__/generated.test.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const ajv_1 = (0, tslib_1.__importDefault)(require("ajv")); +const jest_json_schema_1 = require("jest-json-schema"); +const color_schema_json_1 = (0, tslib_1.__importDefault)(require("../build/color-schema.json")); +const classic_json_1 = (0, tslib_1.__importDefault)(require("../examples/classic.json")); +expect.extend((0, jest_json_schema_1.matchersWithOptions)({ + schemas: [color_schema_json_1.default], +})); +const colorAssets = classic_json_1.default; +describe('test', () => { + test('schema itself is valid', () => { + expect(color_schema_json_1.default).toBeValidSchema(); + }); + it('schema validate', () => { + // by jest-json-schema (powered by ajv) + expect(colorAssets).toMatchSchema(color_schema_json_1.default); + // by ajv + const ajv = new ajv_1.default(); + const validate = ajv.compile(color_schema_json_1.default); + const valid = validate(colorAssets); + expect(valid).toBe(true); + }); +}); +//# sourceMappingURL=generated.test.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/__tests__/generated.test.js.map b/vendors/color-schema/0.2.3/lib/__tests__/generated.test.js.map new file mode 100644 index 00000000..7f7e7c5f --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/__tests__/generated.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generated.test.js","sourceRoot":"src/","sources":["__tests__/generated.test.ts"],"names":[],"mappings":";;;AAAA,2DAAsB;AACtB,uDAAuD;AACvD,gGAAqD;AACrD,yFAA+C;AAE/C,MAAM,CAAC,MAAM,CACX,IAAA,sCAAmB,EAAC;IAClB,OAAO,EAAE,CAAC,2BAAW,CAAC;CACvB,CAAC,CACH,CAAC;AAEF,MAAM,WAAW,GAAG,sBAAO,CAAC;AAE5B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,2BAAW,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,uCAAuC;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,2BAAW,CAAC,CAAC;QAE/C,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,2BAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/__tests__/index.test.d.ts b/vendors/color-schema/0.2.3/lib/__tests__/index.test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/__tests__/index.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vendors/color-schema/0.2.3/lib/__tests__/index.test.js b/vendors/color-schema/0.2.3/lib/__tests__/index.test.js new file mode 100644 index 00000000..1d9fc859 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/__tests__/index.test.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +// import * as colorSchema from "../hand-made-schema.json"; +const ajv_1 = (0, tslib_1.__importDefault)(require("ajv")); +const jest_json_schema_1 = require("jest-json-schema"); +const colorSchema = (0, tslib_1.__importStar)(require("../build/color-schema.json")); +const classic_json_1 = (0, tslib_1.__importDefault)(require("../examples/classic.json")); +expect.extend((0, jest_json_schema_1.matchersWithOptions)({ + schemas: [colorSchema], +})); +const colorAssets = classic_json_1.default; +describe('test', () => { + test('schema itself is valid', () => { + expect(colorSchema).toBeValidSchema(); + }); + it('schema validate', () => { + // by jest-json-schema (powered by ajv) + expect(colorAssets).toMatchSchema(colorSchema); + // by ajv + const ajv = new ajv_1.default(); + const validate = ajv.compile(colorSchema); + const valid = validate(colorAssets); + expect(valid).toBe(true); + }); +}); +//# sourceMappingURL=index.test.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/__tests__/index.test.js.map b/vendors/color-schema/0.2.3/lib/__tests__/index.test.js.map new file mode 100644 index 00000000..ffb75e68 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/__tests__/index.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.test.js","sourceRoot":"src/","sources":["__tests__/index.test.ts"],"names":[],"mappings":";;;AAAA,2DAA2D;AAC3D,2DAAsB;AACtB,uDAAuD;AACvD,qFAA0D;AAC1D,yFAA+C;AAE/C,MAAM,CAAC,MAAM,CACX,IAAA,sCAAmB,EAAC;IAClB,OAAO,EAAE,CAAC,WAAW,CAAC;CACvB,CAAC,CACH,CAAC;AAEF,MAAM,WAAW,GAAG,sBAAO,CAAC;AAE5B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,uCAAuC;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE/C,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/build/color-schema.json b/vendors/color-schema/0.2.3/lib/build/color-schema.json new file mode 100644 index 00000000..fa6f023f --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/build/color-schema.json @@ -0,0 +1,1056 @@ +{ + "$ref": "#/definitions/ColorSchema", + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "AssetPack": { + "additionalProperties": false, + "properties": { + "brandName": { + "type": "string" + }, + "palettes": { + "items": { + "$ref": "#/definitions/Palette" + }, + "type": "array" + } + }, + "required": [ + "brandName", + "palettes" + ], + "type": "object" + }, + "CMYKValue": { + "additionalProperties": false, + "properties": { + "c": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "k": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "m": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "c", + "m", + "y", + "k" + ], + "type": "object" + }, + "CategoricalPalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "categorical", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "Color": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsl", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSLValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsv", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSVValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "hsi", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSIValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "rgb", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "rgba", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBAValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "lab", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LABValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "lch", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LCHValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "model": { + "const": "cmyk", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/CMYKValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + } + ] + }, + "ColorSchema": { + "$ref": "#/definitions/AssetPack" + }, + "ColorSchemeType": { + "enum": [ + "monochromatic", + "complementary", + "split-complementary", + "achromatic", + "analogous", + "triadic", + "tetradic", + "polychromatic", + "customized" + ], + "type": "string" + }, + "ContinuousColor": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsl", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSLValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsv", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSVValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "hsi", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/HSIValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "rgb", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "rgba", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/RGBAValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "lab", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LABValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "lch", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/LCHValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "location": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "model": { + "const": "cmyk", + "type": "string" + }, + "name": { + "type": "string" + }, + "undertone": { + "$ref": "#/definitions/Undertone" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "$ref": "#/definitions/CMYKValue" + } + }, + "required": [ + "model", + "value" + ], + "type": "object" + } + ] + }, + "ContinuousScalePalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/ContinuousColor" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "continuous-scale", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "DiscreteScalePalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "discrete-scale", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "semantic", + "type" + ], + "type": "object" + }, + "HSIValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "i": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "i" + ], + "type": "object" + }, + "HSLValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "l": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "l" + ], + "type": "object" + }, + "HSVValue": { + "additionalProperties": false, + "properties": { + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "s": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "v": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "h", + "s", + "v" + ], + "type": "object" + }, + "LABValue": { + "additionalProperties": false, + "properties": { + "a": { + "maximum": 98.254, + "minimum": -86.185, + "type": "number" + }, + "b": { + "maximum": 94.482, + "minimum": -107.863, + "type": "number" + }, + "l": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "l", + "a", + "b" + ], + "type": "object" + }, + "LCHValue": { + "additionalProperties": false, + "properties": { + "c": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "h": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "l": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "l", + "c", + "h" + ], + "type": "object" + }, + "MatrixPalette": { + "additionalProperties": false, + "properties": { + "colorScheme": { + "$ref": "#/definitions/ColorSchemeType" + }, + "colors": { + "items": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "origin": { + "additionalProperties": false, + "properties": { + "x": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + }, + "y": { + "items": { + "$ref": "#/definitions/Color" + }, + "type": "array" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "semantic": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "matrix", + "type": "string" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "colors", + "name", + "origin", + "semantic", + "type" + ], + "type": "object" + }, + "Palette": { + "anyOf": [ + { + "$ref": "#/definitions/CategoricalPalette" + }, + { + "$ref": "#/definitions/DiscreteScalePalette" + }, + { + "$ref": "#/definitions/ContinuousScalePalette" + }, + { + "$ref": "#/definitions/MatrixPalette" + } + ] + }, + "RGBAValue": { + "additionalProperties": false, + "properties": { + "a": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "b": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "r", + "g", + "b", + "a" + ], + "type": "object" + }, + "RGBValue": { + "additionalProperties": false, + "properties": { + "b": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "number" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "r", + "g", + "b" + ], + "type": "object" + }, + "Undertone": { + "enum": [ + "warm", + "neutral", + "cool" + ], + "type": "string" + } + } +} diff --git a/vendors/color-schema/0.2.3/lib/examples/classic.json b/vendors/color-schema/0.2.3/lib/examples/classic.json new file mode 100644 index 00000000..9cf335ec --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/examples/classic.json @@ -0,0 +1,137 @@ +{ + "brandName": "antd", + "palettes": [ + { + "name": "trinity", + "semantic": "three", + "type": "categorical", + "colors": [ + { + "model": "rgb", + "value": { "r": 255, "g": 0, "b": 0 }, + "name": "red", + "undertone": "warm", + "usage": ["danger", "apple"] + }, + { + "model": "rgb", + "value": { "r": 0, "g": 255, "b": 0 }, + "name": "green", + "undertone": "neutral" + }, + { + "model": "rgb", + "value": { "r": 0, "g": 0, "b": 255 }, + "name": "blue", + "undertone": "cool" + } + ], + "usage": ["highlight"] + }, + { + "name": "scale1", + "semantic": "passional", + "type": "discrete-scale", + "colors": [ + { "model": "rgb", "value": { "r": 255, "g": 247, "b": 236 } }, + { "model": "rgb", "value": { "r": 253, "g": 212, "b": 158 } }, + { "model": "rgb", "value": { "r": 252, "g": 141, "b": 89 } }, + { "model": "rgb", "value": { "r": 215, "g": 48, "b": 31 } }, + { "model": "rgb", "value": { "r": 127, "g": 0, "b": 0 } } + ], + "usage": ["visualization"] + }, + { + "name": "Leaf Yellow", + "semantic": "tranquil", + "type": "discrete-scale", + "description": "Colors of leaves in different seasons.", + "colors": [ + { "model": "rgb", "value": { "r": 255, "g": 235, "b": 176 } }, + { "model": "rgb", "value": { "r": 255, "g": 223, "b": 128 } }, + { "model": "rgb", "value": { "r": 250, "g": 202, "b": 62 } }, + { "model": "rgb", "value": { "r": 230, "g": 184, "b": 1 } }, + { "model": "rgb", "value": { "r": 181, "g": 172, "b": 35 } }, + { "model": "rgb", "value": { "r": 106, "g": 154, "b": 72 } }, + { "model": "rgb", "value": { "r": 32, "g": 135, "b": 107 } }, + { "model": "rgb", "value": { "r": 6, "g": 116, "b": 107 } }, + { "model": "rgb", "value": { "r": 4, "g": 78, "b": 72 } } + ] + }, + { + "name": "scale3", + "semantic": "passional", + "type": "continuous-scale", + "colors": [ + { "model": "rgb", "value": { "r": 255, "g": 247, "b": 236 }, "location": 0 }, + { "model": "rgb", "value": { "r": 252, "g": 141, "b": 89 }, "location": 0.2 }, + { "model": "rgb", "value": { "r": 127, "g": 0, "b": 0 }, "location": 1 } + ] + }, + { + "name": "Matrix", + "semantic": "mysterious", + "type": "matrix", + "colors": [ + [{ + "model": "rgb", + "value": { "r": 139, "g": 89, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 103, "g": 82, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 20, "g": 68, "b": 237 } + }], + [{ + "model": "rgb", + "value": { "r": 183, "g": 141, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 136, "g": 129, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 27, "g": 107, "b": 237 } + }], + [{ + "model": "rgb", + "value": { "r": 215, "g": 209, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 160, "g": 191, "b": 255 } + }, { + "model": "rgb", + "value": { "r": 32, "g": 159, "b": 237 } + }] + ], + "origin": { + "x": [{ + "model": "rgb", + "value": { "r": 215, "g": 209, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 160, "g": 191, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 32, "g": 159, "b": 237 } + }], + "y": [{ + "model": "rgb", + "value": { "r": 215, "g": 209, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 183, "g": 141, "b": 255 } + }, + { + "model": "rgb", + "value": { "r": 139, "g": 89, "b": 255 } + }] + } + } + ] +} diff --git a/vendors/color-schema/0.2.3/lib/package.json b/vendors/color-schema/0.2.3/lib/package.json new file mode 100644 index 00000000..d7050b27 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/package.json @@ -0,0 +1,111 @@ +{ + "name": "@antv/color-schema", + "version": "0.2.3", + "description": "JSON Schema for Color Palette", + "main": "lib/src/index.js", + "types": "lib/src/index.d.ts", + "unpkg": "dist/index.min.js", + "module": "esm/src/index.js", + "files": [ + "src", + "esm", + "lib", + "build" + ], + "scripts": { + "clean": "rimraf lib esm dist", + "lint-staged": "lint-staged", + "size": "limit-size", + "format": "prettier --write \"src/**/*.ts\" \"__tests__/**/*.ts\" \"demo/**/*.{ts,tsx}\"", + "format-check": " prettier ./src/**/*.ts ./__tests__/**/*.ts ./demo/**/*.{ts,tsx} --check", + "lint": "eslint ./src/**/*.ts ./__tests__/**/*.ts ./demo/**/*.{ts,tsx} && npm run format-check", + "fix": "eslint ./src/**/*.ts ./__tests__/**/*.ts ./demo/**/*.{ts,tsx} --fix && npm run format", + "test": "jest", + "build:umd": "rimraf ./dist && rollup -c && npm run size", + "build:cjs": "rimraf ./lib && tsc --module commonjs --outDir lib", + "build:esm": "rimraf ./esm && tsc --module ESNext --outDir esm", + "build": "run-p build:*", + "schema": "mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t ColorSchema --no-type-check --no-ref-encode > build/color-schema.json", + "ci": "run-s lint test build schema", + "prepublishOnly": "npm run ci", + "prepare": "husky install", + "setup:demo": "cd demo && npm install --package-lock=false", + "start:demo": "npm run setup:demo && cd demo && npm start", + "deploy:site": "cd demo && npm run deploy:site", + "preversion": "npm run lint", + "version": "npm run format && git add -A src", + "postversion": "git push && git push --tags", + "one-stop-setup": "npm install --package-lock=false && run-s build setup:demo" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/antvis/color-schema.git" + }, + "author": { + "name": "AntV", + "url": "https://antv.vision/" + }, + "license": "MIT", + "homepage": "https://antvis.github.io/color-schema", + "publishConfig": { + "access": "public" + }, + "bugs": { + "url": "https://github.com/antvis/color-schema/issues" + }, + "dependencies": { + "@types/chroma-js": "^2.1.3" + }, + "devDependencies": { + "@babel/runtime": "^7.13.10", + "@commitlint/cli": "^12.1.4", + "@commitlint/config-conventional": "^12.1.4", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-typescript": "^8.2.1", + "@types/jest": "^26.0.22", + "@types/jest-json-schema": "^2.1.3", + "@typescript-eslint/eslint-plugin": "^4.28.3", + "@typescript-eslint/parser": "^4.28.3", + "ajv": "^8.0.4", + "chroma-js": "^2.1.1", + "eslint": "^7.29.0", + "eslint-config-airbnb": "^18.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.24.0", + "husky": "^7.0.1", + "jest": "^26.6.3", + "jest-json-schema": "^5.0.0", + "limit-size": "^0.1.4", + "lint-staged": "^11.0.1", + "npm-run-all": "^4.1.5", + "prettier": "^2.3.0", + "rimraf": "^3.0.2", + "rollup": "^2.53.1", + "rollup-plugin-terser": "^7.0.2", + "ts-jest": "^26.5.4", + "ts-json-schema-generator": "^0.89.2", + "typescript": "^4.2.4" + }, + "lint-staged": { + "*.{ts,tsx}": [ + "eslint --fix", + "prettier --write", + "git add" + ] + }, + "limit-size": [ + { + "path": "dist/index.min.js", + "limit": "8 Kb", + "gzip": true + }, + { + "path": "dist/index.min.js", + "limit": "24 Kb" + } + ] +} diff --git a/vendors/color-schema/0.2.3/lib/src/index.d.ts b/vendors/color-schema/0.2.3/lib/src/index.d.ts new file mode 100644 index 00000000..48252c7a --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/index.d.ts @@ -0,0 +1,2 @@ +export declare const version: string; +export * from './schema'; diff --git a/vendors/color-schema/0.2.3/lib/src/index.js b/vendors/color-schema/0.2.3/lib/src/index.js new file mode 100644 index 00000000..6c072ad9 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.version = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = (0, tslib_1.__importDefault)(require("../package.json")); +exports.version = package_json_1.default.version; +(0, tslib_1.__exportStar)(require("./schema"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/index.js.map b/vendors/color-schema/0.2.3/lib/src/index.js.map new file mode 100644 index 00000000..d439ed3a --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["src/index.ts"],"names":[],"mappings":";;;;AAAA,gFAAkC;AACrB,QAAA,OAAO,GAAG,sBAAG,CAAC,OAAO,CAAC;AAEnC,wDAAyB"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/assetPack.d.ts b/vendors/color-schema/0.2.3/lib/src/schema/assetPack.d.ts new file mode 100644 index 00000000..fc4750b6 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/assetPack.d.ts @@ -0,0 +1,5 @@ +import { Palette } from './palette'; +export interface AssetPack { + brandName: string; + palettes: Palette[]; +} diff --git a/vendors/color-schema/0.2.3/lib/src/schema/assetPack.js b/vendors/color-schema/0.2.3/lib/src/schema/assetPack.js new file mode 100644 index 00000000..8c602740 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/assetPack.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=assetPack.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/assetPack.js.map b/vendors/color-schema/0.2.3/lib/src/schema/assetPack.js.map new file mode 100644 index 00000000..f5c71073 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/assetPack.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assetPack.js","sourceRoot":"src/","sources":["src/schema/assetPack.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/color.d.ts b/vendors/color-schema/0.2.3/lib/src/schema/color.d.ts new file mode 100644 index 00000000..b33c1700 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/color.d.ts @@ -0,0 +1,17 @@ +import { ColorValue } from './colorValue'; +export declare type Undertone = 'warm' | 'neutral' | 'cool'; +export interface ColorBaseInfo { + id?: string; + name?: string; + undertone?: Undertone; + usage?: string[]; +} +export declare type Color = ColorBaseInfo & ColorValue; +export declare type ContinuousColor = Color & { + /** + * @minimum 0 + * @maximum 1 + */ + location?: number; +}; +export declare function colorToHex(color: Color): string; diff --git a/vendors/color-schema/0.2.3/lib/src/schema/color.js b/vendors/color-schema/0.2.3/lib/src/schema/color.js new file mode 100644 index 00000000..480949d1 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/color.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorToHex = void 0; +const tslib_1 = require("tslib"); +const chroma_js_1 = (0, tslib_1.__importDefault)(require("chroma-js")); +const isChromaColor = (color) => { + if (chroma_js_1.default.valid(color)) { + return true; + } + return false; +}; +function colorToHex(color) { + const { value } = color; + if (isChromaColor(value)) { + return (0, chroma_js_1.default)(value).hex(); + } + return ''; +} +exports.colorToHex = colorToHex; +//# sourceMappingURL=color.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/color.js.map b/vendors/color-schema/0.2.3/lib/src/schema/color.js.map new file mode 100644 index 00000000..126706fb --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/color.js.map @@ -0,0 +1 @@ +{"version":3,"file":"color.js","sourceRoot":"src/","sources":["src/schema/color.ts"],"names":[],"mappings":";;;;AAAA,uEAAyD;AAsBzD,MAAM,aAAa,GAAG,CAAC,KAAU,EAAwB,EAAE;IACzD,IAAI,mBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,SAAgB,UAAU,CAAC,KAAY;IACrC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,IAAA,mBAAM,EAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;KAC5B;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AARD,gCAQC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/colorValue.d.ts b/vendors/color-schema/0.2.3/lib/src/schema/colorValue.d.ts new file mode 100644 index 00000000..e7f6238e --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/colorValue.d.ts @@ -0,0 +1,195 @@ +export declare type ColorModel = 'hsl' | 'hsv' | 'hsi' | 'rgb' | 'rgba' | 'lab' | 'lch' | 'cmyk'; +export interface HSLValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + l: number; +} +declare type range = [number, number]; +export declare const HSLValueRange: Record; +export interface HSLColor { + model: 'hsl'; + value: HSLValue; +} +export interface HSVValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + v: number; +} +export declare const HSVValueRange: Record; +export interface HSVColor { + model: 'hsv'; + value: HSVValue; +} +export interface HSIValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + i: number; +} +export declare const HSIValueRange: Record; +export interface HSIColor { + model: 'hsi'; + value: HSIValue; +} +export interface RGBValue { + /** + * @minimum 0 + * @maximum 255 + */ + r: number; + /** + * @minimum 0 + * @maximum 255 + */ + g: number; + /** + * @minimum 0 + * @maximum 255 + */ + b: number; +} +export declare const RGBValueRange: Record; +export interface RGBColor { + model: 'rgb'; + value: RGBValue; +} +export interface RGBAValue { + /** + * @minimum 0 + * @maximum 255 + */ + r: number; + /** + * @minimum 0 + * @maximum 255 + */ + g: number; + /** + * @minimum 0 + * @maximum 255 + */ + b: number; + /** + * @minimum 0 + * @maximum 1 + */ + a: number; +} +export declare const RGBAValueRange: Record; +export interface RGBAColor { + model: 'rgba'; + value: RGBAValue; +} +export interface LABValue { + /** + * @minimum 0 + * @maximum 100 + */ + l: number; + /** + * @minimum -86.185 + * @maximum 98.254 + */ + a: number; + /** + * @minimum -107.863 + * @maximum 94.482 + */ + b: number; +} +export declare const LABRange: Record; +export interface LABColor { + model: 'lab'; + value: LABValue; +} +export interface LCHValue { + /** + * @minimum 0 + * @maximum 100 + */ + l: number; + /** + * @minimum 0 + * @maximum 100 + */ + c: number; + /** + * @minimum 0 + * @maximum 360 + */ + h: number; +} +export declare const LCHRange: Record; +export interface LCHColor { + model: 'lch'; + value: LCHValue; +} +export interface CMYKValue { + /** + * @minimum 0 + * @maximum 1 + */ + c: number; + /** + * @minimum 0 + * @maximum 1 + */ + m: number; + /** + * @minimum 0 + * @maximum 1 + */ + y: number; + /** + * @minimum 0 + * @maximum 1 + */ + k: number; +} +export declare const CMYKRange: Record; +export interface CMYKColor { + model: 'cmyk'; + value: CMYKValue; +} +interface ColorModelInfo { + [key: string]: range; +} +export declare const ColorModelRange: Record; +export declare function isColorValue(colorValue: ColorValue): colorValue is ColorValue; +export declare type ColorValue = HSLColor | HSVColor | HSIColor | RGBColor | RGBAColor | LABColor | LCHColor | CMYKColor; +export {}; diff --git a/vendors/color-schema/0.2.3/lib/src/schema/colorValue.js b/vendors/color-schema/0.2.3/lib/src/schema/colorValue.js new file mode 100644 index 00000000..5a75f357 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/colorValue.js @@ -0,0 +1,63 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isColorValue = exports.ColorModelRange = exports.CMYKRange = exports.LCHRange = exports.LABRange = exports.RGBAValueRange = exports.RGBValueRange = exports.HSIValueRange = exports.HSVValueRange = exports.HSLValueRange = void 0; +exports.HSLValueRange = { + h: [0, 360], + s: [0, 1], + l: [0, 1], +}; +exports.HSVValueRange = { + h: [0, 360], + s: [0, 1], + v: [0, 1], +}; +exports.HSIValueRange = { + h: [0, 360], + s: [0, 1], + i: [0, 1], +}; +exports.RGBValueRange = { + r: [0, 255], + g: [0, 255], + b: [0, 255], +}; +exports.RGBAValueRange = { + r: [0, 255], + g: [0, 255], + b: [0, 255], + a: [0, 1], +}; +exports.LABRange = { + l: [0, 100], + a: [-86.185, 98.254], + b: [-107.863, 94.482], +}; +exports.LCHRange = { + l: [0, 100], + c: [0, 100], + h: [0, 360], +}; +exports.CMYKRange = { + c: [0, 1], + m: [0, 1], + y: [0, 1], + k: [0, 1], +}; +exports.ColorModelRange = { + lab: exports.LABRange, + lch: exports.LCHRange, + rgb: exports.RGBValueRange, + rgba: exports.RGBAValueRange, + hsl: exports.HSLValueRange, + hsv: exports.HSVValueRange, + hsi: exports.HSIValueRange, + cmyk: exports.CMYKRange, +}; +function isColorValue(colorValue) { + const { model, value } = colorValue; + const colorModelRange = exports.ColorModelRange[model]; + return (Object.keys(value).sort().join(',') === Object.keys(colorModelRange).sort().join(',') && + Object.entries(value).every(([key, v]) => v >= colorModelRange[key][0] && v <= colorModelRange[key][1])); +} +exports.isColorValue = isColorValue; +//# sourceMappingURL=colorValue.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/colorValue.js.map b/vendors/color-schema/0.2.3/lib/src/schema/colorValue.js.map new file mode 100644 index 00000000..d621a863 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/colorValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorValue.js","sourceRoot":"src/","sources":["src/schema/colorValue.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/index.d.ts b/vendors/color-schema/0.2.3/lib/src/schema/index.d.ts new file mode 100644 index 00000000..41d662f4 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/index.d.ts @@ -0,0 +1,5 @@ +import { AssetPack } from './assetPack'; +export declare type ColorSchema = AssetPack; +export * from './palette'; +export * from './color'; +export * from './colorValue'; diff --git a/vendors/color-schema/0.2.3/lib/src/schema/index.js b/vendors/color-schema/0.2.3/lib/src/schema/index.js new file mode 100644 index 00000000..f2df0385 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/index.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +(0, tslib_1.__exportStar)(require("./palette"), exports); +(0, tslib_1.__exportStar)(require("./color"), exports); +(0, tslib_1.__exportStar)(require("./colorValue"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/index.js.map b/vendors/color-schema/0.2.3/lib/src/schema/index.js.map new file mode 100644 index 00000000..ea2157d3 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["src/schema/index.ts"],"names":[],"mappings":";;;AAIA,yDAA0B;AAC1B,uDAAwB;AACxB,4DAA6B"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/palette.d.ts b/vendors/color-schema/0.2.3/lib/src/schema/palette.d.ts new file mode 100644 index 00000000..50bb296c --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/palette.d.ts @@ -0,0 +1,36 @@ +import { Color, ContinuousColor } from './color'; +export declare type ColorSchemeType = 'monochromatic' | 'complementary' | 'split-complementary' | 'achromatic' | 'analogous' | 'triadic' | 'tetradic' | 'polychromatic' | 'customized'; +export interface PaletteBaseInfo { + id?: string; + name: string; + semantic: string | null; + description?: string; + colorScheme?: ColorSchemeType; + usage?: string[]; +} +export declare type PaletteType = 'categorical' | 'discrete-scale' | 'continuous-scale' | 'matrix'; +export declare type CategoricalPalette = PaletteBaseInfo & { + type: 'categorical'; + colors: Color[]; +}; +export declare type DiscreteScalePalette = PaletteBaseInfo & { + type: 'discrete-scale'; + colors: Color[]; +}; +export declare type ContinuousScalePalette = PaletteBaseInfo & { + type: 'continuous-scale'; + colors: ContinuousColor[]; +}; +export declare type MatrixPalette = PaletteBaseInfo & { + type: 'matrix'; + colors: Color[][]; + origin: { + x: Color[]; + y: Color[]; + }; +}; +export declare function isCategoricalPalette(palette: Palette): palette is CategoricalPalette; +export declare function isDiscreteScalePalette(palette: Palette): palette is DiscreteScalePalette; +export declare function isContinuousPalette(palette: Palette): palette is ContinuousScalePalette; +export declare function isMatrixPalette(palette: Palette): palette is MatrixPalette; +export declare type Palette = CategoricalPalette | DiscreteScalePalette | ContinuousScalePalette | MatrixPalette; diff --git a/vendors/color-schema/0.2.3/lib/src/schema/palette.js b/vendors/color-schema/0.2.3/lib/src/schema/palette.js new file mode 100644 index 00000000..47559fcd --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/palette.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isMatrixPalette = exports.isContinuousPalette = exports.isDiscreteScalePalette = exports.isCategoricalPalette = void 0; +function isCategoricalPalette(palette) { + if (palette.type === 'categorical') + return true; + return false; +} +exports.isCategoricalPalette = isCategoricalPalette; +function isDiscreteScalePalette(palette) { + if (palette.type === 'discrete-scale') + return true; + return false; +} +exports.isDiscreteScalePalette = isDiscreteScalePalette; +function isContinuousPalette(palette) { + if (palette.type === 'continuous-scale') + return true; + return false; +} +exports.isContinuousPalette = isContinuousPalette; +function isMatrixPalette(palette) { + if (palette.type === 'matrix') + return true; + return false; +} +exports.isMatrixPalette = isMatrixPalette; +//# sourceMappingURL=palette.js.map \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/lib/src/schema/palette.js.map b/vendors/color-schema/0.2.3/lib/src/schema/palette.js.map new file mode 100644 index 00000000..3c8f4400 --- /dev/null +++ b/vendors/color-schema/0.2.3/lib/src/schema/palette.js.map @@ -0,0 +1 @@ +{"version":3,"file":"palette.js","sourceRoot":"src/","sources":["src/schema/palette.ts"],"names":[],"mappings":";;;AAgDA,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,oDAGC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,wDAGC;AAED,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,kDAGC;AAED,SAAgB,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,0CAGC"} \ No newline at end of file diff --git a/vendors/color-schema/0.2.3/src/index.ts b/vendors/color-schema/0.2.3/src/index.ts new file mode 100644 index 00000000..47ded7ea --- /dev/null +++ b/vendors/color-schema/0.2.3/src/index.ts @@ -0,0 +1,4 @@ +import pkg from '../package.json'; +export const version = pkg.version; + +export * from './schema'; diff --git a/vendors/color-schema/0.2.3/src/schema/assetPack.ts b/vendors/color-schema/0.2.3/src/schema/assetPack.ts new file mode 100644 index 00000000..2062ec4d --- /dev/null +++ b/vendors/color-schema/0.2.3/src/schema/assetPack.ts @@ -0,0 +1,6 @@ +import { Palette } from './palette'; + +export interface AssetPack { + brandName: string; + palettes: Palette[]; +} diff --git a/vendors/color-schema/0.2.3/src/schema/color.ts b/vendors/color-schema/0.2.3/src/schema/color.ts new file mode 100644 index 00000000..6f22d97d --- /dev/null +++ b/vendors/color-schema/0.2.3/src/schema/color.ts @@ -0,0 +1,38 @@ +import chroma, { Color as ChromaColor } from 'chroma-js'; +import { ColorValue } from './colorValue'; + +export type Undertone = 'warm' | 'neutral' | 'cool'; + +export interface ColorBaseInfo { + id?: string; + name?: string; + undertone?: Undertone; + usage?: string[]; +} + +export type Color = ColorBaseInfo & ColorValue; + +export type ContinuousColor = Color & { + /** + * @minimum 0 + * @maximum 1 + */ + location?: number; +}; + +const isChromaColor = (color: any): color is ChromaColor => { + if (chroma.valid(color)) { + return true; + } + return false; +}; + +export function colorToHex(color: Color): string { + const { value } = color; + + if (isChromaColor(value)) { + return chroma(value).hex(); + } + + return ''; +} diff --git a/vendors/color-schema/0.2.3/src/schema/colorValue.ts b/vendors/color-schema/0.2.3/src/schema/colorValue.ts new file mode 100644 index 00000000..863b4807 --- /dev/null +++ b/vendors/color-schema/0.2.3/src/schema/colorValue.ts @@ -0,0 +1,273 @@ +export type ColorModel = 'hsl' | 'hsv' | 'hsi' | 'rgb' | 'rgba' | 'lab' | 'lch' | 'cmyk'; + +export interface HSLValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + l: number; +} + +type range = [number, number]; +export const HSLValueRange: Record = { + h: [0, 360], + s: [0, 1], + l: [0, 1], +}; + +export interface HSLColor { + model: 'hsl'; + value: HSLValue; +} + +export interface HSVValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + v: number; +} + +export const HSVValueRange: Record = { + h: [0, 360], + s: [0, 1], + v: [0, 1], +}; + +export interface HSVColor { + model: 'hsv'; + value: HSVValue; +} + +export interface HSIValue { + /** + * @minimum 0 + * @maximum 360 + */ + h: number; + /** + * @minimum 0 + * @maximum 1 + */ + s: number; + /** + * @minimum 0 + * @maximum 1 + */ + i: number; +} + +export const HSIValueRange: Record = { + h: [0, 360], + s: [0, 1], + i: [0, 1], +}; + +export interface HSIColor { + model: 'hsi'; + value: HSIValue; +} + +export interface RGBValue { + /** + * @minimum 0 + * @maximum 255 + */ + r: number; + /** + * @minimum 0 + * @maximum 255 + */ + g: number; + /** + * @minimum 0 + * @maximum 255 + */ + b: number; +} + +export const RGBValueRange: Record = { + r: [0, 255], + g: [0, 255], + b: [0, 255], +}; + +export interface RGBColor { + model: 'rgb'; + value: RGBValue; +} + +export interface RGBAValue { + /** + * @minimum 0 + * @maximum 255 + */ + r: number; + /** + * @minimum 0 + * @maximum 255 + */ + g: number; + /** + * @minimum 0 + * @maximum 255 + */ + b: number; + /** + * @minimum 0 + * @maximum 1 + */ + a: number; +} + +export const RGBAValueRange: Record = { + r: [0, 255], + g: [0, 255], + b: [0, 255], + a: [0, 1], +}; + +export interface RGBAColor { + model: 'rgba'; + value: RGBAValue; +} + +export interface LABValue { + /** + * @minimum 0 + * @maximum 100 + */ + l: number; + /** + * @minimum -86.185 + * @maximum 98.254 + */ + a: number; + /** + * @minimum -107.863 + * @maximum 94.482 + */ + b: number; +} + +export const LABRange: Record = { + l: [0, 100], + a: [-86.185, 98.254], + b: [-107.863, 94.482], +}; + +export interface LABColor { + model: 'lab'; + value: LABValue; +} + +export interface LCHValue { + /** + * @minimum 0 + * @maximum 100 + */ + l: number; + /** + * @minimum 0 + * @maximum 100 + */ + c: number; + /** + * @minimum 0 + * @maximum 360 + */ + h: number; +} + +export const LCHRange: Record = { + l: [0, 100], + c: [0, 100], + h: [0, 360], +}; + +export interface LCHColor { + model: 'lch'; + value: LCHValue; +} + +export interface CMYKValue { + /** + * @minimum 0 + * @maximum 1 + */ + c: number; + /** + * @minimum 0 + * @maximum 1 + */ + m: number; + /** + * @minimum 0 + * @maximum 1 + */ + y: number; + /** + * @minimum 0 + * @maximum 1 + */ + k: number; +} + +export const CMYKRange: Record = { + c: [0, 1], + m: [0, 1], + y: [0, 1], + k: [0, 1], +}; + +export interface CMYKColor { + model: 'cmyk'; + value: CMYKValue; +} + +interface ColorModelInfo { + [key: string]: range; +} + +export const ColorModelRange: Record = { + lab: LABRange, + lch: LCHRange, + rgb: RGBValueRange, + rgba: RGBAValueRange, + hsl: HSLValueRange, + hsv: HSVValueRange, + hsi: HSIValueRange, + cmyk: CMYKRange, +}; + +export function isColorValue(colorValue: ColorValue): colorValue is ColorValue { + const { model, value } = colorValue; + const colorModelRange = ColorModelRange[model]; + + return ( + Object.keys(value).sort().join(',') === Object.keys(colorModelRange).sort().join(',') && + Object.entries(value).every(([key, v]) => v >= colorModelRange[key][0] && v <= colorModelRange[key][1]) + ); +} + +export type ColorValue = HSLColor | HSVColor | HSIColor | RGBColor | RGBAColor | LABColor | LCHColor | CMYKColor; diff --git a/vendors/color-schema/0.2.3/src/schema/index.ts b/vendors/color-schema/0.2.3/src/schema/index.ts new file mode 100644 index 00000000..d046c5c0 --- /dev/null +++ b/vendors/color-schema/0.2.3/src/schema/index.ts @@ -0,0 +1,7 @@ +import { AssetPack } from './assetPack'; + +export type ColorSchema = AssetPack; + +export * from './palette'; +export * from './color'; +export * from './colorValue'; diff --git a/vendors/color-schema/0.2.3/src/schema/palette.ts b/vendors/color-schema/0.2.3/src/schema/palette.ts new file mode 100644 index 00000000..0cc51c75 --- /dev/null +++ b/vendors/color-schema/0.2.3/src/schema/palette.ts @@ -0,0 +1,69 @@ +import { Color, ContinuousColor } from './color'; + +export type ColorSchemeType = + | 'monochromatic' + | 'complementary' + | 'split-complementary' + | 'achromatic' + | 'analogous' + | 'triadic' + | 'tetradic' + | 'polychromatic' + | 'customized'; + +export interface PaletteBaseInfo { + id?: string; + name: string; + semantic: string | null; + description?: string; + colorScheme?: ColorSchemeType; + usage?: string[]; +} + +export type PaletteType = 'categorical' | 'discrete-scale' | 'continuous-scale' | 'matrix'; + +export type CategoricalPalette = PaletteBaseInfo & { + type: 'categorical'; + colors: Color[]; +}; + +export type DiscreteScalePalette = PaletteBaseInfo & { + type: 'discrete-scale'; + colors: Color[]; +}; + +export type ContinuousScalePalette = PaletteBaseInfo & { + type: 'continuous-scale'; + colors: ContinuousColor[]; +}; + +export type MatrixPalette = PaletteBaseInfo & { + type: 'matrix'; + colors: Color[][]; + origin: { + x: Color[]; + y: Color[]; + }; +}; + +export function isCategoricalPalette(palette: Palette): palette is CategoricalPalette { + if (palette.type === 'categorical') return true; + return false; +} + +export function isDiscreteScalePalette(palette: Palette): palette is DiscreteScalePalette { + if (palette.type === 'discrete-scale') return true; + return false; +} + +export function isContinuousPalette(palette: Palette): palette is ContinuousScalePalette { + if (palette.type === 'continuous-scale') return true; + return false; +} + +export function isMatrixPalette(palette: Palette): palette is MatrixPalette { + if (palette.type === 'matrix') return true; + return false; +} + +export type Palette = CategoricalPalette | DiscreteScalePalette | ContinuousScalePalette | MatrixPalette; diff --git a/vendors/color-schema/LICENSE b/vendors/color-schema/LICENSE new file mode 100644 index 00000000..a5b36357 --- /dev/null +++ b/vendors/color-schema/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 AntV team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendors/color-schema/README.md b/vendors/color-schema/README.md new file mode 100644 index 00000000..5567a48c --- /dev/null +++ b/vendors/color-schema/README.md @@ -0,0 +1,228 @@ + English | [简体中文](./README.zh-CN.md) + +

+@antv/color-schema +

+ +
+A JSON schema used to regulate semantic color assets or palettes. +
+ +## ✨ Features +* **Validate**: Validate data with JSON schema. +* **Develop**: Develop with types and interfaces. + +## 📖 Example + +```js +{ + brandName: "antd", + palettes: [ + { + name: "trinity", + semantic: "three", + type: "categorical", + colors: [ + { + model: "rgb", + value: { r: 255, g: 0, b: 0 }, + name: "red", + undertone: "warm", + usage: [ "danger", "apple" ] + }, + { + model: "rgb", + value: { r: 0, g: 255, b: 0 }, + name: "green", + undertone: "neutral" + }, + { + model: "rgb", + value: { r: 0, g: 0, b: 255 }, + name: "blue", + undertone: "cool" + } + ] + }, + { + name: "Leaf Yellow", + semantic: "tranquil", + type: "discrete-scale", + description: "Colors of leaves in different seasons.", + colors: [ + { model: "rgb", value: { r: 255, g: 235, b: 176} }, + { model: "rgb", value: { r: 255, g: 223, b: 128} }, + { model: "rgb", value: { r: 250, g: 202, b: 62 }, + { model: "rgb", value: { r: 230, g: 184, b: 1 }, + { model: "rgb", value: { r: 181, g: 172, b: 35} }, + { model: "rgb", value: { r: 106, g: 154, b: 72} }, + { model: "rgb", value: { r: 32, g: 135, b: 107} }, + { model: "rgb", value: { r: 6, g: 116, b: 107} }, + { model: "rgb", value: { r: 4, g: 78, b: 72} } + ], + "usage": ["visualization"] + }, + { + name: "scale3", + semantic: "passional", + type: "continuous-scale", + colors: [ + { model: "rgb", value: {r: 255, g: 247, b: 236}, location: 0 }, + { model: "rgb", value: {r: 252, g: 141, b: 89}, location: 0.2 }, + { model: "rgb", value: {r: 127, g: 0, b: 0}, location: 1 } + ] + }, + { + name: "Matrix", + semantic: "mysterious", + type: "matrix", + colors: [ + [ + { model: "rgb", value: { r: 139, g: 89, b: 255 } }, + { model: "rgb", value: { r: 103, g: 82, b: 255 } }, + { model: "rgb", value: { r: 20, g: 68, b: 237 } } + ], + [ + { model: "rgb", value: { r: 183, g: 141, b: 255 } }, + { model: "rgb", value: { r: 136, g: 129, b: 255 } }, + { model: "rgb", value: { r: 27, g: 107, b: 237 } } + ], + [ + { model: "rgb", value: { r: 215, g: 209, b: 255 } }, + { model: "rgb", value: { r: 160, g: 191, b: 255 } }, + { model: "rgb", value: { r: 32, g: 159, b: 237 } } + ] + ], + origin: { + x: [ + { model: "rgb", value: { r: 215, g: 209, b: 255 } }, + { model: "rgb", value: { r: 160, g: 191, b: 255 } }, + { model: "rgb", value: { r: 32, g: 159, b: 237 } } + ], + y: [ + { model: "rgb", value: { r: 215, g: 209, b: 255 } }, + { model: "rgb", value: { r: 183, g: 141, b: 255 } }, + { model: "rgb", value: { r: 139, g: 89, b: 255 } } + ] + } + } + ] +} +``` +
+ +
+ +## 📦 Installation +```bash +$ npm install @antv/color-schema +``` + +## 🔨 Usage + +### Validate +Validate by [Ajv](https://github.com/ajv-validator/ajv) (JSON schema validator): + +```js +import Ajv from "ajv"; +import colorSchema from "build/color-schema.json"; + +const ajv = new Ajv(); +const validate = ajv.compile(colorSchema); +const valid = validate(data); +``` + +### Types & Interfaces + +Some types and interfaces: + +```js +import { ColorSchema, Palette, Color } from '@antv/color-schema'; +``` + +#### ColorSchema +Color Schema is a color assets package consisting of a collection of palettes. +```ts +interface ColorSchema { + brandName: string; + palettes: Palette[]; +} +``` + +#### Palette +Color palette is a collection of colors. +```ts +interface Palette { + id?: string; + name: string; + type: PaletteType; + semantic: string | null; + description?: string; + colorScheme?: ColorSchemeType; + usage?: string[]; + colors: Color[] | ContinuousColor[] | colors: Color[][]; + origin?: { + x: Color[]; + y: Color[]; + }; +} +``` + +#### PaletteType +According to different data types and usage scenarios, four different [types](https://antv.vision/en/docs/specification/language/palette#6-%E5%A4%A7%E8%89%B2%E6%9D%BF%E7%B1%BB%E5%9E%8B) of color plates are provided. +```ts +type PaletteType = "categorical" | "discrete-scale" | "continuous-scale" | "matrix"; +``` + +#### ColorSchemeType +[Color scheme](https://en.wikipedia.org/wiki/Color_scheme) is described in terms of logical combinations of colors on a color wheel. Different types of schemes, like monochromatic or complementary, are used. +```ts +type ColorSchemeType = + | "monochromatic" + | "complementary" + | "split-complementary" + | "achromatic" + | "analogous" + | "triadic" + | "tetradic" + | "polychromatic" + | "customized"; +``` + +#### Color +```ts +interface Color { + model: ColorModel; + value: ColorValue; + id?: string; + name?: string; + undertone?: Undertone; + usage?: string[]; +} +``` + +#### ColorModel +```ts +type ColorModel = "hsl" | "hsv" | "hsi" | "rgb" | "rgba" | "lab" | "lch" | "cmyk"; +``` + +#### Undertone +```ts +type Undertone = "warm" | "neutral" | "cool"; +``` + +## 💻 Dev + +```bash +npm install +npm run start +``` + +## 🔗 Reference + +* [Ant Design Colors](https://ant.design/docs/spec/colors) +* [AntV Color Design](https://antv.vision/en/docs/specification/language/palette) + +## License + +MIT diff --git a/vendors/smart-color/0.2.1/esm/constant.d.ts b/vendors/smart-color/0.2.1/esm/constant.d.ts new file mode 100644 index 00000000..35be048c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/constant.d.ts @@ -0,0 +1,9 @@ +import { Color } from '@antv/color-schema'; +export declare const COLOR_BLINDNESS_SIMULATION_TYPES: readonly ["normal", "protanomaly", "deuteranomaly", "tritanomaly", "protanopia", "deuteranopia", "tritanopia", "achromatomaly", "achromatopsia"]; +export declare const TENDENCIES: readonly ["tint", "shade"]; +export declare const COLOR_DIFFERENCE_MEASURES: readonly ["euclidean", "CIEDE2000", "contrastRatio"]; +export declare const COLOR_AESTHETIC_MEASURES: readonly ["pairPreference", "harmony"]; +export declare const WHITE: Color; +export declare const SEPARABLE_BLEND_MODES: string[]; +export declare const NON_SEPARABLE_BLEND_MODES: readonly ["hue", "saturation", "color", "luminosity"]; +export declare const BLEND_MODES: readonly [...string[], "hue", "saturation", "color", "luminosity"]; diff --git a/vendors/smart-color/0.2.1/esm/constant.js b/vendors/smart-color/0.2.1/esm/constant.js new file mode 100644 index 00000000..a6c7b1c6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/constant.js @@ -0,0 +1,47 @@ +export const COLOR_BLINDNESS_SIMULATION_TYPES = [ + 'normal', + 'protanomaly', + 'deuteranomaly', + 'tritanomaly', + 'protanopia', + 'deuteranopia', + 'tritanopia', + 'achromatomaly', + 'achromatopsia', +]; +// color optimization configuration +export const TENDENCIES = ['tint', 'shade']; +export const COLOR_DIFFERENCE_MEASURES = ['euclidean', 'CIEDE2000', 'contrastRatio']; +export const COLOR_AESTHETIC_MEASURES = ['pairPreference', 'harmony']; +export const WHITE = { + model: 'rgb', + value: { + r: 255, + g: 255, + b: 255, + }, +}; +// Separable blend modes https://www.w3.org/TR/compositing/#blendingseparable +export const SEPARABLE_BLEND_MODES = [ + 'normal', + 'darken', + 'multiply', + 'colorBurn', + 'linearBurn', + 'lighten', + 'screen', + 'colorDodge', + 'linearDodge', + 'overlay', + 'softLight', + 'hardLight', + 'vividLight', + 'linearLight', + 'pinLight', + 'difference', + 'exclusion', +]; +// Non-separable blend modes https://www.w3.org/TR/compositing/#blendingnonseparable +export const NON_SEPARABLE_BLEND_MODES = ['hue', 'saturation', 'color', 'luminosity']; +export const BLEND_MODES = [...SEPARABLE_BLEND_MODES, ...NON_SEPARABLE_BLEND_MODES]; +//# sourceMappingURL=constant.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/constant.js.map b/vendors/smart-color/0.2.1/esm/constant.js.map new file mode 100644 index 00000000..be3923b6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/constant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constant.js","sourceRoot":"src/","sources":["constant.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,QAAQ;IACR,aAAa;IACb,eAAe;IACf,aAAa;IACb,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,eAAe;IACf,eAAe;CACP,CAAC;AACX,mCAAmC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,CAAU,CAAC;AAE9F,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAU,CAAC;AAE/E,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE;QACL,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;KACP;CACF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,WAAW;IACX,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,UAAU;IACV,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;AAE/F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,yBAAyB,CAAU,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.d.ts new file mode 100644 index 00000000..f3ae3e41 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const colorHarmony: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js new file mode 100644 index 00000000..6c563968 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js @@ -0,0 +1,39 @@ +import { colorToArray, rad2deg, deg2rad } from '../../utils'; +const Hab = (b, a) => { + if (a === 0 && b === 0) + return 0; + const tmphp = rad2deg(Math.atan2(b, a)); + if (tmphp >= 0) + return tmphp; + return tmphp + 360; +}; +// ref: Color Harmony for Image Indexing +// ref: A Study of Colour Harmony for Two-colour Combinations +// ref: https://last.hit.bme.hu/download/firtha/video/Colorimetry/Fairchild_M._Color_appearance_models__2005.pdf p79-81 +export const colorHarmony = (color1, color2) => { + const [L1, a1, b1] = colorToArray(color1, 'lab'); + const [L2, a2, b2] = colorToArray(color2, 'lab'); + const Cab1 = Math.sqrt(a1 ** 2 + b1 ** 2); + const Cab2 = Math.sqrt(a1 ** 2 + b1 ** 2); + const Hab1 = Hab(b1, a1); + const Hab2 = Hab(b2, a2); + const dCab = Cab1 - Cab2; + const dHab2 = (a1 - a2) ** 2 + (b1 - b2) ** 2 - dCab ** 2; + const dC = Math.sqrt(dHab2 + (dCab / 1.46) ** 2); + const HC = 0.04 + 0.53 * Math.tanh(0.8 - 0.045 * dC); + const Lsum = L1 + L2; + const HLsum = 0.28 + 0.54 * Math.tanh(-3.88 + 0.029 * Lsum); + const HdL = 0.14 + 0.15 * Math.tanh(-2 + 0.2 * Math.abs(L1 - L2)); + const HL = HLsum + HdL; + const EC1 = 0.5 + 0.5 * Math.tanh(-2 + 0.5 * Cab1); + const EC2 = 0.5 + 0.5 * Math.tanh(-2 + 0.5 * Cab2); + const HS1 = -0.08 - 0.14 * Math.sin(deg2rad(Hab1 + 50)) - 0.07 * Math.sin(deg2rad(2 * Hab1 + 90)); + const HS2 = -0.08 - 0.14 * Math.sin(deg2rad(Hab2 + 50)) - 0.07 * Math.sin(deg2rad(2 * Hab2 + 90)); + const EY1 = ((0.22 * L1 - 12.8) / 10) * Math.exp((90 - Hab1) / 10 - Math.exp((90 - Hab1) / 10)); + const EY2 = ((0.22 * L2 - 12.8) / 10) * Math.exp((90 - Hab2) / 10 - Math.exp((90 - Hab2) / 10)); + const HSY1 = EC1 * (HS1 + EY1); + const HSY2 = EC2 * (HS2 + EY2); + const HH = HSY1 + HSY2; + return HC + HL + HH; +}; +//# sourceMappingURL=colorHarmony.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js.map new file mode 100644 index 00000000..10e5613c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/colorHarmony.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorHarmony.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/colorHarmony.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.d.ts new file mode 100644 index 00000000..4ec114ca --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.d.ts @@ -0,0 +1,2 @@ +import { ColorAesthetic } from '@src/types'; +export declare const colorAesthetic: ColorAesthetic; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js new file mode 100644 index 00000000..306d3bb3 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js @@ -0,0 +1,19 @@ +import { WHITE } from '../../constant'; +import { colorBlend } from '../../utils'; +import { pairPreference } from './pairPreference'; +import { colorHarmony } from './colorHarmony'; +export const colorAesthetic = (color1, color2, configuration = { measure: 'pairPreference' }) => { + const { measure = 'pairPreference', backgroundColor = WHITE } = configuration; + // If the color is semi-transparent, the color will be overlapped on a white background by default for comparison + const overlappedColor1 = colorBlend(color1, backgroundColor); + const overlappedColor2 = colorBlend(color2, backgroundColor); + switch (measure) { + case 'pairPreference': + return pairPreference(overlappedColor1, overlappedColor2); + case 'harmony': + return colorHarmony(overlappedColor1, overlappedColor2); + default: + return pairPreference(overlappedColor1, overlappedColor2); + } +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js.map new file mode 100644 index 00000000..b2365bf0 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC9G,MAAM,EAAE,OAAO,GAAG,gBAAgB,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,aAAa,CAAC;IAC9E,iHAAiH;IACjH,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,QAAQ,OAAO,EAAE;QACf,KAAK,gBAAgB;YACnB,OAAO,cAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC5D,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC1D;YACE,OAAO,cAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;KAC7D;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts new file mode 100644 index 00000000..806b9587 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts @@ -0,0 +1 @@ +export declare const LAB_TO_COOLNESS: number[]; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js new file mode 100644 index 00000000..911d29a7 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js @@ -0,0 +1,3 @@ +// prettier-ignore +export const LAB_TO_COOLNESS = [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.49, 7.13, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.14, 7.5, 4.36, 5.54, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.46, 7.46, 5.18, 3.75, 2.77, 2.78, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.22, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 2.88, 2.88, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.09, 10.71, 10.34, 10, 10, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.11, 10.84, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.41, 8.71, 9.4, 9.13, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.41, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.11, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.75, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, , , , , , , , , , , , , , , , , , , , , , , , , , , 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, , , , , , , , , , , , , , , , , , , , , , , , , , 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.94, 11.07, 10.8, 10.42, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.69, 11.11, 10.84, 10.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.96, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, , , , , , , , , , , , , , , , , , , , , , , , , , , 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, , , , , , , , , , , , , , , , , , , , , , , , , , 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, , , , , , , , , , , , , , , , , , , , , , , , , 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 9.02, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.97, 8.97, 10.49, 10.79, 10.52, 10.15, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.82, 12.43, 11.98, 11.56, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, , , , , , , , , , , , , , , , , , , , , , , , , , , 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, , , , , , , , , , , , , , , , , , , , , , , , , , 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, , , , , , , , , , , , , , , , , , , , , , , , , 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, , , , , , , , , , , , , , , , , , , , , , , 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , 10.35, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 9.96, 10.51, 10.25, 10, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.3, 12.3, 11.89, 11.55, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.09, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, , , , , , , , , , , , , , , , , , , , , , , , , , , 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, , , , , , , , , , , , , , , , , , , , , , , , , , 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, , , , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, , , , , , , , , , , , , , , , , , , , , , , 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, , , , , , , , , , , , , , , , , , , , , , 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, , , , , , , , , , , , , , , , , , , , , 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 10.65, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 6.04, , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.21, 11.88, 11.59, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, , , , , , , , , , , , , , , , , , , , , , , , , , , 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, , , , , , , , , , , , , , , , , , , , , , , , , 14.01, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, , , , , , , , , , , , , , , , , , , , , , , , 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, , , , , , , , , , , , , , , , , , , , , , 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 2.9, , , , , , , , , , , , , , , , , , , , 12.43, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, , , , , , , , , , , , , , , , , , , , 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.14, 11.85, 11.64, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.51, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, , , , , , , , , , , , , , , , , , , , , , , , , , , 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, , , , , , , , , , , , , , , , , , , , , , , , , , 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, , , , , , , , , , , , , , , , , , , , , , , , , 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, , , , , , , , , , , , , , , , , , , , , , , , 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, , , , , , , , , , , , , , , , , , , , , , , 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, , , , , , , , , , , , , , , , , , , , , , 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, , , , , , , , , , , , , , , , , , , , , 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, , , , , , , , , , , , , , , , , , , , 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.51, , , , , , , , , , , , , , , , , , 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, , , , , , , , , , , , , , , , , 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.84, , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.11, 11.9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.87, 12.45, 12.14, 11.85, 11.64, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 11.05, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, , , , , , , , , , , , , , , , , , , , , , , , , , , 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, , , , , , , , , , , , , , , , , , , , , , , , , 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, , , , , , , , , , , , , , , , , , , , , , , , 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, , , , , , , , , , , , , , , , , , , , , , , 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, , , , , , , , , , , , , , , , , , , , , , 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, , , , , , , , , , , , , , , , , , , , , 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, , , , , , , , , , , , , , , , , , , , 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, , , , , , , , , , , , , , , , , , , 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, , , , , , , , , , , , , , , , , , 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, , , , , , , , , , , , , , , , , 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, , , , , , , , , , , , , , , , 7.79, 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.27, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.7, 12.4, 12.11, 11.9, 11.7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.23, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, , , , , , , , , , , , , , , , , , , , , , , , , , , 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, , , , , , , , , , , , , , , , , , , , , , , , , 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, , , , , , , , , , , , , , , , , , , , , , , , 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, , , , , , , , , , , , , , , , , , , , , , , 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, , , , , , , , , , , , , , , , , , , , , 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, , , , , , , , , , , , , , , , , , , , 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, , , , , , , , , , , , , , , , , , , 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, , , , , , , , , , , , , , , , , , 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, , , , , , , , , , , , , , , , , 11.87, 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, , , , , , , , , , , , , , , , 10.97, 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, , , , , , , , , , , , , , , 9.74, 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, , , , , , , , , , , , , , 0, 7.79, 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, , , , , , , , , , , , 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 4.8, 5.8, 6.81, 7.79, 0, 0, 0, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.38, 12.38, 11.91, 11.27, 10.42, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.75, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, , , , , , , , , , , , , , , , , , , , , , , , , , , 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, , , , , , , , , , , , , , , , , , , , , , , , , 16.92, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, , , , , , , , , , , , , , , , , , , , , , , , 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, , , , , , , , , , , , , , , , , , , , , , , 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, , , , , , , , , , , , , , , , , , , , , 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, , , , , , , , , , , , , , , , , , , , 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , , 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, , , , , , , , , , , , , , , , , , 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, , , , , , , , , , , , , , , , , 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, , , , , , , , , , , , , , , 11.13, 11.87, 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, , , , , , , , , , , , , , , 10.97, 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, , , , , , , , , , , , , , 9.74, 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, , , , , , , , , , , , , 0, 7.79, 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, , , , , , , , , , , , , 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, 6.61, , , , , , , , , , , , , 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 4.8, 5.8, 6.81, 7.79, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, 6.3, 6.1, 5.45, 5.22, 5.04, 5.47, 5.29, 5.73, 6.73, 7.12, 7.79, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 8.97, 8.94, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.09, 10.45, 9.62, 7.95, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.42, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, , , , , , , , , , , , , , , , , , , , , , , , , , , , 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, , , , , , , , , , , , , , , , , , , , , , , , , , , 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, , , , , , , , , , , , , , , , , , , , , , , , , 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, , , , , , , , , , , , , , , , , , , , , , , , 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, , , , , , , , , , , , , , , , , , , , , , , 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, , , , , , , , , , , , , , , , , , , , , 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, , , , , , , , , , , , , , , , , , , , 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, , , , , , , , , , , , , , , , , , , 14.58, 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , 13.83, 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, , , , , , , , , , , , , , , , 12.93, 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, , , , , , , , , , , , , , , 12.03, 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, , , , , , , , , , , , , , 11.13, 11.87, 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, , , , , , , , , , , , , , 10.97, 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, , , , , , , , , , , , , , 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, , , , , , , , , , , , , , 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, , , , , , , , , , , , , , 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.03, , , , , , , , , , , , , , 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, , , , , , , , , , , , , , 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, 6.61, 0, , , , , , , , , , , , , 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 4.8, 5.8, 6.81, 7.79, 0, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, 6.3, 6.1, 5.45, 5.22, 5.04, 5.47, 5.29, 5.73, 6.73, 7.12, 7.79, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 8.97, 8.94, 8.19, 8.06, 7.93, 8.31, 8.18, 7.79, , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.27, 8.01, 6.61, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, , , , , , , , , , , , , , , , , , , , , , , , , , 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, , , , , , , , , , , , , , , , , , , , , , , , , 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, , , , , , , , , , , , , , , , , , , , , , , 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, , , , , , , , , , , , , , , , , , , , , , 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, , , , , , , , , , , , , , , , , , , , , 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, , , , , , , , , , , , , , , , , , , , 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, , , , , , , , , , , , , , , , , , 14.59, 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, , , , , , , , , , , , , , , , , 13.84, 14.58, 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , 13.83, 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, , , , , , , , , , , , , , , , 12.93, 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, , , , , , , , , , , , , , , , 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, , , , , , , , , , , , , , , 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, , , , , , , , , , , , , , , 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, , , , , , , , , , , , , , , 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, , , , , , , , , , , , , , , 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, 2.12, , , , , , , , , , , , , , , 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.61, , , , , , , , , , , , , , , 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.37, , , , , , , , , , , , , , , 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.03, 6.21, , , , , , , , , , , , , , , 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, 0, , , , , , , , , , , , , , , 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, 6.61, 0, , , , , , , , , , , , , , , 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, 0, 0, , , , , , , , , , , , , , , 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, 0, 0, , , , , , , , , , , , , , , 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 3.84, , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, 6.3, 6.1, 5.45, 5.22, 5.04, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 8.97, 8.97, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.91, 10.27, 9.27, 8.01, 6.61, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 7.9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, , , , , , , , , , , , , , , , , , , , , , , , , , 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, , , , , , , , , , , , , , , , , , , , , , , , 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, , , , , , , , , , , , , , , , , , , , , , , 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, , , , , , , , , , , , , , , , , , , , , , 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, , , , , , , , , , , , , , , , , , , , 16.45, 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, , , , , , , , , , , , , , , , , , , 15.81, 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, , , , , , , , , , , , , , , , , , 15.2, 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, , , , , , , , , , , , , , , , , 14.59, 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, , , , , , , , , , , , , , , , 13.84, 14.58, 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , 13.83, 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, , , , , , , , , , , , , , , , 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, , , , , , , , , , , , , , , , 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, , , , , , , , , , , , , , , , 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, , , , , , , , , , , , , , , , 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, 3.35, , , , , , , , , , , , , , , 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, 2.78, , , , , , , , , , , , , , , 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, 2.12, 3.81, , , , , , , , , , , , , , , 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.61, 5.29, , , , , , , , , , , , , , , 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.37, 6.56, , , , , , , , , , , , , , , 10.52, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.03, 6.21, 0, , , , , , , , , , , , , , , 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, 0, , , , , , , , , , , , , , , , 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , 9.85, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 7.79, 9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.65, 7.65, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, , , , , , , , , , , , , , , , , , , , , , , , , , , 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, , , , , , , , , , , , , , , , , , , , , , , , , 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 9.43, , , , , , , , , , , , , , , , , , , , , , , 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, , , , , , , , , , , , , , , , , , , , , 17.04, 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, , , , , , , , , , , , , , , , , , , , 16.75, 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, , , , , , , , , , , , , , , , , , , 16.45, 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, , , , , , , , , , , , , , , , , , 15.81, 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, , , , , , , , , , , , , , , , , 15.2, 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, , , , , , , , , , , , , , , , , 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, , , , , , , , , , , , , , , , , 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, , , , , , , , , , , , , , , , , 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, , , , , , , , , , , , , , , , , 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, 4.34, , , , , , , , , , , , , , , , , 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, 3.77, , , , , , , , , , , , , , , , , 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, 3.35, , , , , , , , , , , , , , , , , 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, 2.78, , , , , , , , , , , , , , , , , 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, 2.12, 3.81, , , , , , , , , , , , , , , , , 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.61, 5.29, , , , , , , , , , , , , , , , , 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , , , 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.97, 8.94, 8.58, 8.22, 7.73, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 7.79, 9.31, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 16.23, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, , , , , , , , , , , , , , , , , , , , , , , , , 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, , , , , , , , , , , , , , , , , , , , , , , 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, , , , , , , , , , , , , , , , , , , , , , 17.31, 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, , , , , , , , , , , , , , , , , , , , 16.67, 17.04, 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, , , , , , , , , , , , , , , , , , , 16.13, 16.75, 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, , , , , , , , , , , , , , , , , 15.52, 16.45, 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, , , , , , , , , , , , , , , , , 15.81, 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, , , , , , , , , , , , , , , , , 16.05, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, , , , , , , , , , , , , , , , , , 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, , , , , , , , , , , , , , , , , , 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, 5.33, , , , , , , , , , , , , , , , , , 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, 4.91, , , , , , , , , , , , , , , , , , 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, 4.34, 4.34, , , , , , , , , , , , , , , , , , 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, 3.77, 3.91, , , , , , , , , , , , , , , , , , 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, 3.35, 3.89, , , , , , , , , , , , , , , , , , 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, 2.78, 4.97, , , , , , , , , , , , , , , , , , 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.05, 8.56, 8.2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.81, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.29, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.96, 10.53, 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.66, 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.98, 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 15.44, 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , 16.71, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, 0, , , , , , , , , , , , , , , , , , , , , , , 17.23, 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, , , , , , , , , , , , , , , , , , , , , 16.85, 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, , , , , , , , , , , , , , , , , , , , 16.89, 17.31, 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, , , , , , , , , , , , , , , , , , , 16.67, 17.04, 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, , , , , , , , , , , , , , , , , , , 16.75, 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, , , , , , , , , , , , , , , , , , , 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, , , , , , , , , , , , , , , , , , , 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, , , , , , , , , , , , , , , , , , 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, , , , , , , , , , , , , , , , , , 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, 6.42, , , , , , , , , , , , , , , , , , 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, 5.33, 5.47, , , , , , , , , , , , , , , , , , 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, 4.91, 4.91, , , , , , , , , , , , , , , , , , 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, 4.34, 4.34, , , , , , , , , , , , , , , , , , , 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, 3.77, 3.91, , , , , , , , , , , , , , , , , , , 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, , , , , , , , , , , , , , , , , , , , , , , , , 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.5, 9.02, 8.35, 7.69, 6.92, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.15, 8.66, 8.66, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.01, 8.15, 7.29, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.4, 10.96, 10.53, 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.66, 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 14.15, 13.98, 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , 15.31, 15.44, 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , 16.28, 16.71, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 16.5, 17.23, 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, 0, , , , , , , , , , , , , , , , , , , , 16.85, 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, 0, , , , , , , , , , , , , , , , , , , , 17.31, 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, 0, , , , , , , , , , , , , , , , , , , , 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, 0, , , , , , , , , , , , , , , , , , , , 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, 0, , , , , , , , , , , , , , , , , , , , 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, 6.76, , , , , , , , , , , , , , , , , , , , 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, , , , , , , , , , , , , , , , , , , , 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, , , , , , , , , , , , , , , , , , , , 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, 6.42, , , , , , , , , , , , , , , , , , , , 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , , , 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, 5.33, 5.47, , , , , , , , , , , , , , , , , , , , 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, 4.91, , , , , , , , , , , , , , , , , , , , , 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, , , , , , , , , , , , , , , , , , , , , , , , , , , 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 1.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.36, 7.12, 5.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.56, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.01, 8.15, 7.29, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.4, 10.96, 10.53, 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.89, 12.66, 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 14.15, 13.98, 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , 15.31, 15.44, 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 15.83, 16.28, 16.71, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , 16.5, 17.23, 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, 0, 0, , , , , , , , , , , , , , , , , , , , 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, 0, 0, , , , , , , , , , , , , , , , , , , , 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, 0, 0, , , , , , , , , , , , , , , , , , , , 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, 0, 0, , , , , , , , , , , , , , , , , , , , 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, 0, 0, , , , , , , , , , , , , , , , , , , , 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, 6.76, 0, , , , , , , , , , , , , , , , , , , , 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, 0, , , , , , , , , , , , , , , , , , , , 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, 0, , , , , , , , , , , , , , , , , , , , 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, 6.42, 0, , , , , , , , , , , , , , , , , , , , 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , , , , , 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.4, , , , , , , , , , , , , , , , , , , , , , , , , , , 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.11, 4.72, 3.06, 1.52, 0.99, 0.99, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.38, 4.93, 3.59, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.11, 9.11, 7.44, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 13.75, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, 0, 0, , , , , , , , , , , , , , , , , , , , , , 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, 6.76, 0, 0, , , , , , , , , , , , , , , , , , , , , 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, 0, 0, , , , , , , , , , , , , , , , , , , , , 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, , , , , , , , , , , , , , , , , , , , , , , 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, , , , , , , , , , , , , , , , , , , , , , , , , , , , 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.09, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 3.05, 0.77, 0.5, 0.57, 0.57, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 2.95, 0.89, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.16, 9.16, 8.99, 8.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.49, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 2.85, 0, 0.68, 1.37, 2.11, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 1.53, 0.25,]; +//# sourceMappingURL=LAB_TO_COOLNESS.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map new file mode 100644 index 00000000..3a715a98 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LAB_TO_COOLNESS.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAE,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.d.ts new file mode 100644 index 00000000..ab0bb842 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const pairPreference: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js new file mode 100644 index 00000000..ab57fc38 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js @@ -0,0 +1,93 @@ +import { colorToArray } from '../../../utils'; +import { LAB_TO_COOLNESS } from './LAB_TO_COOLNESS'; +// ref: Colorgorical:Creating discriminable and preferable color palettes for information visualization +// https://github.com/connorgr/colorgorical/blob/90649656a57ce9743b00390473adce51a821cadc/src/model/c/scores/pairPreference.c +// hue, lightness, and coolness weights taken from regression in Schloss & Palmer 2011 to estimate pairwise preference +const wH = -46.42; // hueAngleDiff weight +const wL = 47.61; // lightnessDiff weight +const wC = 75.15; // coolness weight +// These min and max values are taken from the regression normalization +// Need to normalize based on these to verify the variables are on same range +const cMax = 36.0; +const cMin = 4.0; +const hMax = 179.266981384; +const hMin = 0.033547949; +const lMax = 63.3673; +const lMin = 0.0; +const normalize = (d, high, low) => { + return (d - low) / (high - low); +}; +const getLabIndex = (L, a, b) => { + // L = [0,100]; a = [-85, 100]; b = [-110, 95] + const iL = Math.round(L / 5); + const ia = Math.round((a + 85) / 5); + const ib = Math.round((b + 110) / 5); + return iL * 1596 + ia * 42 + ib; +}; +const getCoolness = (L, a, b) => { + const index = getLabIndex(L, a, b); + return LAB_TO_COOLNESS[index] || 0; +}; +// Calculate the scalar needed to convert an XYZ color to Lab +const XYZtoLab = (t) => { + if (t > (6.0 / 29.0) ** 3) { + return t ** (1.0 / 3.0); + } + return (1.0 / 3.0) * (29.0 / 6.0) * (29.0 / 6.0) * t + 4.0 / 29.0; +}; +// Calculate the scalar needed to convert an Lab color to XYZ. +const LabToXYZ = (t) => { + return t > 6.0 / 29.0 ? t * t * t : 3.0 * (6.0 / 29) * (6.0 / 29) * (t - 4.0 / 29.0); +}; +// Calculate the LCH cyllindrical color representation of an Lab color +const LabToLCH = (L, a, b) => { + const C = Math.sqrt(a * a + b * b); + let H = (Math.atan2(b, a) * 180.0) / Math.PI; + if (H < 0.0) + H += 360.0; + if (H > 360.0) + H = 360.0 - H; + return [L, C, H]; +}; +// Convert CIE Lab coordinates characterized with Illuminant D65 to CIE Lab +// characterized with Illuminant C. This conversion is required since our model +// relies on a D65 characterization, but Schloss and Palmer's pair preference +// function was defined in Illuminant C characterized CIE Lab space. +const illuminantD65LabToIlluminantCLab = (oldL, oldA, oldB) => { + const ILLUMINANT_C_X = 98.074; + const ILLUMINANT_C_Y = 100.0; + const ILLUMINANT_C_Z = 118.232; + const ILLUMINANT_D65_X = 95.047; + const ILLUMINANT_D65_Y = 100.0; + const ILLUMINANT_D65_Z = 108.883; + // Derive X,Y,Z from Lab by inversing the transformation + const x = (1.0 / 116.0) * (oldL + 16) + (1.0 / 500.0) * oldA; + const y = (1.0 / 116.0) * (oldL + 16); + const z = (1 / 116) * (oldL + 16) - (1 / 200) * oldB; + const X = ILLUMINANT_D65_X * LabToXYZ(x); + const Y = ILLUMINANT_D65_Y * LabToXYZ(y); + const Z = ILLUMINANT_D65_Z * LabToXYZ(z); + const deconstructY = XYZtoLab(Y / ILLUMINANT_C_Y); + const L = 116 * deconstructY - 16; + const a = 500 * (XYZtoLab(X / ILLUMINANT_C_X) - deconstructY); + const b = 200 * (deconstructY - XYZtoLab(Z / ILLUMINANT_C_Z)); + return [L, a, b]; +}; +export const pairPreference = (color1, color2) => { + const [L1, a1, b1] = colorToArray(color1, 'lab'); + const [L2, a2, b2] = colorToArray(color2, 'lab'); + const coolness1 = getCoolness(L1, a1, b1); + const coolness2 = getCoolness(L2, a2, b2); + // Convert from D65 to Illuminant C Lab + const Lab1 = illuminantD65LabToIlluminantCLab(L1, a1, b1); + const Lab2 = illuminantD65LabToIlluminantCLab(L2, a2, b2); + // Convert Lab Illuminant C to LCH + const lCH1 = LabToLCH(Lab1[0], Lab1[1], Lab1[2]); + const lCH2 = LabToLCH(Lab2[0], Lab2[1], Lab2[2]); + const diffL = Math.abs(lCH1[0] - lCH2[0]); + const diffH = Math.abs(lCH1[2] - lCH2[2]); + const sumC = coolness1 + coolness2; + const pp = wL * normalize(diffL, lMax, lMin) + wH * normalize(diffH, hMax, hMin) + wC * normalize(sumC, cMax, cMin); + return pp; +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js.map new file mode 100644 index 00000000..683bb04c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorAesthetic/pairPreference/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/pairPreference/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.d.ts new file mode 100644 index 00000000..eb96bc12 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const CIEDE2000: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js new file mode 100644 index 00000000..ac2724e4 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js @@ -0,0 +1,64 @@ +import { colorToArray, rad2deg, deg2rad } from '../../utils'; +const hp = (x, y) => { + const tmphp = rad2deg(Math.atan2(x, y)); + if (tmphp >= 0) + return tmphp; + return tmphp + 360; +}; +// ref: https://en.wikipedia.org/wiki/Color_difference#CIEDE2000 +// output range: [0, 100] +export const CIEDE2000 = (color1, color2) => { + // weight, usually unity + const kL = 1; + const kC = 1; + const kH = 1; + // Get L,a,b values for color + const [L1, a1, b1] = colorToArray(color1, 'lab'); + const [L2, a2, b2] = colorToArray(color2, 'lab'); + const C1 = Math.sqrt(a1 ** 2 + b1 ** 2); + const C2 = Math.sqrt(a2 ** 2 + b2 ** 2); + const avgC = (C1 + C2) / 2; + const p = 0.5 * (1 - Math.sqrt(avgC ** 7 / (avgC ** 7 + 25 ** 7))); + const a1p = (1.0 + p) * a1; + const a2p = (1.0 + p) * a2; + const C1p = Math.sqrt(a1p ** 2 + b1 ** 2); + const C2p = Math.sqrt(a2p ** 2 + b2 ** 2); + const h1p = hp(b1, a1p); + const h2p = hp(b2, a2p); + const dLp = L2 - L1; + const dCp = C2p - C1p; + let dhp; + if (Math.abs(h2p - h1p) <= 180) + dhp = h2p - h1p; + else if (h2p - h1p < -180) + dhp = h2p - h1p + 360; + else + dhp = h2p - h1p - 360; // h2p - h1p > 180 + const dHp = 2 * Math.sqrt(C1p * C2p) * Math.sin(deg2rad(dhp) / 2.0); + let avgHp; + if (Math.abs(h1p - h2p) <= 180) + avgHp = (h1p + h2p) / 2.0; + else if (Math.abs(h1p - h2p) > 180 && h1p + h2p < 360) + avgHp = (h1p + h2p + 360) / 2.0; + else + avgHp = (h1p + h2p - 360) / 2.0; // Math.abs(h1p - h2p) > 180 && h1p + h2p >= 360 + const avgL = (L1 + L2) / 2.0; + const avgCp = (C1p + C2p) / 2.0; + const T = 1 - + 0.17 * Math.cos(deg2rad(avgHp - 30)) + + 0.24 * Math.cos(deg2rad(2 * avgHp)) + + 0.32 * Math.cos(deg2rad(3 * avgHp + 6)) - + 0.2 * Math.cos(deg2rad(4 * avgHp - 63)); + const SL = 1 + (0.015 * (avgL - 50) ** 2) / Math.sqrt(20 + (avgL - 50) ** 2); + const SC = 1 + 0.045 * avgCp; + const SH = 1 + 0.015 * avgCp * T; + const RT = -2 * + Math.sqrt(avgCp ** 7 / (avgCp ** 7 + 25.0 ** 7)) * + Math.sin(deg2rad(60 * Math.exp(-(((avgHp - 275) / 25) ** 2)))); + const dE = Math.sqrt((dLp / (SL * kL)) ** 2 + + (dCp / (SC * kC)) ** 2 + + (dHp / (SH * kH)) ** 2 + + RT * (dCp / (SC * kC)) * (dHp / (SH * kH))); + return dE; +}; +//# sourceMappingURL=CIEDE2000.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js.map new file mode 100644 index 00000000..91388e67 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/CIEDE2000.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CIEDE2000.js","sourceRoot":"src/","sources":["evaluators/colorDifference/CIEDE2000.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.d.ts new file mode 100644 index 00000000..d5acd686 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const contrastRatio: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js new file mode 100644 index 00000000..8c6dec66 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js @@ -0,0 +1,23 @@ +import { colorToArray } from '../../utils'; +const compute = (num) => { + const n = num / 255; + if (n <= 0.03928) { + return n / 12.92; + } + return ((n + 0.055) / 1.055) ** 2.4; +}; +const calcRelativeLuminance = (color) => { + const [r, g, b] = colorToArray(color); + return 0.2126 * compute(r) + 0.7152 * compute(g) + 0.0722 * compute(b); +}; +// ref: https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio +// Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1). +export const contrastRatio = (color1, color2) => { + const L1 = calcRelativeLuminance(color1); + const L2 = calcRelativeLuminance(color2); + if (L2 > L1) { + return (L2 + 0.05) / (L1 + 0.05); + } + return (L1 + 0.05) / (L2 + 0.05); +}; +//# sourceMappingURL=contrastRatio.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js.map new file mode 100644 index 00000000..2167fcd1 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/contrastRatio.js.map @@ -0,0 +1 @@ +{"version":3,"file":"contrastRatio.js","sourceRoot":"src/","sources":["evaluators/colorDifference/contrastRatio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;IACtC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,IAAI,OAAO,EAAE;QAChB,OAAO,CAAC,GAAG,KAAK,CAAC;KAClB;IACD,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;AACtC,CAAC,CAAC;AACF,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAU,EAAE;IACrD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,wDAAwD;AACxD,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAa,EAAE,MAAa,EAAU,EAAE;IACpE,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;KAClC;IACD,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.d.ts new file mode 100644 index 00000000..3d230e3b --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.d.ts @@ -0,0 +1,2 @@ +import { Color, ColorModel } from '@antv/color-schema'; +export declare const euclideanDistance: (color1: Color, color2: Color, colorModel?: ColorModel) => number; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js new file mode 100644 index 00000000..5c5f79b1 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js @@ -0,0 +1,8 @@ +import chroma from 'chroma-js'; +import { colorToChromaColor } from '../../utils'; +// Computes the Euclidean distance between two colors in a given color model (default is Lab). +// output range: [0, 255] +export const euclideanDistance = (color1, color2, colorModel = 'lab') => { + return chroma.distance(colorToChromaColor(color1), colorToChromaColor(color2), colorModel); +}; +//# sourceMappingURL=euclideanDistance.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js.map new file mode 100644 index 00000000..7fcdb3b9 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/euclideanDistance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"euclideanDistance.js","sourceRoot":"src/","sources":["evaluators/colorDifference/euclideanDistance.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,8FAA8F;AAC9F,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAa,EAAE,MAAa,EAAE,aAAyB,KAAK,EAAU,EAAE;IACxG,OAAO,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;AAC7F,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.d.ts new file mode 100644 index 00000000..6e867741 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.d.ts @@ -0,0 +1,2 @@ +import { ColorDifference } from '@src/types'; +export declare const colorDifference: ColorDifference; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js new file mode 100644 index 00000000..dfcc40dc --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js @@ -0,0 +1,23 @@ +import { WHITE } from '../../constant'; +import { colorBlend } from '../../utils'; +import { euclideanDistance } from './euclideanDistance'; +import { CIEDE2000 } from './CIEDE2000'; +import { contrastRatio } from './contrastRatio'; +export const colorDifference = (color1, color2, configuration = { measure: 'euclidean' }) => { + const { measure = 'euclidean', backgroundColor = WHITE } = configuration; + // If the color is semi-transparent, the color will be overlapped on a white background by default for comparison + const overlappedColor1 = colorBlend(color1, backgroundColor); + const overlappedColor2 = colorBlend(color2, backgroundColor); + switch (measure) { + case 'CIEDE2000': + return CIEDE2000(overlappedColor1, overlappedColor2); + case 'euclidean': + // @ts-ignore + return euclideanDistance(overlappedColor1, overlappedColor2, configuration.colorModel); + case 'contrastRatio': + return contrastRatio(overlappedColor1, overlappedColor2); + default: + return euclideanDistance(overlappedColor1, overlappedColor2); + } +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js.map b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js.map new file mode 100644 index 00000000..e7291d8b --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/colorDifference/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/colorDifference/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE;IAC3G,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,aAAa,CAAC;IACzE,iHAAiH;IACjH,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,QAAQ,OAAO,EAAE;QACf,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACvD,KAAK,WAAW;YACd,aAAa;YACb,OAAO,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACzF,KAAK,eAAe;YAClB,OAAO,aAAa,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC3D;YACE,OAAO,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;KAChE;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/index.d.ts b/vendors/smart-color/0.2.1/esm/evaluators/index.d.ts new file mode 100644 index 00000000..c8441e9b --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/index.d.ts @@ -0,0 +1,2 @@ +export { colorDifference } from './colorDifference'; +export { colorAesthetic } from './colorAesthetic'; diff --git a/vendors/smart-color/0.2.1/esm/evaluators/index.js b/vendors/smart-color/0.2.1/esm/evaluators/index.js new file mode 100644 index 00000000..585ff546 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/index.js @@ -0,0 +1,3 @@ +export { colorDifference } from './colorDifference'; +export { colorAesthetic } from './colorAesthetic'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/evaluators/index.js.map b/vendors/smart-color/0.2.1/esm/evaluators/index.js.map new file mode 100644 index 00000000..e5d5071a --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/evaluators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.d.ts b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.d.ts new file mode 100644 index 00000000..81d97316 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.d.ts @@ -0,0 +1,2 @@ +import { Palette } from '@antv/color-schema'; +export declare function getPaletteFromImage(imgUrl: string, count?: number, quality?: number): Promise; diff --git a/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js new file mode 100644 index 00000000..0301ad0c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js @@ -0,0 +1,63 @@ +// @ts-ignore +import quantize from 'quantize'; +import { loadImage, arrayToColor } from '../utils'; +// sample pixels in image +const imageToPixels = (image, quality) => { + const { width, height } = image; + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + if (!context) + return []; + canvas.width = width; + canvas.height = height; + context.drawImage(image, 0, 0, width, height); + const imageData = context.getImageData(0, 0, width, height).data; + const pixels = []; + const count = width * height; + for (let i = 0; i < count; i += quality) { + const offset = i * 4; + const r = imageData[offset + 0]; + const g = imageData[offset + 1]; + const b = imageData[offset + 2]; + const a = imageData[offset + 3]; + // If pixel is mostly opaque and not white + if (typeof a === 'undefined' || a >= 125) { + if (!(r > 250 && g > 250 && b > 250)) { + pixels.push([r, g, b]); + } + } + } + return pixels; +}; +// Get a list of colors from img url +export async function getPaletteFromImage(imgUrl, count = 6, quality = 10) { + // int + let validCount = Math.round(count); + validCount = Math.max(1, validCount); + validCount = Math.min(50, validCount); + let validQuality = Math.round(quality); + validQuality = Math.max(1, validQuality); + return new Promise((resolve) => { + loadImage(imgUrl) + .then((img) => { + validQuality = Math.min(Math.floor((img.width * img.height) / validCount), validQuality); + const pixels = imageToPixels(img, validQuality); + // Use the median cut algorithm provided by quantize to cluster similar colors + // the colorCount in quantize must be larger than 1 + // so if the validCount is equal to 1 + // get a palette of two colors and select the base color from the largest cluster + const colorMap = quantize(pixels, validCount === 1 ? 2 : validCount); + const arrayRGB = colorMap.palette().slice(0, validCount); + resolve({ + name: 'image', + semantic: null, + type: 'categorical', + colors: arrayRGB.map((rgb) => arrayToColor(rgb, 'rgb')), + }); + }) + .finally(() => { + resolve(undefined); + }); + }); +} +//# sourceMappingURL=getPaletteFromImage.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js.map b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js.map new file mode 100644 index 00000000..bda217f6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromImage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getPaletteFromImage.js","sourceRoot":"src/","sources":["extractors/getPaletteFromImage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.d.ts b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.d.ts new file mode 100644 index 00000000..f1d56b4e --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.d.ts @@ -0,0 +1,2 @@ +import { Palette } from '@antv/color-schema'; +export declare function getPaletteFromString(string: string): Palette; diff --git a/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js new file mode 100644 index 00000000..17b0a990 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js @@ -0,0 +1,17 @@ +import { hexToColor } from '../utils'; +// Get a list of colors from string +export function getPaletteFromString(string) { + return { + name: 'code', + semantic: null, + type: 'categorical', + colors: string + .replace(/[^#,0-9a-fA-F]/g, '') + .split(',') + .filter((color) => color.length > 0) + .map((color) => { + return hexToColor(color); + }), + }; +} +//# sourceMappingURL=getPaletteFromString.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js.map b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js.map new file mode 100644 index 00000000..a8ee631f --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/getPaletteFromString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getPaletteFromString.js","sourceRoot":"src/","sources":["extractors/getPaletteFromString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,mCAAmC;AACnC,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,MAAM;aACX,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;aAC9B,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC;KACL,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/extractors/index.d.ts b/vendors/smart-color/0.2.1/esm/extractors/index.d.ts new file mode 100644 index 00000000..ca8afba3 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/index.d.ts @@ -0,0 +1,2 @@ +export { getPaletteFromImage } from './getPaletteFromImage'; +export { getPaletteFromString } from './getPaletteFromString'; diff --git a/vendors/smart-color/0.2.1/esm/extractors/index.js b/vendors/smart-color/0.2.1/esm/extractors/index.js new file mode 100644 index 00000000..8037b932 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/index.js @@ -0,0 +1,3 @@ +export { getPaletteFromImage } from './getPaletteFromImage'; +export { getPaletteFromString } from './getPaletteFromString'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/extractors/index.js.map b/vendors/smart-color/0.2.1/esm/extractors/index.js.map new file mode 100644 index 00000000..968d5897 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/extractors/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["extractors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.d.ts new file mode 100644 index 00000000..58a25e75 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const achromaticGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js b/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js new file mode 100644 index 00000000..bbb54883 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js @@ -0,0 +1,23 @@ +import { monochromaticGeneration } from './monochromaticGeneration'; +const BLACK = { + model: 'rgb', + value: { r: 0, g: 0, b: 0 }, +}; +const WHITE = { + model: 'rgb', + value: { r: 255, g: 255, b: 255 }, +}; +// generate sequential palette by achromatic scheme +export const achromaticGeneration = (configuration) => { + const { tendency } = configuration; + const newConfiguration = { + ...configuration, + color: tendency === 'tint' ? BLACK : WHITE, + }; + const palette = monochromaticGeneration(newConfiguration); + return { + ...palette, + name: 'achromatic', + }; +}; +//# sourceMappingURL=achromaticGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js.map new file mode 100644 index 00000000..26303e24 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/achromaticGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"achromaticGeneration.js","sourceRoot":"src/","sources":["generators/achromaticGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,KAAK,GAAU;IACnB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC5B,CAAC;AACF,MAAM,KAAK,GAAU;IACnB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;CAClC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAe,CAAC,aAAa,EAAE,EAAE;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IACnC,MAAM,gBAAgB,GAAG;QACvB,GAAG,aAAa;QAChB,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;KAC3C,CAAC;IACF,MAAM,OAAO,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,OAAO;QACL,GAAG,OAAO;QACV,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.d.ts new file mode 100644 index 00000000..19323f1d --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const analogousGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js b/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js new file mode 100644 index 00000000..efdbef6a --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js @@ -0,0 +1,30 @@ +import { colorToArray, arrayToColor, hueOffset } from '../utils'; +// generate sequential palette by analogous scheme +export const analogousGeneration = (configuration) => { + const { count, color, tendency } = configuration; + const isTint = tendency === 'tint'; + const [hue, saturation, value] = colorToArray(color, 'hsv'); + const index = Math.floor(count / 2); + // Ref: Ant Design 3.x palette algorithm https://zhuanlan.zhihu.com/p/32422584 + let dHue = 60 / (count - 1); + if (hue >= 60 && hue <= 240) { + // cool undertone + dHue = -dHue; + } + const dSaturation = (saturation - 0.1) / 3 / (count - index - 1); + const dValue = (value - 0.4) / 3 / index; + const newColors = new Array(count).fill(0).map((d, i) => { + const h = hueOffset(hue, dHue * (i - index)); + const s = i <= index ? Math.min(saturation + dSaturation * (index - i), 1) : saturation + 3 * dSaturation * (index - i); + const v = i <= index ? value - 3 * dValue * (index - i) : Math.min(value - dValue * (index - i), 1); + return arrayToColor([h, s, v], 'hsv'); + }); + const palette = { + name: 'analogous', + semantic: null, + type: 'discrete-scale', + colors: isTint ? newColors : newColors.reverse(), + }; + return palette; +}; +//# sourceMappingURL=analogousGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js.map new file mode 100644 index 00000000..673bbdde --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/analogousGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"analogousGeneration.js","sourceRoot":"src/","sources":["generators/analogousGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGjE,kDAAkD;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC/D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IAEjD,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpC,8EAA8E;IAC9E,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;QAC3B,iBAAiB;QACjB,IAAI,GAAG,CAAC,IAAI,CAAC;KACd;IACD,MAAM,WAAW,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GACL,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpG,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;KACjD,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.d.ts new file mode 100644 index 00000000..6aff965f --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.d.ts @@ -0,0 +1,5 @@ +import { Color } from '@antv/color-schema'; +export declare const categoricalGenerationInHsv: (color: Color, dHue: number, count: number, colors?: (Color | undefined)[]) => { + newColors: Color[]; + locked: any[]; +}; diff --git a/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js b/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js new file mode 100644 index 00000000..e9bff05c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js @@ -0,0 +1,27 @@ +import { colorToArray, arrayToColor, hueOffset, random } from '../utils'; +const saturationRange = [0.3, 0.9]; +const valueRange = [0.5, 1]; +export const categoricalGenerationInHsv = (color, dHue, count, colors = []) => { + const [h] = colorToArray(color, 'hsv'); + const locked = new Array(count).fill(false); + let placeBasicColor = colors.findIndex((c) => c && c.model === color.model && c.value === color.value) === -1; + const newColors = new Array(count).fill(0).map((d, i) => { + const lockedColor = colors[i]; + if (lockedColor) { + locked[i] = true; + return lockedColor; + } + // find the first unlocked position to place the basic color + if (placeBasicColor) { + placeBasicColor = false; + locked[i] = true; + return color; + } + return arrayToColor([hueOffset(h, dHue * i), random(...saturationRange), random(...valueRange)], 'hsv'); + }); + return { + newColors, + locked, + }; +}; +//# sourceMappingURL=categoricalGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js.map new file mode 100644 index 00000000..557e718e --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/categoricalGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"categoricalGeneration.js","sourceRoot":"src/","sources":["generators/categoricalGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,eAAe,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD,MAAM,UAAU,GAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,KAAY,EACZ,IAAY,EACZ,KAAa,EACb,SAAgC,EAAE,EAClC,EAAE;IACF,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9G,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAS,EAAE;QAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,WAAW,EAAE;YACf,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,OAAO,WAAW,CAAC;SACpB;QACD,4DAA4D;QAC5D,IAAI,eAAe,EAAE;YACnB,eAAe,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;IACH,OAAO;QACL,SAAS;QACT,MAAM;KACP,CAAC;AACJ,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.d.ts new file mode 100644 index 00000000..7460fefc --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const complementaryGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js b/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js new file mode 100644 index 00000000..aae473ae --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js @@ -0,0 +1,29 @@ +import { colorToArray, arrayToColor, hueOffset, random, randomInt } from '../utils'; +import { discreteScaleGenerationInLab } from './discreteScaleGeneration'; +// generate diverging palette by complementary scheme +export const complementaryGeneration = (configuration) => { + const { count, color } = configuration; + const [hue, saturation, value] = colorToArray(color, 'hsv'); + const complementaryColor = arrayToColor([hueOffset(hue, 180), saturation, value], 'hsv'); + const maxL = randomInt(80, 90); + const minL = randomInt(15, 25); + const halfCount = Math.floor(count / 2); + const left = discreteScaleGenerationInLab(color, halfCount, [minL, maxL]); + const right = discreteScaleGenerationInLab(complementaryColor, halfCount, [minL, maxL]).reverse(); + let newColors; + if (count % 2 === 1) { + const midColor = arrayToColor([(hueOffset(hue, 180) + hue) / 2, random(0.05, 0.1), random(0.9, 0.95)], 'hsv'); + newColors = [...left, midColor, ...right]; + } + else { + newColors = [...left, ...right]; + } + const palette = { + name: 'complementary', + semantic: null, + type: 'discrete-scale', + colors: newColors, + }; + return palette; +}; +//# sourceMappingURL=complementaryGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js.map new file mode 100644 index 00000000..2cdb1002 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/complementaryGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"complementaryGeneration.js","sourceRoot":"src/","sources":["generators/complementaryGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEzE,qDAAqD;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAe,CAAC,aAAa,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;IAEvC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAEzF,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,4BAA4B,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAClG,IAAI,SAAS,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9G,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;KAC3C;SAAM;QACL,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;KACjC;IACD,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.d.ts new file mode 100644 index 00000000..ae960f7e --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const discreteScaleGenerationInLab: (color: Color, count: number, lRange?: [number, number]) => Color[]; diff --git a/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js b/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js new file mode 100644 index 00000000..980ca183 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js @@ -0,0 +1,13 @@ +import { colorToArray, arrayToColor, randomInt } from '../utils'; +// Fix a, b, vary L +export const discreteScaleGenerationInLab = (color, count, lRange = [randomInt(5, 10), randomInt(90, 95)]) => { + const [L, a, b] = colorToArray(color, 'lab'); + const minL = L <= 15 ? L : lRange[0]; + const maxL = L >= 85 ? L : lRange[1]; + let dLightness = (maxL - minL) / (count - 1); + // basic color index + const index = Math.ceil((L - minL) / dLightness); + dLightness = index === 0 ? dLightness : (L - minL) / index; + return new Array(count).fill(0).map((d, i) => arrayToColor([dLightness * i + minL, a, b], 'lab')); +}; +//# sourceMappingURL=discreteScaleGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js.map new file mode 100644 index 00000000..2df2d845 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/discreteScaleGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"discreteScaleGeneration.js","sourceRoot":"src/","sources":["generators/discreteScaleGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEjE,mBAAmB;AACnB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,KAAY,EACZ,KAAa,EACb,SAA2B,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EACvD,EAAE;IACX,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,oBAAoB;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACjD,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3D,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/index.d.ts b/vendors/smart-color/0.2.1/esm/generators/index.d.ts new file mode 100644 index 00000000..1efdef2e --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/index.d.ts @@ -0,0 +1,9 @@ +import { PaletteGeneration } from '../types'; +/** + * + * @param type + * @param colors locked colors + * @param configuration + * @returns + */ +export declare const paletteGeneration: PaletteGeneration; diff --git a/vendors/smart-color/0.2.1/esm/generators/index.js b/vendors/smart-color/0.2.1/esm/generators/index.js new file mode 100644 index 00000000..39f7f8c7 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/index.js @@ -0,0 +1,39 @@ +import { monochromaticGeneration } from './monochromaticGeneration'; +import { analogousGeneration } from './analogousGeneration'; +import { achromaticGeneration } from './achromaticGeneration'; +import { complementaryGeneration } from './complementaryGeneration'; +import { splitComplementaryGeneration } from './splitComplementaryGeneration'; +import { triadicGeneration } from './triadicGeneration'; +import { tetradicGeneration } from './tetradicGeneration'; +import { polychromaticGeneration } from './polychromaticGeneration'; +import { randomGeneration } from './randomGeneration'; +import { validateConfiguration } from './validateConfiguration'; +const generator = { + monochromatic: monochromaticGeneration, + analogous: analogousGeneration, + achromatic: achromaticGeneration, + complementary: complementaryGeneration, + 'split-complementary': splitComplementaryGeneration, + triadic: triadicGeneration, + tetradic: tetradicGeneration, + polychromatic: polychromaticGeneration, + customized: randomGeneration, +}; +/** + * + * @param type + * @param colors locked colors + * @param configuration + * @returns + */ +export const paletteGeneration = (type = 'monochromatic', configuration = {}) => { + // set default value + const newConfiguration = validateConfiguration(type, configuration); + try { + return generator[type](newConfiguration); + } + catch (e) { + return randomGeneration(newConfiguration); + } +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/index.js.map b/vendors/smart-color/0.2.1/esm/generators/index.js.map new file mode 100644 index 00000000..a148ffcf --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["generators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,SAAS,GAAsC;IACnD,aAAa,EAAE,uBAAuB;IACtC,SAAS,EAAE,mBAAmB;IAC9B,UAAU,EAAE,oBAAoB;IAChC,aAAa,EAAE,uBAAuB;IACtC,qBAAqB,EAAE,4BAA4B;IACnD,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,kBAAkB;IAC5B,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,OAAwB,eAAe,EAAE,aAAa,GAAG,EAAE,EAAE,EAAE;IAClH,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpE,IAAI;QACF,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;KAC3C;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.d.ts new file mode 100644 index 00000000..00c14f6e --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const monochromaticGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js b/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js new file mode 100644 index 00000000..dceda968 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js @@ -0,0 +1,15 @@ +import { discreteScaleGenerationInLab } from './discreteScaleGeneration'; +// generate sequential palette by monochromatic scheme +export const monochromaticGeneration = (configuration) => { + const { count, color, tendency } = configuration; + const isTint = tendency === 'tint'; + const newColors = discreteScaleGenerationInLab(color, count); + const palette = { + name: 'monochromatic', + semantic: null, + type: 'discrete-scale', + colors: isTint ? newColors : newColors.reverse(), + }; + return palette; +}; +//# sourceMappingURL=monochromaticGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js.map new file mode 100644 index 00000000..efa33ccc --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/monochromaticGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"monochromaticGeneration.js","sourceRoot":"src/","sources":["generators/monochromaticGeneration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEzE,sDAAsD;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAAe,CAAC,aAAa,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IAEjD,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;KACjD,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.d.ts new file mode 100644 index 00000000..30052f21 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const polychromaticGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js b/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js new file mode 100644 index 00000000..c6aa2542 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js @@ -0,0 +1,16 @@ +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +// generate categorical palette by polychromatic scheme +export const polychromaticGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 360 / count; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return paletteOptimization(palette, { locked }); +}; +//# sourceMappingURL=polychromaticGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js.map new file mode 100644 index 00000000..b1084701 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/polychromaticGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"polychromaticGeneration.js","sourceRoot":"src/","sources":["generators/polychromaticGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAGrE,uDAAuD;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAe,CAAC,aAAa,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/random.d.ts b/vendors/smart-color/0.2.1/esm/generators/random.d.ts new file mode 100644 index 00000000..773795d2 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/random.d.ts @@ -0,0 +1 @@ +export declare function randomColor(): import("@antv/color-schema").Color; diff --git a/vendors/smart-color/0.2.1/esm/generators/random.js b/vendors/smart-color/0.2.1/esm/generators/random.js new file mode 100644 index 00000000..804b6f66 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/random.js @@ -0,0 +1,8 @@ +import { arrayToColor, randomInt } from '../utils'; +export function randomColor() { + const r = randomInt(255); + const g = randomInt(255); + const b = randomInt(255); + return arrayToColor([r, g, b], 'rgb'); +} +//# sourceMappingURL=random.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/random.js.map b/vendors/smart-color/0.2.1/esm/generators/random.js.map new file mode 100644 index 00000000..cb3a24f2 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/random.js.map @@ -0,0 +1 @@ +{"version":3,"file":"random.js","sourceRoot":"src/","sources":["generators/random.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/randomGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/randomGeneration.d.ts new file mode 100644 index 00000000..9451b1c4 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/randomGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const randomGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/randomGeneration.js b/vendors/smart-color/0.2.1/esm/generators/randomGeneration.js new file mode 100644 index 00000000..7b09fcf1 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/randomGeneration.js @@ -0,0 +1,22 @@ +import { paletteOptimization } from '../optimizers'; +import { randomColor } from './random'; +// generate categorical palette randomly +export const randomGeneration = (configuration) => { + const { count, colors } = configuration; + const locked = []; + const palette = { + name: 'random', + semantic: null, + type: 'categorical', + colors: new Array(count).fill(0).map((d, i) => { + const lockedColor = colors[i]; + if (lockedColor) { + locked[i] = true; + return lockedColor; + } + return randomColor(); + }), + }; + return paletteOptimization(palette, { locked }); +}; +//# sourceMappingURL=randomGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/randomGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/randomGeneration.js.map new file mode 100644 index 00000000..f10774b6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/randomGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"randomGeneration.js","sourceRoot":"src/","sources":["generators/randomGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC5D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IACxC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,WAAW,EAAE;gBACf,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,OAAO,WAAW,CAAC;aACpB;YACD,OAAO,WAAW,EAAE,CAAC;QACvB,CAAC,CAAC;KACH,CAAC;IACF,OAAO,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.d.ts new file mode 100644 index 00000000..fd3354d9 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const splitComplementaryGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js b/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js new file mode 100644 index 00000000..22f6c562 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js @@ -0,0 +1,16 @@ +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +// generate categorical palette by split complementary scheme +export const splitComplementaryGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 180; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return paletteOptimization(palette, { locked }); +}; +//# sourceMappingURL=splitComplementaryGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js.map new file mode 100644 index 00000000..61c2ffa1 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/splitComplementaryGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"splitComplementaryGeneration.js","sourceRoot":"src/","sources":["generators/splitComplementaryGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAGrE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,4BAA4B,GAAe,CAAC,aAAa,EAAE,EAAE;IACxE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.d.ts new file mode 100644 index 00000000..ce55fb4a --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const tetradicGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js b/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js new file mode 100644 index 00000000..06a2f1d8 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js @@ -0,0 +1,16 @@ +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +// generate categorical palette by tetradic scheme +export const tetradicGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 90; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return paletteOptimization(palette, { locked }); +}; +//# sourceMappingURL=tetradicGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js.map new file mode 100644 index 00000000..823edb40 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/tetradicGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tetradicGeneration.js","sourceRoot":"src/","sources":["generators/tetradicGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC9D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.d.ts b/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.d.ts new file mode 100644 index 00000000..8f650fee --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const triadicGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js b/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js new file mode 100644 index 00000000..21b4f812 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js @@ -0,0 +1,16 @@ +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +// generate categorical palette by triadic scheme +export const triadicGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 120; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return paletteOptimization(palette, { locked }); +}; +//# sourceMappingURL=triadicGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js.map b/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js.map new file mode 100644 index 00000000..99f803d6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/triadicGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"triadicGeneration.js","sourceRoot":"src/","sources":["generators/triadicGeneration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAGrE,iDAAiD;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/types.d.ts b/vendors/smart-color/0.2.1/esm/generators/types.d.ts new file mode 100644 index 00000000..708157ec --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/types.d.ts @@ -0,0 +1,5 @@ +import { Palette } from '@antv/color-schema'; +import { GeneratorConfiguration } from '../types'; +export declare type Generation = (configuration: { + [K in keyof GeneratorConfiguration]-?: GeneratorConfiguration[K]; +}) => Palette; diff --git a/vendors/smart-color/0.2.1/esm/generators/types.js b/vendors/smart-color/0.2.1/esm/generators/types.js new file mode 100644 index 00000000..718fd38a --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/types.js.map b/vendors/smart-color/0.2.1/esm/generators/types.js.map new file mode 100644 index 00000000..fa2322a7 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"src/","sources":["generators/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.d.ts b/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.d.ts new file mode 100644 index 00000000..100eec85 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.d.ts @@ -0,0 +1,8 @@ +import { ColorSchemeType } from '@antv/color-schema'; +import { GeneratorConfiguration } from '../types'; +export declare const validateConfiguration: (type: ColorSchemeType, configuration: GeneratorConfiguration) => { + color: import("@antv/color-schema").Color; + colors: import("@antv/color-schema").Color[]; + count: number; + tendency: "tint" | "shade"; +}; diff --git a/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js b/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js new file mode 100644 index 00000000..afe58c55 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js @@ -0,0 +1,22 @@ +import { randomColor } from './random'; +const DISCRETE_SCALE_TYPES = ['monochromatic']; +export const validateConfiguration = (type, configuration) => { + const { count = 8, tendency = 'tint' } = configuration; + let { colors = [], color } = configuration; + // If the colour is not configured + // then select the first of the locked colors or generate a random color + if (!color) { + color = colors.find((c) => !!c && !!c.model && !!c.value) || randomColor(); + } + // Discrete scale palette cannot be generated when colors are locked. + if (DISCRETE_SCALE_TYPES.includes(type)) { + colors = []; + } + return { + color, + colors, + count, + tendency, + }; +}; +//# sourceMappingURL=validateConfiguration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js.map b/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js.map new file mode 100644 index 00000000..90f4ae2f --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/generators/validateConfiguration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validateConfiguration.js","sourceRoot":"src/","sources":["generators/validateConfiguration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,oBAAoB,GAAsB,CAAC,eAAe,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAqB,EAAE,aAAqC,EAAE,EAAE;IACpG,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;IACvD,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;IAE3C,kCAAkC;IAClC,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;KAC5E;IAED,qEAAqE;IACrE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACvC,MAAM,GAAG,EAAE,CAAC;KACb;IACD,OAAO;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/index.d.ts b/vendors/smart-color/0.2.1/esm/index.d.ts new file mode 100644 index 00000000..b9dcd958 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/index.d.ts @@ -0,0 +1,8 @@ +export { colorToArray, arrayToColor, colorToGray, colorToHex, hexToColor, nameToColor, colorBlend, colorBrighten, colorDarken, } from './utils'; +export { colorSimulation, invertGrayscale } from './simulators'; +export { paletteGeneration } from './generators'; +export { paletteOptimization } from './optimizers'; +export { getPaletteFromImage, getPaletteFromString } from './extractors'; +export { colorDifference, colorAesthetic } from './evaluators'; +export { ColorBlindnessSimulationType, SimulationType } from './types'; +export { COLOR_BLINDNESS_SIMULATION_TYPES, TENDENCIES } from './constant'; diff --git a/vendors/smart-color/0.2.1/esm/index.js b/vendors/smart-color/0.2.1/esm/index.js new file mode 100644 index 00000000..6783ec52 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/index.js @@ -0,0 +1,13 @@ +export { colorToArray, arrayToColor, colorToGray, colorToHex, hexToColor, nameToColor, colorBlend, colorBrighten, colorDarken, } from './utils'; +// color simulation +export { colorSimulation, invertGrayscale } from './simulators'; +// palette generation +export { paletteGeneration } from './generators'; +// palette optimization +export { paletteOptimization } from './optimizers'; +// get palette +export { getPaletteFromImage, getPaletteFromString } from './extractors'; +// professional test +export { colorDifference, colorAesthetic } from './evaluators'; +export { COLOR_BLINDNESS_SIMULATION_TYPES, TENDENCIES } from './constant'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/index.js.map b/vendors/smart-color/0.2.1/esm/index.js.map new file mode 100644 index 00000000..179b9fea --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,gCAAgC,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/optimizers/index.d.ts b/vendors/smart-color/0.2.1/esm/optimizers/index.d.ts new file mode 100644 index 00000000..3989b753 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/optimizers/index.d.ts @@ -0,0 +1,2 @@ +import { PaletteOptimization } from '../types'; +export declare const paletteOptimization: PaletteOptimization; diff --git a/vendors/smart-color/0.2.1/esm/optimizers/index.js b/vendors/smart-color/0.2.1/esm/optimizers/index.js new file mode 100644 index 00000000..0c0b7e27 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/optimizers/index.js @@ -0,0 +1,49 @@ +import { isContinuousPalette, isMatrixPalette } from '@antv/color-schema'; +import { WHITE } from '../constant'; +import { invertGrayscale } from '../simulators'; +import { colorToGray, colorToArray, arrayToColor, cloneDeep } from '../utils'; +import { optimizePaletteByGA } from './optimizePaletteByGA'; +const COLOR_DIFFERENCE_DEFAULT_VALUE = { + euclidean: 30, + // ref: Categorical Colormap Optimization with Visualization Case Studies + // suggests that [20, 25] might be the borderline zone + CIEDE2000: 20, + // WCAG, 1.4.3 Contrast (Minimum) + contrastRatio: 4.5, +}; +const COLOR_DIFFERENCE_MAX_VALUE = { + euclidean: 291.48, + CIEDE2000: 100, + contrastRatio: 21, +}; +export const paletteOptimization = (palette, configuration = {}) => { + const { locked = [], simulationType = 'normal', threshold, colorModel = 'hsv', colorDifferenceMeasure = 'euclidean', backgroundColor = WHITE, } = configuration; + let newThreshold = threshold; + // set default value + if (!newThreshold) { + newThreshold = COLOR_DIFFERENCE_DEFAULT_VALUE[colorDifferenceMeasure]; + } + // In case of grayscale mode, the maximum difference between two can be estimated directly + // If the set threshold is outside of this range, trim directly to save optimization time + if (simulationType === 'grayscale') { + const maxValue = COLOR_DIFFERENCE_MAX_VALUE[colorDifferenceMeasure]; + newThreshold = Math.min(newThreshold, maxValue / palette.colors.length); + } + const newPalette = cloneDeep(palette); + if (!isMatrixPalette(newPalette) && !isContinuousPalette(newPalette)) { + if (simulationType === 'grayscale') { + const colors = newPalette.colors.map((color) => [colorToGray(color)]); + const newColors = optimizePaletteByGA(colors, locked, simulationType, newThreshold, colorModel, colorDifferenceMeasure, backgroundColor); + newPalette.colors.forEach((color, index) => Object.assign(color, invertGrayscale(newColors[index][0] / 255, color))); + } + else { + const colors = newPalette.colors.map((color) => colorToArray(color, colorModel)); + const newColors = optimizePaletteByGA(colors, locked, simulationType, newThreshold, colorModel, colorDifferenceMeasure, backgroundColor); + newPalette.colors.forEach((color, index) => { + Object.assign(color, arrayToColor(newColors[index], colorModel)); + }); + } + } + return newPalette; +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/optimizers/index.js.map b/vendors/smart-color/0.2.1/esm/optimizers/index.js.map new file mode 100644 index 00000000..f849958a --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/optimizers/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["optimizers/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.d.ts b/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.d.ts new file mode 100644 index 00000000..15c9341c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.d.ts @@ -0,0 +1,7 @@ +import { Color, ColorModel } from '@antv/color-schema'; +import { ColorDifferenceMeasure, SimulationType } from '../types'; +declare type ColorArray = [number] | [number, number, number] | [number, number, number, number]; +declare type Colors = ColorArray[]; +export declare const calFitness: (colors: Colors, locked: boolean[], simulationType: SimulationType, colorModel: ColorModel, colorDifferenceMeasure: ColorDifferenceMeasure, backgroundColor: Color) => number; +export declare const optimizePaletteByGA: (colors: Colors, locked: boolean[], simulationType: SimulationType, threshold: number, colorModel: ColorModel, colorDifference: ColorDifferenceMeasure, backgroundColor: Color) => any; +export {}; diff --git a/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js b/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js new file mode 100644 index 00000000..f1e5dfba --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js @@ -0,0 +1,132 @@ +import { ColorModelRange as COLOR_MODEL_RANGE } from '@antv/color-schema'; +import { arrayToColor, grayToColor, random, randomInt, cloneDeep } from '../utils'; +import { colorDifference } from '../evaluators'; +import { colorSimulation } from '../simulators'; +// Genetic algorithm configuration +const POPULATION_NUMBER = 50; +const CROSSOVER_RATE = 0.9; +const MUTATION_RATE = 0.1; +const MAX_GENERATION = 100; +const ADAPTIVE_RANGE = [0.8, 1.2]; +const rouletteWheelSelection = (fitnesses) => { + const sumFitness = fitnesses.reduce((a, b) => a + b); + let index = 0; + const seed = random(sumFitness); + let count = 0; + for (let i = 0; i < fitnesses.length; i += 1) { + count += fitnesses[i]; + if (seed < count) { + index = +i; + } + } + return index; +}; +const tournamentSelection = (fitnesses) => { + const TOURNAMENT_SIZE = 3; + let index = -1; + let maxFitness = 0; + for (let i = 0; i < TOURNAMENT_SIZE; i += 1) { + const randomIndex = randomInt(fitnesses.length - 1); + if (fitnesses[randomIndex] > maxFitness) { + index = i; + maxFitness = fitnesses[randomIndex]; + } + } + return index; +}; +const selectionFunction = { + rouletteWheel: rouletteWheelSelection, + tournament: tournamentSelection, +}; +const selection = (fitnesses, type = 'tournament') => { + return selectionFunction[type](fitnesses); +}; +const crossover = (father, mother) => { + const child1 = cloneDeep(father); + const child2 = cloneDeep(mother); + for (let i = 1; i < father.length; i += 2) { + child1[i] = mother[i]; + child2[i] = father[i]; + } + return [child1, child2]; +}; +const mutate = (colors, unlockedIndexs, simulationType, colorModel) => { + const newColors = cloneDeep(colors); + // pick one color and change color adaptively + const mutateIndex = unlockedIndexs[randomInt(unlockedIndexs.length - 1)]; + const dimensionIndex = randomInt(colors[0].length - 1); + let newValue = newColors[mutateIndex][dimensionIndex] * random(...ADAPTIVE_RANGE); + // clip + let range = [15, 240]; // grayscale + if (simulationType !== 'grayscale') { + range = COLOR_MODEL_RANGE[colorModel][colorModel.split('')[dimensionIndex]]; + } + const [min, max] = range; + if (newValue < min) { + newValue = min; + } + else if (newValue > max) { + newValue = max; + } + newColors[mutateIndex][dimensionIndex] = newValue; + return newColors; +}; +// fitness function +export const calFitness = (colors, locked, simulationType, colorModel, colorDifferenceMeasure, backgroundColor) => { + let newColors; + if (simulationType === 'grayscale') { + newColors = colors.map(([gray]) => grayToColor(gray)); + } + else { + newColors = colors.map((color) => colorSimulation(arrayToColor(color, colorModel), simulationType)); + } + let minDifference = Infinity; + for (let i = 0; i < newColors.length; i += 1) { + for (let j = i + 1; j < newColors.length; j += 1) { + if (!(locked[i] && locked[j])) { + minDifference = Math.min(minDifference, colorDifference(newColors[i], newColors[j], { measure: colorDifferenceMeasure, backgroundColor })); + } + } + } + return minDifference; +}; +export const optimizePaletteByGA = (colors, locked, simulationType, threshold, colorModel, colorDifference, backgroundColor) => { + if (Math.round(calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)) > threshold) { + return colors; + } + const unlockedIndexs = new Array(colors.length) + .fill(0) + .map((d, index) => index) + .filter((d, index) => !locked[index]); + // Creating a new generation + let population = new Array(POPULATION_NUMBER) + .fill(0) + .map(() => mutate(colors, unlockedIndexs, simulationType, colorModel)); + // Evaluating individuals + let fitnesses = population.map((colors) => calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)); + let bestFitness = Math.max(...fitnesses); + let elites = population[fitnesses.findIndex((d) => d === bestFitness)]; + let cnt = 1; + while (cnt < MAX_GENERATION && Math.round(bestFitness) < threshold) { + // Elitist Strategy + const newPopulation = [elites]; + for (let i = 1; i < POPULATION_NUMBER; i += 2) { + // Selection + const father = population[selection(fitnesses)]; + const mother = population[selection(fitnesses)]; + // Reproduction + let children = random() < CROSSOVER_RATE ? crossover(father, mother) : [father, mother]; + // Mutation + children = children.map((child) => random() < MUTATION_RATE ? mutate(child, unlockedIndexs, simulationType, colorModel) : child); + newPopulation.push(...children); + } + population = newPopulation; + fitnesses = population.map((colors) => calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)); + const newBestFitness = Math.max(...fitnesses); + bestFitness = newBestFitness; + elites = population[fitnesses.findIndex((d) => d === newBestFitness)]; + cnt += 1; + } + return elites; +}; +//# sourceMappingURL=optimizePaletteByGA.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js.map b/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js.map new file mode 100644 index 00000000..941b875c --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/optimizers/optimizePaletteByGA.js.map @@ -0,0 +1 @@ +{"version":3,"file":"optimizePaletteByGA.js","sourceRoot":"src/","sources":["optimizers/optimizePaletteByGA.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.d.ts b/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.d.ts new file mode 100644 index 00000000..d5da84d1 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.d.ts @@ -0,0 +1,3 @@ +import { ColorBlindnessSimulationType, ColorSimulation } from '../types'; +export declare function isColorBlindnessSimulation(type: any): type is ColorBlindnessSimulationType; +export declare const colorBlindnessSimulation: ColorSimulation; diff --git a/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js b/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js new file mode 100644 index 00000000..40c22d71 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js @@ -0,0 +1,17 @@ +// @ts-ignore +import blinder from 'color-blind'; +import { COLOR_BLINDNESS_SIMULATION_TYPES } from '../constant'; +import { hexToColor, colorToHex } from '../utils'; +export function isColorBlindnessSimulation(type) { + return type !== 'normal' && COLOR_BLINDNESS_SIMULATION_TYPES.indexOf(type) > -1; +} +// get color in color blindness simulation +export const colorBlindnessSimulation = (color, type = 'normal') => { + if (type === 'normal') { + return { ...color }; + } + const hexColor = colorToHex(color); + const blindColor = blinder[type](hexColor); + return hexToColor(blindColor); +}; +//# sourceMappingURL=colorBlindness.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js.map b/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js.map new file mode 100644 index 00000000..443b8044 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/colorBlindness.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorBlindness.js","sourceRoot":"src/","sources":["simulators/colorBlindness.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,UAAU,0BAA0B,CAAC,IAAS;IAClD,OAAO,IAAI,KAAK,QAAQ,IAAI,gCAAgC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAoB,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,EAAE;IAClF,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;KACrB;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/simulators/grayscale.d.ts b/vendors/smart-color/0.2.1/esm/simulators/grayscale.d.ts new file mode 100644 index 00000000..179588e9 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/grayscale.d.ts @@ -0,0 +1,4 @@ +import { Color } from '@antv/color-schema'; +import { ColorSimulation } from '../types'; +export declare const grayscale: ColorSimulation; +export declare function invertGrayscale(grayscaleValue: number, color: Color): Color; diff --git a/vendors/smart-color/0.2.1/esm/simulators/grayscale.js b/vendors/smart-color/0.2.1/esm/simulators/grayscale.js new file mode 100644 index 00000000..db9803a6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/grayscale.js @@ -0,0 +1,39 @@ +import { arrayToColor, colorToArray, colorToGray, grayToColor } from '../utils'; +// get color in grayscale +export const grayscale = (color) => { + const gray = colorToGray(color); + const [, , , alpha = 1] = colorToArray(color, 'rgba'); + return grayToColor(gray, alpha); +}; +// invert color from the gray scale value +// grayscaleValue: [0, 1] +export function invertGrayscale(grayscaleValue, color) { + const [, a, b] = colorToArray(color, 'lab'); + const [, , , alpha = 1] = colorToArray(color, 'rgba'); + const target = grayscaleValue * 100; + let L = Math.round(target); + let newGray = colorToGray(arrayToColor([L, a, b], 'lab')); + let cnt = 25; + while (Math.round(target) !== Math.round((newGray / 255) * 100) && cnt > 0) { + if (target > (newGray / 255) * 100) { + L += 1; + } + else { + L -= 1; + } + cnt -= 1; + newGray = colorToGray(arrayToColor([L, a, b], 'lab')); + } + if (Math.round(target) < Math.round((newGray / 255) * 100)) + L -= 1; + let newColor; + if (alpha === 1) { + newColor = arrayToColor([L, a, b], 'lab'); + } + else { + const rgb = colorToArray(arrayToColor([L, a, b], 'lab'), 'rgb'); + newColor = arrayToColor([...rgb, alpha], 'rgba'); + } + return { ...color, ...newColor }; +} +//# sourceMappingURL=grayscale.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/simulators/grayscale.js.map b/vendors/smart-color/0.2.1/esm/simulators/grayscale.js.map new file mode 100644 index 00000000..de3904b5 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/grayscale.js.map @@ -0,0 +1 @@ +{"version":3,"file":"grayscale.js","sourceRoot":"src/","sources":["simulators/grayscale.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGhF,yBAAyB;AACzB,MAAM,CAAC,MAAM,SAAS,GAAoB,CAAC,KAAK,EAAE,EAAE;IAClD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,KAAK,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,yCAAyC;AACzC,yBAAyB;AACzB,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,KAAY;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,KAAK,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,cAAc,GAAG,GAAG,CAAC;IAEpC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;QAC1E,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;YAClC,CAAC,IAAI,CAAC,CAAC;SACR;aAAM;YACL,CAAC,IAAI,CAAC,CAAC;SACR;QACD,GAAG,IAAI,CAAC,CAAC;QACT,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KACvD;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAAE,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAI,QAAe,CAAC;IACpB,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KAC3C;SAAM;QACL,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,GAAG,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAqC,EAAE,MAAM,CAAC,CAAC;KACtF;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;AACnC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/simulators/index.d.ts b/vendors/smart-color/0.2.1/esm/simulators/index.d.ts new file mode 100644 index 00000000..05e27e57 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/index.d.ts @@ -0,0 +1,4 @@ +import { ColorSimulation } from '../types'; +export declare const colorSimulation: ColorSimulation; +export { isColorBlindnessSimulation } from './colorBlindness'; +export { invertGrayscale } from './grayscale'; diff --git a/vendors/smart-color/0.2.1/esm/simulators/index.js b/vendors/smart-color/0.2.1/esm/simulators/index.js new file mode 100644 index 00000000..6da88ab5 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/index.js @@ -0,0 +1,11 @@ +import { colorBlindnessSimulation } from './colorBlindness'; +import { grayscale } from './grayscale'; +export const colorSimulation = (color, type = 'normal') => { + if (type === 'grayscale') { + return grayscale(color); + } + return colorBlindnessSimulation(color, type); +}; +export { isColorBlindnessSimulation } from './colorBlindness'; +export { invertGrayscale } from './grayscale'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/simulators/index.js.map b/vendors/smart-color/0.2.1/esm/simulators/index.js.map new file mode 100644 index 00000000..11fae2a8 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/simulators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["simulators/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAoB,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,EAAE;IACzE,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;KACzB;IACD,OAAO,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/types.d.ts b/vendors/smart-color/0.2.1/esm/types.d.ts new file mode 100644 index 00000000..bfe626a4 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/types.d.ts @@ -0,0 +1,47 @@ +import { Color, Palette, ColorModel, ColorSchemeType, CategoricalPalette, DiscreteScalePalette } from '@antv/color-schema'; +import { COLOR_BLINDNESS_SIMULATION_TYPES, TENDENCIES, COLOR_DIFFERENCE_MEASURES, COLOR_AESTHETIC_MEASURES, BLEND_MODES, SEPARABLE_BLEND_MODES, NON_SEPARABLE_BLEND_MODES } from './constant'; +export declare type ColorBlindnessSimulationType = typeof COLOR_BLINDNESS_SIMULATION_TYPES[number]; +export declare type GrayscaleType = 'grayscale'; +export declare type SimulationType = ColorBlindnessSimulationType | GrayscaleType; +export declare type ColorSimulation = (color: Color, type?: SimulationType) => Color; +export declare type ColorDifferenceMeasure = typeof COLOR_DIFFERENCE_MEASURES[number]; +declare type ColorDifferenceGeneralConfiguration = { + backgroundColor?: Color; +}; +export declare type ColorDifferenceConfiguration = ColorDifferenceGeneralConfiguration & ({ + measure: 'euclidean'; + colorModel?: ColorModel; +} | { + measure: 'CIEDE2000' | 'contrastRatio'; +}); +export declare type ColorDifference = (color1: Color, color2: Color, configuration?: ColorDifferenceConfiguration) => number; +export declare type ColorAestheticMeasure = typeof COLOR_AESTHETIC_MEASURES[number]; +export declare type ColorAestheticConfiguration = { + measure: ColorAestheticMeasure; + backgroundColor?: Color; +}; +export declare type ColorAesthetic = (color1: Color, color2: Color, configuration?: ColorAestheticConfiguration) => number; +export declare type OptimizerConfiguration = { + locked?: boolean[]; + simulationType?: SimulationType; + threshold?: number; + colorModel?: ColorModel; + colorDifferenceMeasure?: ColorDifferenceMeasure; + backgroundColor?: Color; +}; +export declare type PaletteOptimization = (palette: Palette, configuration?: OptimizerConfiguration) => Palette; +declare type Tendency = typeof TENDENCIES[number]; +export declare type GeneratorConfiguration = { + count?: number; + color?: Color; + colors?: (Color | undefined)[]; + tendency?: Tendency; +}; +export declare type PaletteGeneration = (type?: ColorSchemeType, configuration?: GeneratorConfiguration) => CategoricalPalette | DiscreteScalePalette; +export declare type SeparableBlendMode = typeof SEPARABLE_BLEND_MODES[number]; +export declare type NonSeparableBlendMode = typeof NON_SEPARABLE_BLEND_MODES[number]; +export declare type BlendMode = typeof BLEND_MODES[number]; +export declare type ColorBlend = (colorTop: Color, colorBottom: Color, mode?: BlendMode) => Color; +export declare type ColorDarken = (color: Color, value?: number) => Color; +export declare type ColorBrighten = (color: Color, value?: number) => Color; +export {}; diff --git a/vendors/smart-color/0.2.1/esm/types.js b/vendors/smart-color/0.2.1/esm/types.js new file mode 100644 index 00000000..718fd38a --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/types.js.map b/vendors/smart-color/0.2.1/esm/types.js.map new file mode 100644 index 00000000..1d74d2b5 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"src/","sources":["types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.d.ts b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.d.ts new file mode 100644 index 00000000..194d1e9d --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.d.ts @@ -0,0 +1,2 @@ +import { ColorBlend } from '../../types'; +export declare const colorBlend: ColorBlend; diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js new file mode 100644 index 00000000..d4b5a9a9 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js @@ -0,0 +1,115 @@ +import { SEPARABLE_BLEND_MODES } from '../../constant'; +import { colorToArray } from '../colorConversion'; +const multiply = (top, bottom) => (top * bottom) / 255; +const screen = (top, bottom) => top + bottom - (top * bottom) / 255; +const hardLight = (top, bottom) => top < 128 ? multiply(2 * top, bottom) : screen(2 * top - 255, bottom); +const separableBlendFunc = { + /** w3c */ + normal: (top) => top, + darken: (top, bottom) => Math.min(top, bottom), + multiply, + colorBurn: (top, bottom) => { + if (top === 0) + return 0; + return Math.max(0, 255 * (1 - (255 - bottom) / top)); + }, + lighten: (top, bottom) => Math.max(top, bottom), + screen, + colorDodge: (top, bottom) => { + if (top === 255) + return 255; + return Math.min(255, 255 * (bottom / (255 - top))); + }, + overlay: (top, bottom) => hardLight(bottom, top), + softLight: (top, bottom) => { + if (top < 128) { + return bottom - (1 - (2 * top) / 255) * bottom * (1 - bottom / 255); + } + const D = bottom < 64 ? ((16 * (bottom / 255) - 12) * (bottom / 255) + 4) * (bottom / 255) : Math.sqrt(bottom / 255); + return bottom + 255 * ((2 * top) / 255 - 1) * (D - bottom / 255); + }, + hardLight, + difference: (top, bottom) => Math.abs(top - bottom), + exclusion: (top, bottom) => top + bottom - (2 * top * bottom) / 255, + /** photoshop */ + linearBurn: (top, bottom) => Math.max(top + bottom - 255, 0), + linearDodge: (top, bottom) => Math.min(255, top + bottom), + linearLight: (top, bottom) => Math.max(bottom + 2 * top - 255, 0), + vividLight: (top, bottom) => top < 128 ? 255 * (1 - (1 - bottom / 255) / ((2 * top) / 255)) : 255 * (bottom / 2 / (255 - top)), + pinLight: (top, bottom) => (top < 128 ? Math.min(bottom, 2 * top) : Math.max(bottom, 2 * top - 255)), +}; +const lum = (rgb) => { + return 0.3 * rgb[0] + 0.58 * rgb[1] + 0.11 * rgb[2]; +}; +const clipColor = (rgb) => { + const l = lum(rgb); + const min = Math.min(...rgb); + const max = Math.max(...rgb); + let color = [...rgb]; + if (min < 0) { + color = color.map((value) => l + ((value - l) * l) / (l - min)); + } + if (max > 255) { + color = color.map((value) => l + ((value - l) * (255 - l)) / (max - l)); + } + return color; +}; +const setLum = (rgb, l) => { + const d = l - lum(rgb); + return clipColor(rgb.map((value) => value + d)); +}; +const sat = (rgb) => { + return Math.max(...rgb) - Math.min(...rgb); +}; +const setSat = (rgb, s) => { + const arr = rgb.map((value, index) => ({ value, index })); + arr.sort((a, b) => a.value - b.value); + const minIndex = arr[0].index; + const midIndex = arr[1].index; + const maxIndex = arr[2].index; + const color = [...rgb]; + if (color[maxIndex] > color[minIndex]) { + color[midIndex] = ((color[midIndex] - color[minIndex]) * s) / (color[maxIndex] - color[minIndex]); + color[maxIndex] = s; + } + else { + color[midIndex] = 0; + color[maxIndex] = 0; + } + color[minIndex] = 0; + return color; +}; +const nonSeparableBlendFunc = { + hue: (top, bottom) => setLum(setSat(top, sat(bottom)), lum(bottom)), + saturation: (top, bottom) => setLum(setSat(bottom, sat(top)), lum(bottom)), + color: (top, bottom) => setLum(top, lum(bottom)), + luminosity: (top, bottom) => setLum(bottom, lum(top)), +}; +export const colorBlend = (colorTop, colorBottom, mode = 'normal') => { + const [r1, g1, b1, a1] = colorToArray(colorTop, 'rgba'); + const [r2, g2, b2, a2] = colorToArray(colorBottom, 'rgba'); + const rgb1 = [r1, g1, b1]; + const rgb2 = [r2, g2, b2]; + let blendRgb; + if (SEPARABLE_BLEND_MODES.includes(mode)) { + const func = separableBlendFunc[mode]; + blendRgb = rgb1.map((num1, index) => Math.floor(func(num1, rgb2[index]))); + } + else { + blendRgb = nonSeparableBlendFunc[mode](rgb1, rgb2); + } + const a = a1 + a2 * (1 - a1); + const r = Math.round((a1 * (1 - a2) * r1 + a1 * a2 * blendRgb[0] + (1 - a1) * a2 * r2) / a); + const g = Math.round((a1 * (1 - a2) * g1 + a1 * a2 * blendRgb[1] + (1 - a1) * a2 * g2) / a); + const b = Math.round((a1 * (1 - a2) * b1 + a1 * a2 * blendRgb[2] + (1 - a1) * a2 * b2) / a); + if (a === 1) + return { + model: 'rgb', + value: { r, g, b }, + }; + return { + model: 'rgba', + value: { r, g, b, a }, + }; +}; +//# sourceMappingURL=colorBlend.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js.map b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js.map new file mode 100644 index 00000000..c0b29382 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBlend.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorBlend.js","sourceRoot":"src/","sources":["utils/colorComputation/colorBlend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,QAAQ,GAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AAC3E,MAAM,MAAM,GAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AACxF,MAAM,SAAS,GAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACpD,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;AACxE,MAAM,kBAAkB,GAAmD;IACzE,UAAU;IACV,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;IACpB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;IAC9C,QAAQ;IACR,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACzB,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/C,MAAM;IACN,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC1B,IAAI,GAAG,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAChD,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACzB,IAAI,GAAG,GAAG,GAAG,EAAE;YACb,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;SACrE;QACD,MAAM,CAAC,GACL,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAC7G,OAAO,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,SAAS;IACT,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC;IACnD,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG;IAEnE,gBAAgB;IAChB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAC5D,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IACjE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC1B,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACnG,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;CACrG,CAAC;AAKF,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;IAC1B,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IACxC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrB,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KACjE;IACD,IAAI,GAAG,GAAG,GAAG,EAAE;QACb,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACzE;IACD,OAAO,KAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,CAAS,EAAU,EAAE;IAChD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAW,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,CAAS,EAAU,EAAE;IAChD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAE9B,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE;QACrC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACrB;SAAM;QACL,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACrB;IACD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,KAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAyD;IAClF,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1E,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAG,QAAQ,EAAE,EAAE;IAC/E,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,QAAQ,CAAC;IACb,IAAI,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3E;SAAM;QACL,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACpD;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5F,IAAI,CAAC,KAAK,CAAC;QACT,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SACnB,CAAC;IACJ,OAAO;QACL,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACtB,CAAC;AACJ,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.d.ts b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.d.ts new file mode 100644 index 00000000..41777bbf --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.d.ts @@ -0,0 +1,3 @@ +import { ColorBrighten, ColorDarken } from '@src/types'; +export declare const colorDarken: ColorDarken; +export declare const colorBrighten: ColorBrighten; diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js new file mode 100644 index 00000000..4dea9e19 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js @@ -0,0 +1,78 @@ +import { clamp } from '../helper'; +import { colorToArray } from '../colorConversion'; +// get darken/brighten color +// ref: https://zhuanlan.zhihu.com/p/32422584 +const hueStep = 2; +const saturationStep = 0.16; +const saturationStep2 = 0.05; +const brightnessStep1 = 0.05; +const brightnessStep2 = 0.15; +const lightColorCount = 5; +const darkColorCount = 4; +const getHue = (h, i, isLight) => { + let hue; + if (h >= 60 && h <= 240) { + hue = isLight ? h - hueStep * i : h + hueStep * i; + } + else { + hue = isLight ? h + hueStep * i : h - hueStep * i; + } + if (hue < 0) { + hue += 360; + } + else if (hue >= 360) { + hue -= 360; + } + return Math.round(hue); +}; +const getSaturation = (s, i, isLight) => { + let saturation; + if (isLight) { + saturation = s - saturationStep * i; + } + else if (i === darkColorCount) { + saturation = s + saturationStep; + } + else { + saturation = s + saturationStep2 * i; + } + if (isLight && i === lightColorCount && saturation > 0.1) { + saturation = 0.1; + } + saturation = clamp(saturation, 0.06, 1); + return Number(saturation.toFixed(2)); +}; +const getValue = (v, i, isLight) => { + let value; + if (isLight) { + value = v + brightnessStep1 * i; + } + else { + value = v - brightnessStep2 * i; + } + value = clamp(value, 0, 1); + return Number(value.toFixed(2)); +}; +export const colorDarken = (color, value = 1) => { + const [h, s, v] = colorToArray(color, 'hsv'); + return { + model: 'hsv', + value: { + h: getHue(h, value, false), + s: getSaturation(s, value, false), + v: getValue(v, value, false), + }, + }; +}; +export const colorBrighten = (color, value = 1) => { + const [h, s, v] = colorToArray(color, 'hsv'); + return { + model: 'hsv', + value: { + h: getHue(h, value, true), + s: getSaturation(s, value, true), + v: getValue(v, value, true), + }, + }; +}; +//# sourceMappingURL=colorBrightenDarken.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js.map b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js.map new file mode 100644 index 00000000..de605db3 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/colorBrightenDarken.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorBrightenDarken.js","sourceRoot":"src/","sources":["utils/colorComputation/colorBrightenDarken.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.d.ts b/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.d.ts new file mode 100644 index 00000000..e031e979 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.d.ts @@ -0,0 +1,3 @@ +export { colorBlend } from './colorBlend'; +export { colorBrighten, colorDarken } from './colorBrightenDarken'; +export declare const hueOffset: (hue: number, dHue: number) => number; diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js b/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js new file mode 100644 index 00000000..494f8065 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js @@ -0,0 +1,13 @@ +export { colorBlend } from './colorBlend'; +export { colorBrighten, colorDarken } from './colorBrightenDarken'; +export const hueOffset = (hue, dHue) => { + let newHue = (hue + dHue) % 360; + if (newHue < 0) { + newHue += 360; + } + else if (newHue >= 360) { + newHue -= 360; + } + return newHue; +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js.map b/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js.map new file mode 100644 index 00000000..041704d2 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorComputation/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["utils/colorComputation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,IAAY,EAAU,EAAE;IAC7D,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,MAAM,IAAI,GAAG,CAAC;KACf;SAAM,IAAI,MAAM,IAAI,GAAG,EAAE;QACxB,MAAM,IAAI,GAAG,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorConversion.d.ts b/vendors/smart-color/0.2.1/esm/utils/colorConversion.d.ts new file mode 100644 index 00000000..ca013e03 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorConversion.d.ts @@ -0,0 +1,10 @@ +import { Color, ColorModel } from '@antv/color-schema'; +import { Color as ChromaColor } from 'chroma-js'; +export declare const colorToChromaColor: (color: Color) => ChromaColor; +export declare const colorToArray: (color: Color, colorModel?: ColorModel) => [number, number, number] | [number, number, number, number]; +export declare const arrayToColor: (array: [number] | [number, number, number] | [number, number, number, number], colorModel?: ColorModel) => Color; +export declare function colorToGray(color: Color): number; +export declare function grayToColor(gray: number, alpha?: number): Color; +export { colorToHex } from '@antv/color-schema'; +export declare function hexToColor(hexValue: string): Color; +export declare function nameToColor(name: string): Color; diff --git a/vendors/smart-color/0.2.1/esm/utils/colorConversion.js b/vendors/smart-color/0.2.1/esm/utils/colorConversion.js new file mode 100644 index 00000000..268ab81f --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorConversion.js @@ -0,0 +1,93 @@ +import chroma from 'chroma-js'; +import { getHexByName } from './getHexByName'; +const isChromaColor = (color) => { + if (chroma.valid(color)) { + return true; + } + return false; +}; +// Convert color to chroma color +export const colorToChromaColor = (color) => { + const { value } = color; + if (isChromaColor(value)) { + return chroma(value); + } + return chroma('#000'); +}; +// Convert color to an array in a specific color model +export const colorToArray = (color, colorModel = color.model) => { + const chromaColor = colorToChromaColor(color); + if (chromaColor) { + return chromaColor[colorModel](); + } + return [0, 0, 0]; +}; +// Convert an array in a specific color model to color +export const arrayToColor = (array, colorModel = array.length === 4 ? 'rgba' : 'rgb') => { + const value = {}; + if (array.length === 1) { + const [v] = array; + for (let i = 0; i < colorModel.length; i += 1) { + value[colorModel[i]] = v; + } + } + else { + for (let i = 0; i < colorModel.length; i += 1) { + value[colorModel[i]] = array[i]; + } + } + return { + model: colorModel, + value, + }; +}; +// Convert color to gray value +export function colorToGray(color) { + const [r, g, b] = colorToArray(color, 'rgb'); // [red, green, blue] + // Ref:https://tannerhelland.com/2011/10/01/grayscale-image-algorithm-vb6.html + const gray = Math.round(0.299 * r + 0.587 * g + 0.114 * b); + // gray value: [0, 255] + return gray; +} +// Convert gray value to color +export function grayToColor(gray, alpha = 1) { + if (alpha === 1) { + return { + model: 'rgb', + value: { + r: gray, + g: gray, + b: gray, + }, + }; + } + return { + model: 'rgba', + value: { + r: gray, + g: gray, + b: gray, + a: alpha, + }, + }; +} +export { colorToHex } from '@antv/color-schema'; +export function hexToColor(hexValue) { + if (/^(#|0x)?[0-9a-fA-F]{3}$/.test(hexValue) || /^(#|0x)?[0-9a-fA-F]{6}$/.test(hexValue)) { + const rgb = chroma(hexValue).rgb(); + return arrayToColor(rgb, 'rgb'); + } + if (/^(#|0x)?[0-9a-fA-F]{4}$/.test(hexValue) || /^(#|0x)?[0-9a-fA-F]{8}$/.test(hexValue)) { + const rgba = chroma(hexValue).rgba(); + return arrayToColor(rgba, 'rgba'); + } + return { + model: 'rgb', + value: { r: 0, g: 0, b: 0 }, + }; +} +export function nameToColor(name) { + const hex = getHexByName(name); + return hexToColor(hex); +} +//# sourceMappingURL=colorConversion.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/colorConversion.js.map b/vendors/smart-color/0.2.1/esm/utils/colorConversion.js.map new file mode 100644 index 00000000..2aea5dcf --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/colorConversion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorConversion.js","sourceRoot":"src/","sources":["utils/colorConversion.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/degree.d.ts b/vendors/smart-color/0.2.1/esm/utils/degree.d.ts new file mode 100644 index 00000000..a5026a9d --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/degree.d.ts @@ -0,0 +1,2 @@ +export declare function rad2deg(n: number): number; +export declare function deg2rad(n: number): number; diff --git a/vendors/smart-color/0.2.1/esm/utils/degree.js b/vendors/smart-color/0.2.1/esm/utils/degree.js new file mode 100644 index 00000000..0a776a87 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/degree.js @@ -0,0 +1,7 @@ +export function rad2deg(n) { + return n * (180 / Math.PI); +} +export function deg2rad(n) { + return n * (Math.PI / 180); +} +//# sourceMappingURL=degree.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/degree.js.map b/vendors/smart-color/0.2.1/esm/utils/degree.js.map new file mode 100644 index 00000000..3b7b3e03 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/degree.js.map @@ -0,0 +1 @@ +{"version":3,"file":"degree.js","sourceRoot":"src/","sources":["utils/degree.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC7B,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/getHexByName.d.ts b/vendors/smart-color/0.2.1/esm/utils/getHexByName.d.ts new file mode 100644 index 00000000..489f89e7 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/getHexByName.d.ts @@ -0,0 +1 @@ +export declare const getHexByName: (name: string) => any; diff --git a/vendors/smart-color/0.2.1/esm/utils/getHexByName.js b/vendors/smart-color/0.2.1/esm/utils/getHexByName.js new file mode 100644 index 00000000..0c1c5151 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/getHexByName.js @@ -0,0 +1,153 @@ +const nameHex = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32', +}; +// @ts-ignore +export const getHexByName = (name) => nameHex[name] || '#000000'; +//# sourceMappingURL=getHexByName.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/getHexByName.js.map b/vendors/smart-color/0.2.1/esm/utils/getHexByName.js.map new file mode 100644 index 00000000..52a32c77 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/getHexByName.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getHexByName.js","sourceRoot":"src/","sources":["utils/getHexByName.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/helper.d.ts b/vendors/smart-color/0.2.1/esm/utils/helper.d.ts new file mode 100644 index 00000000..0e59bd97 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/helper.d.ts @@ -0,0 +1,4 @@ +export declare const random: (a?: number, b?: number) => number; +export declare const randomInt: (a?: number, b?: number) => number; +export declare const clamp: (num: number, boundOne: number, boundTwo: number) => number; +export declare const cloneDeep: (target: any) => any; diff --git a/vendors/smart-color/0.2.1/esm/utils/helper.js b/vendors/smart-color/0.2.1/esm/utils/helper.js new file mode 100644 index 00000000..83c778a7 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/helper.js @@ -0,0 +1,42 @@ +export const random = (a = 1, b = 0) => { + const lower = Math.min(a, b); + const upper = Math.max(a, b); + return lower + Math.random() * (upper - lower); +}; +export const randomInt = (a = 1, b = 0) => { + const lower = Math.ceil(Math.min(a, b)); + const upper = Math.floor(Math.max(a, b)); + return Math.floor(lower + Math.random() * (upper - lower + 1)); +}; +export const clamp = (num, boundOne, boundTwo) => { + if (!boundTwo) { + return Math.max(num, boundOne) === boundOne ? num : boundOne; + } + if (Math.min(num, boundOne) === num) { + return boundOne; + } + if (Math.max(num, boundTwo) === num) { + return boundTwo; + } + return num; +}; +// poor version, but enough +export const cloneDeep = (target) => { + if (target && typeof target === 'object') { + const isArray = Array.isArray(target); + if (isArray) { + const cloneTarget = target.map((d) => cloneDeep(d)); + return cloneTarget; + } + // isObject + const cloneTarget = {}; + const keys = Object.keys(target); + keys.forEach((key) => { + // @ts-ignore + cloneTarget[key] = cloneDeep(target[key]); + }); + return cloneTarget; + } + return target; +}; +//# sourceMappingURL=helper.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/helper.js.map b/vendors/smart-color/0.2.1/esm/utils/helper.js.map new file mode 100644 index 00000000..2a0092ec --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helper.js","sourceRoot":"src/","sources":["utils/helper.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC,EAAU,EAAE;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC,EAAU,EAAE;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;IACvE,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;KAC9D;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAW,EAAO,EAAE;IAC5C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE;YACX,MAAM,WAAW,GAAI,MAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,WAAW,CAAC;SACpB;QACD,WAAW;QACX,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,aAAa;YACb,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;KACpB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/image.d.ts b/vendors/smart-color/0.2.1/esm/utils/image.d.ts new file mode 100644 index 00000000..45375dcf --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/image.d.ts @@ -0,0 +1 @@ +export declare function loadImage(url: string): Promise; diff --git a/vendors/smart-color/0.2.1/esm/utils/image.js b/vendors/smart-color/0.2.1/esm/utils/image.js new file mode 100644 index 00000000..c72ecbcf --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/image.js @@ -0,0 +1,15 @@ +// Load a image in a promise +export function loadImage(url) { + return new Promise((resolve, reject) => { + const img = new Image(); + img.addEventListener('load', () => { + resolve(img); + }); + img.addEventListener('error', () => { + reject(new Error(`Failed to load image URL: ${url}`)); + }); + img.crossOrigin = 'anonymous'; + img.src = url; + }); +} +//# sourceMappingURL=image.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/image.js.map b/vendors/smart-color/0.2.1/esm/utils/image.js.map new file mode 100644 index 00000000..dcd58047 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/image.js.map @@ -0,0 +1 @@ +{"version":3,"file":"image.js","sourceRoot":"src/","sources":["utils/image.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAC9B,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/index.d.ts b/vendors/smart-color/0.2.1/esm/utils/index.d.ts new file mode 100644 index 00000000..10077df3 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/index.d.ts @@ -0,0 +1,5 @@ +export { loadImage } from './image'; +export { hueOffset, colorBlend, colorBrighten, colorDarken } from './colorComputation'; +export { colorToArray, arrayToColor, colorToGray, grayToColor, colorToHex, hexToColor, colorToChromaColor, nameToColor, } from './colorConversion'; +export { random, randomInt, clamp, cloneDeep } from './helper'; +export { rad2deg, deg2rad } from './degree'; diff --git a/vendors/smart-color/0.2.1/esm/utils/index.js b/vendors/smart-color/0.2.1/esm/utils/index.js new file mode 100644 index 00000000..443a87c6 --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/index.js @@ -0,0 +1,6 @@ +export { loadImage } from './image'; +export { hueOffset, colorBlend, colorBrighten, colorDarken } from './colorComputation'; +export { colorToArray, arrayToColor, colorToGray, grayToColor, colorToHex, hexToColor, colorToChromaColor, nameToColor, } from './colorConversion'; +export { random, randomInt, clamp, cloneDeep } from './helper'; +export { rad2deg, deg2rad } from './degree'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/esm/utils/index.js.map b/vendors/smart-color/0.2.1/esm/utils/index.js.map new file mode 100644 index 00000000..00a05deb --- /dev/null +++ b/vendors/smart-color/0.2.1/esm/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/js/smart-color.min.js b/vendors/smart-color/0.2.1/js/smart-color.min.js new file mode 100644 index 00000000..f843c135 --- /dev/null +++ b/vendors/smart-color/0.2.1/js/smart-color.min.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TENDENCIES=exports.COLOR_BLINDNESS_SIMULATION_TYPES=exports.colorAesthetic=exports.colorDifference=exports.getPaletteFromString=exports.getPaletteFromImage=exports.paletteOptimization=exports.paletteGeneration=exports.invertGrayscale=exports.colorSimulation=exports.colorDarken=exports.colorBrighten=exports.colorBlend=exports.nameToColor=exports.hexToColor=exports.colorToHex=exports.colorToGray=exports.arrayToColor=exports.colorToArray=void 0;var e=require("./utils");Object.defineProperty(exports,"colorToArray",{enumerable:!0,get:function(){return e.colorToArray}}),Object.defineProperty(exports,"arrayToColor",{enumerable:!0,get:function(){return e.arrayToColor}}),Object.defineProperty(exports,"colorToGray",{enumerable:!0,get:function(){return e.colorToGray}}),Object.defineProperty(exports,"colorToHex",{enumerable:!0,get:function(){return e.colorToHex}}),Object.defineProperty(exports,"hexToColor",{enumerable:!0,get:function(){return e.hexToColor}}),Object.defineProperty(exports,"nameToColor",{enumerable:!0,get:function(){return e.nameToColor}}),Object.defineProperty(exports,"colorBlend",{enumerable:!0,get:function(){return e.colorBlend}}),Object.defineProperty(exports,"colorBrighten",{enumerable:!0,get:function(){return e.colorBrighten}}),Object.defineProperty(exports,"colorDarken",{enumerable:!0,get:function(){return e.colorDarken}});var r=require("./simulators");Object.defineProperty(exports,"colorSimulation",{enumerable:!0,get:function(){return r.colorSimulation}}),Object.defineProperty(exports,"invertGrayscale",{enumerable:!0,get:function(){return r.invertGrayscale}});var t=require("./generators");Object.defineProperty(exports,"paletteGeneration",{enumerable:!0,get:function(){return t.paletteGeneration}});var o=require("./optimizers");Object.defineProperty(exports,"paletteOptimization",{enumerable:!0,get:function(){return o.paletteOptimization}});var n=require("./extractors");Object.defineProperty(exports,"getPaletteFromImage",{enumerable:!0,get:function(){return n.getPaletteFromImage}}),Object.defineProperty(exports,"getPaletteFromString",{enumerable:!0,get:function(){return n.getPaletteFromString}});var i=require("./evaluators");Object.defineProperty(exports,"colorDifference",{enumerable:!0,get:function(){return i.colorDifference}}),Object.defineProperty(exports,"colorAesthetic",{enumerable:!0,get:function(){return i.colorAesthetic}});var a=require("./constant");Object.defineProperty(exports,"COLOR_BLINDNESS_SIMULATION_TYPES",{enumerable:!0,get:function(){return a.COLOR_BLINDNESS_SIMULATION_TYPES}}),Object.defineProperty(exports,"TENDENCIES",{enumerable:!0,get:function(){return a.TENDENCIES}})}); diff --git a/vendors/smart-color/0.2.1/lib/constant.d.ts b/vendors/smart-color/0.2.1/lib/constant.d.ts new file mode 100644 index 00000000..35be048c --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/constant.d.ts @@ -0,0 +1,9 @@ +import { Color } from '@antv/color-schema'; +export declare const COLOR_BLINDNESS_SIMULATION_TYPES: readonly ["normal", "protanomaly", "deuteranomaly", "tritanomaly", "protanopia", "deuteranopia", "tritanopia", "achromatomaly", "achromatopsia"]; +export declare const TENDENCIES: readonly ["tint", "shade"]; +export declare const COLOR_DIFFERENCE_MEASURES: readonly ["euclidean", "CIEDE2000", "contrastRatio"]; +export declare const COLOR_AESTHETIC_MEASURES: readonly ["pairPreference", "harmony"]; +export declare const WHITE: Color; +export declare const SEPARABLE_BLEND_MODES: string[]; +export declare const NON_SEPARABLE_BLEND_MODES: readonly ["hue", "saturation", "color", "luminosity"]; +export declare const BLEND_MODES: readonly [...string[], "hue", "saturation", "color", "luminosity"]; diff --git a/vendors/smart-color/0.2.1/lib/constant.js b/vendors/smart-color/0.2.1/lib/constant.js new file mode 100644 index 00000000..854b6301 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/constant.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BLEND_MODES = exports.NON_SEPARABLE_BLEND_MODES = exports.SEPARABLE_BLEND_MODES = exports.WHITE = exports.COLOR_AESTHETIC_MEASURES = exports.COLOR_DIFFERENCE_MEASURES = exports.TENDENCIES = exports.COLOR_BLINDNESS_SIMULATION_TYPES = void 0; +exports.COLOR_BLINDNESS_SIMULATION_TYPES = [ + 'normal', + 'protanomaly', + 'deuteranomaly', + 'tritanomaly', + 'protanopia', + 'deuteranopia', + 'tritanopia', + 'achromatomaly', + 'achromatopsia', +]; +// color optimization configuration +exports.TENDENCIES = ['tint', 'shade']; +exports.COLOR_DIFFERENCE_MEASURES = ['euclidean', 'CIEDE2000', 'contrastRatio']; +exports.COLOR_AESTHETIC_MEASURES = ['pairPreference', 'harmony']; +exports.WHITE = { + model: 'rgb', + value: { + r: 255, + g: 255, + b: 255, + }, +}; +// Separable blend modes https://www.w3.org/TR/compositing/#blendingseparable +exports.SEPARABLE_BLEND_MODES = [ + 'normal', + 'darken', + 'multiply', + 'colorBurn', + 'linearBurn', + 'lighten', + 'screen', + 'colorDodge', + 'linearDodge', + 'overlay', + 'softLight', + 'hardLight', + 'vividLight', + 'linearLight', + 'pinLight', + 'difference', + 'exclusion', +]; +// Non-separable blend modes https://www.w3.org/TR/compositing/#blendingnonseparable +exports.NON_SEPARABLE_BLEND_MODES = ['hue', 'saturation', 'color', 'luminosity']; +exports.BLEND_MODES = [...exports.SEPARABLE_BLEND_MODES, ...exports.NON_SEPARABLE_BLEND_MODES]; +//# sourceMappingURL=constant.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/constant.js.map b/vendors/smart-color/0.2.1/lib/constant.js.map new file mode 100644 index 00000000..36cfd139 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/constant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constant.js","sourceRoot":"src/","sources":["constant.ts"],"names":[],"mappings":";;;AAEa,QAAA,gCAAgC,GAAG;IAC9C,QAAQ;IACR,aAAa;IACb,eAAe;IACf,aAAa;IACb,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,eAAe;IACf,eAAe;CACP,CAAC;AACX,mCAAmC;AACtB,QAAA,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAC;AACxC,QAAA,yBAAyB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,CAAU,CAAC;AAEjF,QAAA,wBAAwB,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAU,CAAC;AAElE,QAAA,KAAK,GAAU;IAC1B,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE;QACL,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;KACP;CACF,CAAC;AAEF,6EAA6E;AAChE,QAAA,qBAAqB,GAAG;IACnC,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,WAAW;IACX,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,UAAU;IACV,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF,oFAAoF;AACvE,QAAA,yBAAyB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;AAElF,QAAA,WAAW,GAAG,CAAC,GAAG,6BAAqB,EAAE,GAAG,iCAAyB,CAAU,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.d.ts new file mode 100644 index 00000000..f3ae3e41 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const colorHarmony: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js new file mode 100644 index 00000000..b7ec783c --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorHarmony = void 0; +const utils_1 = require("../../utils"); +const Hab = (b, a) => { + if (a === 0 && b === 0) + return 0; + const tmphp = utils_1.rad2deg(Math.atan2(b, a)); + if (tmphp >= 0) + return tmphp; + return tmphp + 360; +}; +// ref: Color Harmony for Image Indexing +// ref: A Study of Colour Harmony for Two-colour Combinations +// ref: https://last.hit.bme.hu/download/firtha/video/Colorimetry/Fairchild_M._Color_appearance_models__2005.pdf p79-81 +const colorHarmony = (color1, color2) => { + const [L1, a1, b1] = utils_1.colorToArray(color1, 'lab'); + const [L2, a2, b2] = utils_1.colorToArray(color2, 'lab'); + const Cab1 = Math.sqrt(a1 ** 2 + b1 ** 2); + const Cab2 = Math.sqrt(a1 ** 2 + b1 ** 2); + const Hab1 = Hab(b1, a1); + const Hab2 = Hab(b2, a2); + const dCab = Cab1 - Cab2; + const dHab2 = (a1 - a2) ** 2 + (b1 - b2) ** 2 - dCab ** 2; + const dC = Math.sqrt(dHab2 + (dCab / 1.46) ** 2); + const HC = 0.04 + 0.53 * Math.tanh(0.8 - 0.045 * dC); + const Lsum = L1 + L2; + const HLsum = 0.28 + 0.54 * Math.tanh(-3.88 + 0.029 * Lsum); + const HdL = 0.14 + 0.15 * Math.tanh(-2 + 0.2 * Math.abs(L1 - L2)); + const HL = HLsum + HdL; + const EC1 = 0.5 + 0.5 * Math.tanh(-2 + 0.5 * Cab1); + const EC2 = 0.5 + 0.5 * Math.tanh(-2 + 0.5 * Cab2); + const HS1 = -0.08 - 0.14 * Math.sin(utils_1.deg2rad(Hab1 + 50)) - 0.07 * Math.sin(utils_1.deg2rad(2 * Hab1 + 90)); + const HS2 = -0.08 - 0.14 * Math.sin(utils_1.deg2rad(Hab2 + 50)) - 0.07 * Math.sin(utils_1.deg2rad(2 * Hab2 + 90)); + const EY1 = ((0.22 * L1 - 12.8) / 10) * Math.exp((90 - Hab1) / 10 - Math.exp((90 - Hab1) / 10)); + const EY2 = ((0.22 * L2 - 12.8) / 10) * Math.exp((90 - Hab2) / 10 - Math.exp((90 - Hab2) / 10)); + const HSY1 = EC1 * (HS1 + EY1); + const HSY2 = EC2 * (HS2 + EY2); + const HH = HSY1 + HSY2; + return HC + HL + HH; +}; +exports.colorHarmony = colorHarmony; +//# sourceMappingURL=colorHarmony.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js.map new file mode 100644 index 00000000..0ba2be59 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/colorHarmony.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorHarmony.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/colorHarmony.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.d.ts new file mode 100644 index 00000000..4ec114ca --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.d.ts @@ -0,0 +1,2 @@ +import { ColorAesthetic } from '@src/types'; +export declare const colorAesthetic: ColorAesthetic; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js new file mode 100644 index 00000000..35ec3445 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorAesthetic = void 0; +const constant_1 = require("../../constant"); +const utils_1 = require("../../utils"); +const pairPreference_1 = require("./pairPreference"); +const colorHarmony_1 = require("./colorHarmony"); +const colorAesthetic = (color1, color2, configuration = { measure: 'pairPreference' }) => { + const { measure = 'pairPreference', backgroundColor = constant_1.WHITE } = configuration; + // If the color is semi-transparent, the color will be overlapped on a white background by default for comparison + const overlappedColor1 = utils_1.colorBlend(color1, backgroundColor); + const overlappedColor2 = utils_1.colorBlend(color2, backgroundColor); + switch (measure) { + case 'pairPreference': + return pairPreference_1.pairPreference(overlappedColor1, overlappedColor2); + case 'harmony': + return colorHarmony_1.colorHarmony(overlappedColor1, overlappedColor2); + default: + return pairPreference_1.pairPreference(overlappedColor1, overlappedColor2); + } +}; +exports.colorAesthetic = colorAesthetic; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js.map new file mode 100644 index 00000000..611d3305 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/index.ts"],"names":[],"mappings":";;;AACA,6CAAuC;AACvC,uCAAyC;AACzC,qDAAkD;AAClD,iDAA8C;AAEvC,MAAM,cAAc,GAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC9G,MAAM,EAAE,OAAO,GAAG,gBAAgB,EAAE,eAAe,GAAG,gBAAK,EAAE,GAAG,aAAa,CAAC;IAC9E,iHAAiH;IACjH,MAAM,gBAAgB,GAAG,kBAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,kBAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,QAAQ,OAAO,EAAE;QACf,KAAK,gBAAgB;YACnB,OAAO,+BAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC5D,KAAK,SAAS;YACZ,OAAO,2BAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC1D;YACE,OAAO,+BAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;KAC7D;AACH,CAAC,CAAC;AAbW,QAAA,cAAc,kBAazB"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts new file mode 100644 index 00000000..806b9587 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.d.ts @@ -0,0 +1 @@ +export declare const LAB_TO_COOLNESS: number[]; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js new file mode 100644 index 00000000..cb8bb019 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LAB_TO_COOLNESS = void 0; +// prettier-ignore +exports.LAB_TO_COOLNESS = [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.49, 7.13, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.14, 7.5, 4.36, 5.54, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.46, 7.46, 5.18, 3.75, 2.77, 2.78, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.22, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 2.88, 2.88, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.09, 10.71, 10.34, 10, 10, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.11, 10.84, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.41, 8.71, 9.4, 9.13, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.41, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.11, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.75, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, , , , , , , , , , , , , , , , , , , , , , , , , , , 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, , , , , , , , , , , , , , , , , , , , , , , , , , 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.94, 11.07, 10.8, 10.42, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.69, 11.11, 10.84, 10.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.96, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, , , , , , , , , , , , , , , , , , , , , , , , , , , 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, , , , , , , , , , , , , , , , , , , , , , , , , , 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, , , , , , , , , , , , , , , , , , , , , , , , , 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 9.02, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.97, 8.97, 10.49, 10.79, 10.52, 10.15, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.82, 12.43, 11.98, 11.56, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, , , , , , , , , , , , , , , , , , , , , , , , , , , 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, , , , , , , , , , , , , , , , , , , , , , , , , , 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, , , , , , , , , , , , , , , , , , , , , , , , , 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, , , , , , , , , , , , , , , , , , , , , , , 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , 10.35, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 9.96, 10.51, 10.25, 10, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.3, 12.3, 11.89, 11.55, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.09, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, , , , , , , , , , , , , , , , , , , , , , , , , , , 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, , , , , , , , , , , , , , , , , , , , , , , , , , 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, , , , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, , , , , , , , , , , , , , , , , , , , , , , 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, , , , , , , , , , , , , , , , , , , , , , 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, , , , , , , , , , , , , , , , , , , , , 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 10.65, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 6.04, , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.21, 11.88, 11.59, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, , , , , , , , , , , , , , , , , , , , , , , , , , , 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, , , , , , , , , , , , , , , , , , , , , , , , , 14.01, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, , , , , , , , , , , , , , , , , , , , , , , , 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, , , , , , , , , , , , , , , , , , , , , , 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 2.9, , , , , , , , , , , , , , , , , , , , 12.43, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, , , , , , , , , , , , , , , , , , , , 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.14, 11.85, 11.64, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.51, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, , , , , , , , , , , , , , , , , , , , , , , , , , , 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, , , , , , , , , , , , , , , , , , , , , , , , , , 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, , , , , , , , , , , , , , , , , , , , , , , , , 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, , , , , , , , , , , , , , , , , , , , , , , , 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, , , , , , , , , , , , , , , , , , , , , , , 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, , , , , , , , , , , , , , , , , , , , , , 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, , , , , , , , , , , , , , , , , , , , , 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, , , , , , , , , , , , , , , , , , , , 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.51, , , , , , , , , , , , , , , , , , 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, , , , , , , , , , , , , , , , , 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.84, , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.11, 11.9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.87, 12.45, 12.14, 11.85, 11.64, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 11.05, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, , , , , , , , , , , , , , , , , , , , , , , , , , , 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, , , , , , , , , , , , , , , , , , , , , , , , , 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, , , , , , , , , , , , , , , , , , , , , , , , 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, , , , , , , , , , , , , , , , , , , , , , , 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, , , , , , , , , , , , , , , , , , , , , , 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, , , , , , , , , , , , , , , , , , , , , 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, , , , , , , , , , , , , , , , , , , , 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, , , , , , , , , , , , , , , , , , , 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, , , , , , , , , , , , , , , , , , 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, , , , , , , , , , , , , , , , , 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, , , , , , , , , , , , , , , , 7.79, 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.27, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.7, 12.4, 12.11, 11.9, 11.7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.23, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, , , , , , , , , , , , , , , , , , , , , , , , , , , 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, , , , , , , , , , , , , , , , , , , , , , , , , 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, , , , , , , , , , , , , , , , , , , , , , , , 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, , , , , , , , , , , , , , , , , , , , , , , 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, , , , , , , , , , , , , , , , , , , , , 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, , , , , , , , , , , , , , , , , , , , 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, , , , , , , , , , , , , , , , , , , 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, , , , , , , , , , , , , , , , , , 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, , , , , , , , , , , , , , , , , 11.87, 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, , , , , , , , , , , , , , , , 10.97, 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, , , , , , , , , , , , , , , 9.74, 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, , , , , , , , , , , , , , 0, 7.79, 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, , , , , , , , , , , , 0, 0, 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 4.8, 5.8, 6.81, 7.79, 0, 0, 0, , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.38, 12.38, 11.91, 11.27, 10.42, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.75, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, , , , , , , , , , , , , , , , , , , , , , , , , , , 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, , , , , , , , , , , , , , , , , , , , , , , , , 16.92, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, , , , , , , , , , , , , , , , , , , , , , , , 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, , , , , , , , , , , , , , , , , , , , , , , 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, , , , , , , , , , , , , , , , , , , , , 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, , , , , , , , , , , , , , , , , , , , 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , , 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, , , , , , , , , , , , , , , , , , 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, , , , , , , , , , , , , , , , , 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, , , , , , , , , , , , , , , 11.13, 11.87, 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, , , , , , , , , , , , , , , 10.97, 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, , , , , , , , , , , , , , 9.74, 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, , , , , , , , , , , , , 0, 7.79, 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , 0, 0, 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , 0, 0, 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, , , , , , , , , , , , , 0, 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, 6.61, , , , , , , , , , , , , 0, 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 4.8, 5.8, 6.81, 7.79, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, 6.3, 6.1, 5.45, 5.22, 5.04, 5.47, 5.29, 5.73, 6.73, 7.12, 7.79, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 8.97, 8.94, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.09, 10.45, 9.62, 7.95, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.42, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, , , , , , , , , , , , , , , , , , , , , , , , , , , , 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, , , , , , , , , , , , , , , , , , , , , , , , , , , 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, , , , , , , , , , , , , , , , , , , , , , , , , 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, , , , , , , , , , , , , , , , , , , , , , , , 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, , , , , , , , , , , , , , , , , , , , , , , 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, , , , , , , , , , , , , , , , , , , , , 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, , , , , , , , , , , , , , , , , , , , 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, , , , , , , , , , , , , , , , , , , 14.58, 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , 13.83, 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, , , , , , , , , , , , , , , , 12.93, 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, , , , , , , , , , , , , , , 12.03, 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, , , , , , , , , , , , , , 11.13, 11.87, 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, , , , , , , , , , , , , , 10.97, 11.71, 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, , , , , , , , , , , , , , 10.67, 11.41, 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, , , , , , , , , , , , , , 10.31, 11.1, 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, , , , , , , , , , , , , , 9.82, 10.65, 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 7.79, 10.35, 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , 0, 8.97, 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.03, , , , , , , , , , , , , , 0, 0, 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, , , , , , , , , , , , , , 0, 0, 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, 6.61, 0, , , , , , , , , , , , , 0, 0, 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 4.8, 5.8, 6.81, 7.79, 0, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, 6.3, 6.1, 5.45, 5.22, 5.04, 5.47, 5.29, 5.73, 6.73, 7.12, 7.79, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 8.97, 8.94, 8.19, 8.06, 7.93, 8.31, 8.18, 7.79, , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.27, 8.01, 6.61, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, , , , , , , , , , , , , , , , , , , , , , , , , , , , 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, , , , , , , , , , , , , , , , , , , , , , , , , , 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, , , , , , , , , , , , , , , , , , , , , , , , , 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, , , , , , , , , , , , , , , , , , , , , , , 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, , , , , , , , , , , , , , , , , , , , , , 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, , , , , , , , , , , , , , , , , , , , , 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, , , , , , , , , , , , , , , , , , , , 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, , , , , , , , , , , , , , , , , , 14.59, 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, , , , , , , , , , , , , , , , , 13.84, 14.58, 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , 13.83, 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, , , , , , , , , , , , , , , , 12.93, 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, , , , , , , , , , , , , , , , 12.77, 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, , , , , , , , , , , , , , , 12.61, 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, , , , , , , , , , , , , , , 12.31, 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, , , , , , , , , , , , , , , 12, 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, , , , , , , , , , , , , , , 11.7, 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, 2.12, , , , , , , , , , , , , , , 11.39, 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.61, , , , , , , , , , , , , , , 10.94, 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.37, , , , , , , , , , , , , , , 10.49, 10.79, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.03, 6.21, , , , , , , , , , , , , , , 9.96, 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, 0, , , , , , , , , , , , , , , 6.61, 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, 2, 2, 3.86, 6.05, 6.61, 0, , , , , , , , , , , , , , , 0, 6.61, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, 2.84, 2.37, 2, 2, 2, 3.08, 4.65, 6.27, 6.61, 0, 0, , , , , , , , , , , , , , , 0, 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, 4.47, 3.99, 3.52, 3.04, 2.55, 2.2, 2.87, 4.44, 5.45, 7.02, 0, 0, 0, 0, , , , , , , , , , , , , , , 0, 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, 5.93, 5.44, 4.96, 4.48, 4, 3.64, 3.41, 3.84, 3.84, , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 7.79, 9, 8.25, 6.98, 6.3, 6.1, 5.45, 5.22, 5.04, , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79, 8.97, 8.97, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.91, 10.27, 9.27, 8.01, 6.61, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 7.9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, , , , , , , , , , , , , , , , , , , , , , , , , , 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, , , , , , , , , , , , , , , , , , , , , , , , 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, , , , , , , , , , , , , , , , , , , , , , , 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, , , , , , , , , , , , , , , , , , , , , , 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, , , , , , , , , , , , , , , , , , , , 16.45, 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, , , , , , , , , , , , , , , , , , , 15.81, 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, , , , , , , , , , , , , , , , , , 15.2, 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, , , , , , , , , , , , , , , , , 14.59, 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, , , , , , , , , , , , , , , , 13.84, 14.58, 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , 13.83, 14.21, 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, , , , , , , , , , , , , , , , 13.67, 13.69, 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, , , , , , , , , , , , , , , , 13.35, 13.17, 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, , , , , , , , , , , , , , , , 12.93, 12.66, 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, , , , , , , , , , , , , , , , 12.43, 12.25, 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, 3.35, , , , , , , , , , , , , , , 12.03, 11.76, 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, 2.78, , , , , , , , , , , , , , , 11.73, 11.46, 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, 2.12, 3.81, , , , , , , , , , , , , , , 11.34, 11.08, 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.61, 5.29, , , , , , , , , , , , , , , 11.07, 10.8, 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.37, 6.56, , , , , , , , , , , , , , , 10.52, 10.52, 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4.03, 6.21, 0, , , , , , , , , , , , , , , 10.51, 10.25, 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, 2.92, 2.33, 2, 2, 2, 2, 2, 2, 2, 3.68, 5.82, 0, , , , , , , , , , , , , , , , 10.01, 10.08, 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, 4.85, 4.22, 3.74, 3.12, 2.64, 2.04, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , 9.85, 9.85, 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, 6.51, 6.03, 5.43, 4.92, 4.42, 3.81, 3.32, , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 8.97, 8.94, 8.58, 8.22, 7.73, 7.37, 6.88, 6.4, 5.92, 5.44, 4.95, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 7.79, 9.31, 8.04, 7.62, 7.13, 6.77, 6.29, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 7.79, 9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.65, 7.65, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, , , , , , , , , , , , , , , , , , , , , , , , , , , 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, , , , , , , , , , , , , , , , , , , , , , , , , 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 9.43, , , , , , , , , , , , , , , , , , , , , , , 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, , , , , , , , , , , , , , , , , , , , , 17.04, 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, , , , , , , , , , , , , , , , , , , , 16.75, 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, , , , , , , , , , , , , , , , , , , 16.45, 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, , , , , , , , , , , , , , , , , , 15.81, 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, , , , , , , , , , , , , , , , , 15.2, 15.94, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, , , , , , , , , , , , , , , , , 15.32, 15.28, 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, , , , , , , , , , , , , , , , , 14.68, 14.64, 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , 14.04, 14, 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, , , , , , , , , , , , , , , , , 13.52, 13.24, 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, , , , , , , , , , , , , , , , , 12.89, 12.71, 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, 4.34, , , , , , , , , , , , , , , , , 12.38, 12.1, 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, 3.77, , , , , , , , , , , , , , , , , 11.87, 11.59, 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, 3.35, , , , , , , , , , , , , , , , , 11.47, 11.1, 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, 2.78, , , , , , , , , , , , , , , , , 11.09, 10.71, 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.09, 2.12, 3.81, , , , , , , , , , , , , , , , , 10.7, 10.32, 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2.61, 5.29, , , , , , , , , , , , , , , , , 10.42, 10.06, 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, 2.4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , 10.15, 10, 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, 4.7, 3.95, 3.34, 2.6, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , , , 10, 9.65, 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, 6.04, 5.4, 4.78, 4.15, 3.54, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.78, 9.41, 9.05, 8.56, 8.2, 7.71, 7.11, 6.62, 5.99, 5.48, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.54, 9.18, 8.81, 8.33, 7.96, 7.48, 7, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.97, 8.94, 8.58, 8.22, 7.73, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 7.79, 9.31, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 16.23, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, , , , , , , , , , , , , , , , , , , , , , , , , 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, , , , , , , , , , , , , , , , , , , , , , , 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, , , , , , , , , , , , , , , , , , , , , , 17.31, 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, , , , , , , , , , , , , , , , , , , , 16.67, 17.04, 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, , , , , , , , , , , , , , , , , , , 16.13, 16.75, 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, , , , , , , , , , , , , , , , , 15.52, 16.45, 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, , , , , , , , , , , , , , , , , 15.81, 16.28, 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, , , , , , , , , , , , , , , , , 16.05, 16.05, 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, , , , , , , , , , , , , , , , , , 15.5, 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, , , , , , , , , , , , , , , , , , 14.75, 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , 14.01, 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, 5.33, , , , , , , , , , , , , , , , , , 13.24, 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, 4.91, , , , , , , , , , , , , , , , , , 12.44, 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, 4.34, 4.34, , , , , , , , , , , , , , , , , , 11.75, 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, 3.77, 3.91, , , , , , , , , , , , , , , , , , 11.22, 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, 2.93, 2.94, 3.07, 3.06, 3.35, 3.89, , , , , , , , , , , , , , , , , , 10.72, 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, 2, 2, 2, 2, 2.09, 2.22, 2.38, 2.52, 2.64, 2.78, 4.97, , , , , , , , , , , , , , , , , , 10.34, 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, 1.9, 2, 2, 2, 2, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , 10, 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, 4.03, 3.31, 2.8, 2, 2, 2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.99, 9.5, 9.02, 8.35, 7.69, 6.92, 6.28, 5.39, 4.63, 3.88, 3.01, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.63, 9.15, 8.66, 8.17, 7.52, 6.86, 6.09, 5.45, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.28, 8.79, 8.43, 7.82, 7.34, 6.69, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.05, 8.56, 8.2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.81, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.29, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10.96, 10.53, 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.66, 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 13.98, 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 15.44, 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , 16.71, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, 0, , , , , , , , , , , , , , , , , , , , , , , 17.23, 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, , , , , , , , , , , , , , , , , , , , , 16.85, 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, , , , , , , , , , , , , , , , , , , , 16.89, 17.31, 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, , , , , , , , , , , , , , , , , , , 16.67, 17.04, 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, , , , , , , , , , , , , , , , , , , 16.75, 16.91, 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, , , , , , , , , , , , , , , , , , , 16.59, 16.74, 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, , , , , , , , , , , , , , , , , , , 16.36, 16.51, 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, , , , , , , , , , , , , , , , , , 16.13, 16.21, 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, , , , , , , , , , , , , , , , , , 15.73, 15.95, 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, 6.42, , , , , , , , , , , , , , , , , , 14.87, 14.72, 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , 14.02, 13.02, 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, 5.33, 5.47, , , , , , , , , , , , , , , , , , 13, 11.75, 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, 4.91, 4.91, , , , , , , , , , , , , , , , , , 12.11, 10.48, 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, 4.14, 4.1, 4.05, 4.2, 4.34, 4.34, , , , , , , , , , , , , , , , , , , 11.22, 9.59, 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 2.15, 2.64, 2.9, 3.19, 3.32, 3.46, 3.62, 3.5, 3.63, 3.77, 3.91, , , , , , , , , , , , , , , , , , , 10.74, 9.11, 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, 1.51, 1.72, 1.92, 2, 2, 2.22, 2.51, 2.64, , , , , , , , , , , , , , , , , , , , , , , , , 10.24, 9.06, 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, 1.49, 1.58, 1.73, 1.88, 2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 10, 9.5, 8.36, 7.12, 5.98, 4.84, 3.81, 2.99, 2.17, 1.78, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.86, 9.34, 8.56, 7.83, 6.82, 5.68, 4.75, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.5, 9.02, 8.35, 7.69, 6.92, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.15, 8.66, 8.66, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.01, 8.15, 7.29, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.4, 10.96, 10.53, 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.66, 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 14.15, 13.98, 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , 15.31, 15.44, 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , 16.28, 16.71, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 16.5, 17.23, 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, 0, , , , , , , , , , , , , , , , , , , , 16.85, 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, 0, , , , , , , , , , , , , , , , , , , , 17.31, 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, 0, , , , , , , , , , , , , , , , , , , , 17.22, 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, 0, , , , , , , , , , , , , , , , , , , , 17.11, 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, 0, , , , , , , , , , , , , , , , , , , , 16.92, 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, 6.76, , , , , , , , , , , , , , , , , , , , 16.66, 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, , , , , , , , , , , , , , , , , , , , 16.36, 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, , , , , , , , , , , , , , , , , , , , 15.09, 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, 6.42, , , , , , , , , , , , , , , , , , , , 13.63, 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , , , 11.55, 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.19, 5.19, 5.33, 5.33, 5.33, 5.33, 5.47, , , , , , , , , , , , , , , , , , , , 9.9, 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, 3.78, 4.63, 4.65, 4.79, 4.75, 4.62, 4.62, 4.76, 4.76, 4.91, , , , , , , , , , , , , , , , , , , , , 8.64, 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, 1.43, 1.65, 2.58, 3.46, 3.71, 3.99, 4, , , , , , , , , , , , , , , , , , , , , , , , , , , 7.78, 6.11, 4.72, 3.06, 1.52, 0.99, 1.04, 1.13, 1.36, 1.57, 1.82, 1.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.59, 6.38, 4.93, 3.59, 2.04, 1.24, 1.24, 1.34, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 7.94, 6.7, 5.56, 4.22, 2.88, 1.95, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.36, 7.12, 5.98, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.56, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.01, 8.15, 7.29, 0, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 11.4, 10.96, 10.53, 9.77, 8.92, 7.65, 0, 0, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , 12.89, 12.89, 12.66, 12.22, 11.78, 11.35, 10.91, 10.27, 9.27, 8.01, 6.61, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 14.15, 13.98, 13.83, 13.65, 13.25, 12.81, 12.38, 11.73, 11.09, 10.45, 9.62, 7.95, 6.61, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , 15.31, 15.44, 15.58, 14.94, 14.27, 13.61, 13.27, 12.88, 12.66, 12.38, 11.91, 11.27, 10.42, 9.58, 7.9, 0, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 15.83, 16.28, 16.71, 16.23, 15.42, 14.75, 13.94, 13.44, 13.03, 12.7, 12.4, 12.11, 11.9, 11.7, 11.24, 10.39, 9.11, 7.44, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , 16.5, 17.23, 17.66, 17, 16.18, 15.36, 14.42, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, 0, 0, , , , , , , , , , , , , , , , , , , , 17.56, 17.78, 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, 0, 0, , , , , , , , , , , , , , , , , , , , 17.53, 17.77, 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, 0, 0, , , , , , , , , , , , , , , , , , , , 17.44, 17.68, 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, 0, 0, , , , , , , , , , , , , , , , , , , , 17.32, 17.6, 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, 0, 0, , , , , , , , , , , , , , , , , , , , 17.14, 17.42, 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, 6.76, 0, , , , , , , , , , , , , , , , , , , , 16.51, 14.55, 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, 0, , , , , , , , , , , , , , , , , , , , 14.12, 12.1, 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, 0, , , , , , , , , , , , , , , , , , , , 12.76, 9.97, 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, 6.6, 6.6, 6.61, 6.61, 6.42, 0, , , , , , , , , , , , , , , , , , , , 11.41, 8.55, 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.83, 6.24, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, 5.9, , , , , , , , , , , , , , , , , , , , , , 10.11, 8.26, 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, 2.7, 3.55, 4.32, 5.08, 5.56, 5.4, 5.4, , , , , , , , , , , , , , , , , , , , , , , , , , , 7.87, 5.67, 3.05, 0.77, 0.5, 0.57, 0.8, 1.03, 1.25, 2.05, 3.07, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.63, 4.58, 2.95, 0.89, 0.74, 0.79, 0.98, 1.2, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.11, 4.72, 3.06, 1.52, 0.99, 0.99, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.38, 4.93, 3.59, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.11, 9.11, 7.44, 0, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , 13.75, 13.75, 13.29, 12.87, 12.45, 12.14, 11.85, 11.64, 11.43, 11.23, 11, 10.16, 8.64, 6.97, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , 18, 17.05, 16.12, 15.17, 14.23, 13.5, 13.04, 12.63, 12.21, 11.88, 11.59, 11.38, 11.18, 10.97, 10.85, 10.72, 9.43, 7.76, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , , 18, 17.07, 16.01, 14.95, 13.91, 13.39, 12.8, 12.3, 11.89, 11.55, 11.25, 11.05, 10.84, 10.64, 10.51, 10.4, 10.32, 8.55, 6.89, 0, 0, , , , , , , , , , , , , , , , , , , , , , 17.98, 17.09, 15.9, 14.15, 12.77, 12.82, 12.43, 11.98, 11.56, 11.23, 10.92, 10.71, 10.51, 10.39, 10.27, 10.15, 10.02, 9.34, 7.68, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 17.91, 17, 14.35, 11.7, 10.69, 11.11, 10.84, 10.82, 11.15, 10.82, 10.5, 10.3, 10.18, 10, 10, 9.72, 9.55, 9.19, 8.05, 0, 0, 0, , , , , , , , , , , , , , , , , , , , , 16.19, 15.76, 12.39, 9.41, 8.71, 9.4, 9.13, 9.35, 9.69, 10.16, 10.1, 10, 9.86, 9.51, 9.16, 8.99, 8.82, 8.64, 8.45, 6.76, 0, 0, , , , , , , , , , , , , , , , , , , , , 13.33, 11.96, 10.42, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, 8.08, 7.9, 7.9, 7.14, 0, 0, , , , , , , , , , , , , , , , , , , , , 10.31, 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, 7.86, 7.7, 7.53, 7.53, 7.34, 7.34, 7.16, 7.11, , , , , , , , , , , , , , , , , , , , , , , 7.46, 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.8, 6.38, 6.96, 7.13, 6.96, 6.79, 6.79, , , , , , , , , , , , , , , , , , , , , , , , , , , , 5.7, 2.85, 0, 0.68, 1.37, 2.11, 2.86, 3.6, 4.34, 5.09, 5.09, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 5.47, 1.53, 0.25, 0.4, 0.63, 0.91, 1.91, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 3.05, 0.77, 0.5, 0.57, 0.57, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 2.95, 0.89, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 9.16, 9.16, 8.99, 8.82, , , , , , , , , , , , , , , , , , , , , , , , , , , , 6.49, 6.49, 7.13, 7.43, 7.41, 7.63, 8.34, 9.25, 9.68, 9.11, 8.95, 8.6, 8.44, 8.27, , , , , , , , , , , , , , , , , , , , , , , , , , , , 8.14, 7.5, 4.36, 5.54, 5.34, 5.44, 6.61, 7.55, 7.82, 8.24, 8.21, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 5.18, 3.75, 2.77, 2.78, 3.92, 5.14, 5.38, 5.38, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 2.85, 0, 0.68, 1.37, 2.11, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 1.53, 0.25,]; +//# sourceMappingURL=LAB_TO_COOLNESS.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map new file mode 100644 index 00000000..23d810d5 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LAB_TO_COOLNESS.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/pairPreference/LAB_TO_COOLNESS.ts"],"names":[],"mappings":";;;AAAA,kBAAkB;AACL,QAAA,eAAe,GAAG,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAE,CAAC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.d.ts new file mode 100644 index 00000000..ab0bb842 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const pairPreference: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js new file mode 100644 index 00000000..8594d334 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.pairPreference = void 0; +const utils_1 = require("../../../utils"); +const LAB_TO_COOLNESS_1 = require("./LAB_TO_COOLNESS"); +// ref: Colorgorical:Creating discriminable and preferable color palettes for information visualization +// https://github.com/connorgr/colorgorical/blob/90649656a57ce9743b00390473adce51a821cadc/src/model/c/scores/pairPreference.c +// hue, lightness, and coolness weights taken from regression in Schloss & Palmer 2011 to estimate pairwise preference +const wH = -46.42; // hueAngleDiff weight +const wL = 47.61; // lightnessDiff weight +const wC = 75.15; // coolness weight +// These min and max values are taken from the regression normalization +// Need to normalize based on these to verify the variables are on same range +const cMax = 36.0; +const cMin = 4.0; +const hMax = 179.266981384; +const hMin = 0.033547949; +const lMax = 63.3673; +const lMin = 0.0; +const normalize = (d, high, low) => { + return (d - low) / (high - low); +}; +const getLabIndex = (L, a, b) => { + // L = [0,100]; a = [-85, 100]; b = [-110, 95] + const iL = Math.round(L / 5); + const ia = Math.round((a + 85) / 5); + const ib = Math.round((b + 110) / 5); + return iL * 1596 + ia * 42 + ib; +}; +const getCoolness = (L, a, b) => { + const index = getLabIndex(L, a, b); + return LAB_TO_COOLNESS_1.LAB_TO_COOLNESS[index] || 0; +}; +// Calculate the scalar needed to convert an XYZ color to Lab +const XYZtoLab = (t) => { + if (t > (6.0 / 29.0) ** 3) { + return t ** (1.0 / 3.0); + } + return (1.0 / 3.0) * (29.0 / 6.0) * (29.0 / 6.0) * t + 4.0 / 29.0; +}; +// Calculate the scalar needed to convert an Lab color to XYZ. +const LabToXYZ = (t) => { + return t > 6.0 / 29.0 ? t * t * t : 3.0 * (6.0 / 29) * (6.0 / 29) * (t - 4.0 / 29.0); +}; +// Calculate the LCH cyllindrical color representation of an Lab color +const LabToLCH = (L, a, b) => { + const C = Math.sqrt(a * a + b * b); + let H = (Math.atan2(b, a) * 180.0) / Math.PI; + if (H < 0.0) + H += 360.0; + if (H > 360.0) + H = 360.0 - H; + return [L, C, H]; +}; +// Convert CIE Lab coordinates characterized with Illuminant D65 to CIE Lab +// characterized with Illuminant C. This conversion is required since our model +// relies on a D65 characterization, but Schloss and Palmer's pair preference +// function was defined in Illuminant C characterized CIE Lab space. +const illuminantD65LabToIlluminantCLab = (oldL, oldA, oldB) => { + const ILLUMINANT_C_X = 98.074; + const ILLUMINANT_C_Y = 100.0; + const ILLUMINANT_C_Z = 118.232; + const ILLUMINANT_D65_X = 95.047; + const ILLUMINANT_D65_Y = 100.0; + const ILLUMINANT_D65_Z = 108.883; + // Derive X,Y,Z from Lab by inversing the transformation + const x = (1.0 / 116.0) * (oldL + 16) + (1.0 / 500.0) * oldA; + const y = (1.0 / 116.0) * (oldL + 16); + const z = (1 / 116) * (oldL + 16) - (1 / 200) * oldB; + const X = ILLUMINANT_D65_X * LabToXYZ(x); + const Y = ILLUMINANT_D65_Y * LabToXYZ(y); + const Z = ILLUMINANT_D65_Z * LabToXYZ(z); + const deconstructY = XYZtoLab(Y / ILLUMINANT_C_Y); + const L = 116 * deconstructY - 16; + const a = 500 * (XYZtoLab(X / ILLUMINANT_C_X) - deconstructY); + const b = 200 * (deconstructY - XYZtoLab(Z / ILLUMINANT_C_Z)); + return [L, a, b]; +}; +const pairPreference = (color1, color2) => { + const [L1, a1, b1] = utils_1.colorToArray(color1, 'lab'); + const [L2, a2, b2] = utils_1.colorToArray(color2, 'lab'); + const coolness1 = getCoolness(L1, a1, b1); + const coolness2 = getCoolness(L2, a2, b2); + // Convert from D65 to Illuminant C Lab + const Lab1 = illuminantD65LabToIlluminantCLab(L1, a1, b1); + const Lab2 = illuminantD65LabToIlluminantCLab(L2, a2, b2); + // Convert Lab Illuminant C to LCH + const lCH1 = LabToLCH(Lab1[0], Lab1[1], Lab1[2]); + const lCH2 = LabToLCH(Lab2[0], Lab2[1], Lab2[2]); + const diffL = Math.abs(lCH1[0] - lCH2[0]); + const diffH = Math.abs(lCH1[2] - lCH2[2]); + const sumC = coolness1 + coolness2; + const pp = wL * normalize(diffL, lMax, lMin) + wH * normalize(diffH, hMax, hMin) + wC * normalize(sumC, cMax, cMin); + return pp; +}; +exports.pairPreference = pairPreference; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js.map new file mode 100644 index 00000000..8186a881 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorAesthetic/pairPreference/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/colorAesthetic/pairPreference/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.d.ts new file mode 100644 index 00000000..eb96bc12 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const CIEDE2000: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js new file mode 100644 index 00000000..adf3769f --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CIEDE2000 = void 0; +const utils_1 = require("../../utils"); +const hp = (x, y) => { + const tmphp = utils_1.rad2deg(Math.atan2(x, y)); + if (tmphp >= 0) + return tmphp; + return tmphp + 360; +}; +// ref: https://en.wikipedia.org/wiki/Color_difference#CIEDE2000 +// output range: [0, 100] +const CIEDE2000 = (color1, color2) => { + // weight, usually unity + const kL = 1; + const kC = 1; + const kH = 1; + // Get L,a,b values for color + const [L1, a1, b1] = utils_1.colorToArray(color1, 'lab'); + const [L2, a2, b2] = utils_1.colorToArray(color2, 'lab'); + const C1 = Math.sqrt(a1 ** 2 + b1 ** 2); + const C2 = Math.sqrt(a2 ** 2 + b2 ** 2); + const avgC = (C1 + C2) / 2; + const p = 0.5 * (1 - Math.sqrt(avgC ** 7 / (avgC ** 7 + 25 ** 7))); + const a1p = (1.0 + p) * a1; + const a2p = (1.0 + p) * a2; + const C1p = Math.sqrt(a1p ** 2 + b1 ** 2); + const C2p = Math.sqrt(a2p ** 2 + b2 ** 2); + const h1p = hp(b1, a1p); + const h2p = hp(b2, a2p); + const dLp = L2 - L1; + const dCp = C2p - C1p; + let dhp; + if (Math.abs(h2p - h1p) <= 180) + dhp = h2p - h1p; + else if (h2p - h1p < -180) + dhp = h2p - h1p + 360; + else + dhp = h2p - h1p - 360; // h2p - h1p > 180 + const dHp = 2 * Math.sqrt(C1p * C2p) * Math.sin(utils_1.deg2rad(dhp) / 2.0); + let avgHp; + if (Math.abs(h1p - h2p) <= 180) + avgHp = (h1p + h2p) / 2.0; + else if (Math.abs(h1p - h2p) > 180 && h1p + h2p < 360) + avgHp = (h1p + h2p + 360) / 2.0; + else + avgHp = (h1p + h2p - 360) / 2.0; // Math.abs(h1p - h2p) > 180 && h1p + h2p >= 360 + const avgL = (L1 + L2) / 2.0; + const avgCp = (C1p + C2p) / 2.0; + const T = 1 - + 0.17 * Math.cos(utils_1.deg2rad(avgHp - 30)) + + 0.24 * Math.cos(utils_1.deg2rad(2 * avgHp)) + + 0.32 * Math.cos(utils_1.deg2rad(3 * avgHp + 6)) - + 0.2 * Math.cos(utils_1.deg2rad(4 * avgHp - 63)); + const SL = 1 + (0.015 * (avgL - 50) ** 2) / Math.sqrt(20 + (avgL - 50) ** 2); + const SC = 1 + 0.045 * avgCp; + const SH = 1 + 0.015 * avgCp * T; + const RT = -2 * + Math.sqrt(avgCp ** 7 / (avgCp ** 7 + 25.0 ** 7)) * + Math.sin(utils_1.deg2rad(60 * Math.exp(-(((avgHp - 275) / 25) ** 2)))); + const dE = Math.sqrt((dLp / (SL * kL)) ** 2 + + (dCp / (SC * kC)) ** 2 + + (dHp / (SH * kH)) ** 2 + + RT * (dCp / (SC * kC)) * (dHp / (SH * kH))); + return dE; +}; +exports.CIEDE2000 = CIEDE2000; +//# sourceMappingURL=CIEDE2000.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js.map new file mode 100644 index 00000000..a643ba46 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/CIEDE2000.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CIEDE2000.js","sourceRoot":"src/","sources":["evaluators/colorDifference/CIEDE2000.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.d.ts new file mode 100644 index 00000000..d5acd686 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const contrastRatio: (color1: Color, color2: Color) => number; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js new file mode 100644 index 00000000..6f2173af --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.contrastRatio = void 0; +const utils_1 = require("../../utils"); +const compute = (num) => { + const n = num / 255; + if (n <= 0.03928) { + return n / 12.92; + } + return ((n + 0.055) / 1.055) ** 2.4; +}; +const calcRelativeLuminance = (color) => { + const [r, g, b] = utils_1.colorToArray(color); + return 0.2126 * compute(r) + 0.7152 * compute(g) + 0.0722 * compute(b); +}; +// ref: https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio +// Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1). +const contrastRatio = (color1, color2) => { + const L1 = calcRelativeLuminance(color1); + const L2 = calcRelativeLuminance(color2); + if (L2 > L1) { + return (L2 + 0.05) / (L1 + 0.05); + } + return (L1 + 0.05) / (L2 + 0.05); +}; +exports.contrastRatio = contrastRatio; +//# sourceMappingURL=contrastRatio.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js.map new file mode 100644 index 00000000..d7e461ac --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/contrastRatio.js.map @@ -0,0 +1 @@ +{"version":3,"file":"contrastRatio.js","sourceRoot":"src/","sources":["evaluators/colorDifference/contrastRatio.ts"],"names":[],"mappings":";;;AACA,uCAA2C;AAE3C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;IACtC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,IAAI,OAAO,EAAE;QAChB,OAAO,CAAC,GAAG,KAAK,CAAC;KAClB;IACD,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;AACtC,CAAC,CAAC;AACF,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAU,EAAE;IACrD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAY,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,wDAAwD;AACxD,yEAAyE;AAClE,MAAM,aAAa,GAAG,CAAC,MAAa,EAAE,MAAa,EAAU,EAAE;IACpE,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;KAClC;IACD,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.d.ts new file mode 100644 index 00000000..3d230e3b --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.d.ts @@ -0,0 +1,2 @@ +import { Color, ColorModel } from '@antv/color-schema'; +export declare const euclideanDistance: (color1: Color, color2: Color, colorModel?: ColorModel) => number; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js new file mode 100644 index 00000000..37f543af --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.euclideanDistance = void 0; +const tslib_1 = require("tslib"); +const chroma_js_1 = tslib_1.__importDefault(require("chroma-js")); +const utils_1 = require("../../utils"); +// Computes the Euclidean distance between two colors in a given color model (default is Lab). +// output range: [0, 255] +const euclideanDistance = (color1, color2, colorModel = 'lab') => { + return chroma_js_1.default.distance(utils_1.colorToChromaColor(color1), utils_1.colorToChromaColor(color2), colorModel); +}; +exports.euclideanDistance = euclideanDistance; +//# sourceMappingURL=euclideanDistance.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js.map new file mode 100644 index 00000000..e94d06ba --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/euclideanDistance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"euclideanDistance.js","sourceRoot":"src/","sources":["evaluators/colorDifference/euclideanDistance.ts"],"names":[],"mappings":";;;;AAAA,kEAA+B;AAE/B,uCAAiD;AAEjD,8FAA8F;AAC9F,yBAAyB;AAClB,MAAM,iBAAiB,GAAG,CAAC,MAAa,EAAE,MAAa,EAAE,aAAyB,KAAK,EAAU,EAAE;IACxG,OAAO,mBAAM,CAAC,QAAQ,CAAC,0BAAkB,CAAC,MAAM,CAAC,EAAE,0BAAkB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;AAC7F,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.d.ts new file mode 100644 index 00000000..6e867741 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.d.ts @@ -0,0 +1,2 @@ +import { ColorDifference } from '@src/types'; +export declare const colorDifference: ColorDifference; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js new file mode 100644 index 00000000..aa9f6384 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorDifference = void 0; +const constant_1 = require("../../constant"); +const utils_1 = require("../../utils"); +const euclideanDistance_1 = require("./euclideanDistance"); +const CIEDE2000_1 = require("./CIEDE2000"); +const contrastRatio_1 = require("./contrastRatio"); +const colorDifference = (color1, color2, configuration = { measure: 'euclidean' }) => { + const { measure = 'euclidean', backgroundColor = constant_1.WHITE } = configuration; + // If the color is semi-transparent, the color will be overlapped on a white background by default for comparison + const overlappedColor1 = utils_1.colorBlend(color1, backgroundColor); + const overlappedColor2 = utils_1.colorBlend(color2, backgroundColor); + switch (measure) { + case 'CIEDE2000': + return CIEDE2000_1.CIEDE2000(overlappedColor1, overlappedColor2); + case 'euclidean': + // @ts-ignore + return euclideanDistance_1.euclideanDistance(overlappedColor1, overlappedColor2, configuration.colorModel); + case 'contrastRatio': + return contrastRatio_1.contrastRatio(overlappedColor1, overlappedColor2); + default: + return euclideanDistance_1.euclideanDistance(overlappedColor1, overlappedColor2); + } +}; +exports.colorDifference = colorDifference; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js.map b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js.map new file mode 100644 index 00000000..c7942d5d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/colorDifference/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/colorDifference/index.ts"],"names":[],"mappings":";;;AACA,6CAAuC;AACvC,uCAAyC;AACzC,2DAAwD;AACxD,2CAAwC;AACxC,mDAAgD;AAEzC,MAAM,eAAe,GAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE;IAC3G,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,eAAe,GAAG,gBAAK,EAAE,GAAG,aAAa,CAAC;IACzE,iHAAiH;IACjH,MAAM,gBAAgB,GAAG,kBAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,kBAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7D,QAAQ,OAAO,EAAE;QACf,KAAK,WAAW;YACd,OAAO,qBAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACvD,KAAK,WAAW;YACd,aAAa;YACb,OAAO,qCAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACzF,KAAK,eAAe;YAClB,OAAO,6BAAa,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC3D;YACE,OAAO,qCAAiB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;KAChE;AACH,CAAC,CAAC;AAhBW,QAAA,eAAe,mBAgB1B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/index.d.ts b/vendors/smart-color/0.2.1/lib/evaluators/index.d.ts new file mode 100644 index 00000000..c8441e9b --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/index.d.ts @@ -0,0 +1,2 @@ +export { colorDifference } from './colorDifference'; +export { colorAesthetic } from './colorAesthetic'; diff --git a/vendors/smart-color/0.2.1/lib/evaluators/index.js b/vendors/smart-color/0.2.1/lib/evaluators/index.js new file mode 100644 index 00000000..72f4babc --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorAesthetic = exports.colorDifference = void 0; +var colorDifference_1 = require("./colorDifference"); +Object.defineProperty(exports, "colorDifference", { enumerable: true, get: function () { return colorDifference_1.colorDifference; } }); +var colorAesthetic_1 = require("./colorAesthetic"); +Object.defineProperty(exports, "colorAesthetic", { enumerable: true, get: function () { return colorAesthetic_1.colorAesthetic; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/evaluators/index.js.map b/vendors/smart-color/0.2.1/lib/evaluators/index.js.map new file mode 100644 index 00000000..bc42aefc --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/evaluators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["evaluators/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.d.ts b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.d.ts new file mode 100644 index 00000000..81d97316 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.d.ts @@ -0,0 +1,2 @@ +import { Palette } from '@antv/color-schema'; +export declare function getPaletteFromImage(imgUrl: string, count?: number, quality?: number): Promise; diff --git a/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js new file mode 100644 index 00000000..224174e1 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPaletteFromImage = void 0; +const tslib_1 = require("tslib"); +// @ts-ignore +const quantize_1 = tslib_1.__importDefault(require("quantize")); +const utils_1 = require("../utils"); +// sample pixels in image +const imageToPixels = (image, quality) => { + const { width, height } = image; + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + if (!context) + return []; + canvas.width = width; + canvas.height = height; + context.drawImage(image, 0, 0, width, height); + const imageData = context.getImageData(0, 0, width, height).data; + const pixels = []; + const count = width * height; + for (let i = 0; i < count; i += quality) { + const offset = i * 4; + const r = imageData[offset + 0]; + const g = imageData[offset + 1]; + const b = imageData[offset + 2]; + const a = imageData[offset + 3]; + // If pixel is mostly opaque and not white + if (typeof a === 'undefined' || a >= 125) { + if (!(r > 250 && g > 250 && b > 250)) { + pixels.push([r, g, b]); + } + } + } + return pixels; +}; +// Get a list of colors from img url +async function getPaletteFromImage(imgUrl, count = 6, quality = 10) { + // int + let validCount = Math.round(count); + validCount = Math.max(1, validCount); + validCount = Math.min(50, validCount); + let validQuality = Math.round(quality); + validQuality = Math.max(1, validQuality); + return new Promise((resolve) => { + utils_1.loadImage(imgUrl) + .then((img) => { + validQuality = Math.min(Math.floor((img.width * img.height) / validCount), validQuality); + const pixels = imageToPixels(img, validQuality); + // Use the median cut algorithm provided by quantize to cluster similar colors + // the colorCount in quantize must be larger than 1 + // so if the validCount is equal to 1 + // get a palette of two colors and select the base color from the largest cluster + const colorMap = quantize_1.default(pixels, validCount === 1 ? 2 : validCount); + const arrayRGB = colorMap.palette().slice(0, validCount); + resolve({ + name: 'image', + semantic: null, + type: 'categorical', + colors: arrayRGB.map((rgb) => utils_1.arrayToColor(rgb, 'rgb')), + }); + }) + .finally(() => { + resolve(undefined); + }); + }); +} +exports.getPaletteFromImage = getPaletteFromImage; +//# sourceMappingURL=getPaletteFromImage.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js.map b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js.map new file mode 100644 index 00000000..002d626d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromImage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getPaletteFromImage.js","sourceRoot":"src/","sources":["extractors/getPaletteFromImage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.d.ts b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.d.ts new file mode 100644 index 00000000..f1d56b4e --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.d.ts @@ -0,0 +1,2 @@ +import { Palette } from '@antv/color-schema'; +export declare function getPaletteFromString(string: string): Palette; diff --git a/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js new file mode 100644 index 00000000..010d8e6f --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPaletteFromString = void 0; +const utils_1 = require("../utils"); +// Get a list of colors from string +function getPaletteFromString(string) { + return { + name: 'code', + semantic: null, + type: 'categorical', + colors: string + .replace(/[^#,0-9a-fA-F]/g, '') + .split(',') + .filter((color) => color.length > 0) + .map((color) => { + return utils_1.hexToColor(color); + }), + }; +} +exports.getPaletteFromString = getPaletteFromString; +//# sourceMappingURL=getPaletteFromString.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js.map b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js.map new file mode 100644 index 00000000..d2eccd92 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/getPaletteFromString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getPaletteFromString.js","sourceRoot":"src/","sources":["extractors/getPaletteFromString.ts"],"names":[],"mappings":";;;AACA,oCAAsC;AAEtC,mCAAmC;AACnC,SAAgB,oBAAoB,CAAC,MAAc;IACjD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,MAAM;aACX,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;aAC9B,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,OAAO,kBAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAbD,oDAaC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/extractors/index.d.ts b/vendors/smart-color/0.2.1/lib/extractors/index.d.ts new file mode 100644 index 00000000..ca8afba3 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/index.d.ts @@ -0,0 +1,2 @@ +export { getPaletteFromImage } from './getPaletteFromImage'; +export { getPaletteFromString } from './getPaletteFromString'; diff --git a/vendors/smart-color/0.2.1/lib/extractors/index.js b/vendors/smart-color/0.2.1/lib/extractors/index.js new file mode 100644 index 00000000..1519e884 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPaletteFromString = exports.getPaletteFromImage = void 0; +var getPaletteFromImage_1 = require("./getPaletteFromImage"); +Object.defineProperty(exports, "getPaletteFromImage", { enumerable: true, get: function () { return getPaletteFromImage_1.getPaletteFromImage; } }); +var getPaletteFromString_1 = require("./getPaletteFromString"); +Object.defineProperty(exports, "getPaletteFromString", { enumerable: true, get: function () { return getPaletteFromString_1.getPaletteFromString; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/extractors/index.js.map b/vendors/smart-color/0.2.1/lib/extractors/index.js.map new file mode 100644 index 00000000..557cfa55 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/extractors/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["extractors/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.d.ts new file mode 100644 index 00000000..58a25e75 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const achromaticGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js b/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js new file mode 100644 index 00000000..3f2eca36 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.achromaticGeneration = void 0; +const monochromaticGeneration_1 = require("./monochromaticGeneration"); +const BLACK = { + model: 'rgb', + value: { r: 0, g: 0, b: 0 }, +}; +const WHITE = { + model: 'rgb', + value: { r: 255, g: 255, b: 255 }, +}; +// generate sequential palette by achromatic scheme +const achromaticGeneration = (configuration) => { + const { tendency } = configuration; + const newConfiguration = { + ...configuration, + color: tendency === 'tint' ? BLACK : WHITE, + }; + const palette = monochromaticGeneration_1.monochromaticGeneration(newConfiguration); + return { + ...palette, + name: 'achromatic', + }; +}; +exports.achromaticGeneration = achromaticGeneration; +//# sourceMappingURL=achromaticGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js.map new file mode 100644 index 00000000..fb5585f1 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/achromaticGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"achromaticGeneration.js","sourceRoot":"src/","sources":["generators/achromaticGeneration.ts"],"names":[],"mappings":";;;AACA,uEAAoE;AAGpE,MAAM,KAAK,GAAU;IACnB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC5B,CAAC;AACF,MAAM,KAAK,GAAU;IACnB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;CAClC,CAAC;AAEF,mDAAmD;AAC5C,MAAM,oBAAoB,GAAe,CAAC,aAAa,EAAE,EAAE;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IACnC,MAAM,gBAAgB,GAAG;QACvB,GAAG,aAAa;QAChB,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;KAC3C,CAAC;IACF,MAAM,OAAO,GAAG,iDAAuB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,OAAO;QACL,GAAG,OAAO;QACV,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.d.ts new file mode 100644 index 00000000..19323f1d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const analogousGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js b/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js new file mode 100644 index 00000000..3c73af03 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.analogousGeneration = void 0; +const utils_1 = require("../utils"); +// generate sequential palette by analogous scheme +const analogousGeneration = (configuration) => { + const { count, color, tendency } = configuration; + const isTint = tendency === 'tint'; + const [hue, saturation, value] = utils_1.colorToArray(color, 'hsv'); + const index = Math.floor(count / 2); + // Ref: Ant Design 3.x palette algorithm https://zhuanlan.zhihu.com/p/32422584 + let dHue = 60 / (count - 1); + if (hue >= 60 && hue <= 240) { + // cool undertone + dHue = -dHue; + } + const dSaturation = (saturation - 0.1) / 3 / (count - index - 1); + const dValue = (value - 0.4) / 3 / index; + const newColors = new Array(count).fill(0).map((d, i) => { + const h = utils_1.hueOffset(hue, dHue * (i - index)); + const s = i <= index ? Math.min(saturation + dSaturation * (index - i), 1) : saturation + 3 * dSaturation * (index - i); + const v = i <= index ? value - 3 * dValue * (index - i) : Math.min(value - dValue * (index - i), 1); + return utils_1.arrayToColor([h, s, v], 'hsv'); + }); + const palette = { + name: 'analogous', + semantic: null, + type: 'discrete-scale', + colors: isTint ? newColors : newColors.reverse(), + }; + return palette; +}; +exports.analogousGeneration = analogousGeneration; +//# sourceMappingURL=analogousGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js.map new file mode 100644 index 00000000..71fc21f5 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/analogousGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"analogousGeneration.js","sourceRoot":"src/","sources":["generators/analogousGeneration.ts"],"names":[],"mappings":";;;AACA,oCAAiE;AAGjE,kDAAkD;AAC3C,MAAM,mBAAmB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC/D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IAEjD,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpC,8EAA8E;IAC9E,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;QAC3B,iBAAiB;QACjB,IAAI,GAAG,CAAC,IAAI,CAAC;KACd;IACD,MAAM,WAAW,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,CAAC,GAAG,iBAAS,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GACL,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpG,OAAO,oBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;KACjD,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA5BW,QAAA,mBAAmB,uBA4B9B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.d.ts new file mode 100644 index 00000000..6aff965f --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.d.ts @@ -0,0 +1,5 @@ +import { Color } from '@antv/color-schema'; +export declare const categoricalGenerationInHsv: (color: Color, dHue: number, count: number, colors?: (Color | undefined)[]) => { + newColors: Color[]; + locked: any[]; +}; diff --git a/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js b/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js new file mode 100644 index 00000000..22d225de --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.categoricalGenerationInHsv = void 0; +const utils_1 = require("../utils"); +const saturationRange = [0.3, 0.9]; +const valueRange = [0.5, 1]; +const categoricalGenerationInHsv = (color, dHue, count, colors = []) => { + const [h] = utils_1.colorToArray(color, 'hsv'); + const locked = new Array(count).fill(false); + let placeBasicColor = colors.findIndex((c) => c && c.model === color.model && c.value === color.value) === -1; + const newColors = new Array(count).fill(0).map((d, i) => { + const lockedColor = colors[i]; + if (lockedColor) { + locked[i] = true; + return lockedColor; + } + // find the first unlocked position to place the basic color + if (placeBasicColor) { + placeBasicColor = false; + locked[i] = true; + return color; + } + return utils_1.arrayToColor([utils_1.hueOffset(h, dHue * i), utils_1.random(...saturationRange), utils_1.random(...valueRange)], 'hsv'); + }); + return { + newColors, + locked, + }; +}; +exports.categoricalGenerationInHsv = categoricalGenerationInHsv; +//# sourceMappingURL=categoricalGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js.map new file mode 100644 index 00000000..a9cdb9bc --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/categoricalGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"categoricalGeneration.js","sourceRoot":"src/","sources":["generators/categoricalGeneration.ts"],"names":[],"mappings":";;;AACA,oCAAyE;AAEzE,MAAM,eAAe,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD,MAAM,UAAU,GAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvC,MAAM,0BAA0B,GAAG,CACxC,KAAY,EACZ,IAAY,EACZ,KAAa,EACb,SAAgC,EAAE,EAClC,EAAE;IACF,MAAM,CAAC,CAAC,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9G,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAS,EAAE;QAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,WAAW,EAAE;YACf,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,OAAO,WAAW,CAAC;SACpB;QACD,4DAA4D;QAC5D,IAAI,eAAe,EAAE;YACnB,eAAe,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,oBAAY,CAAC,CAAC,iBAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,cAAM,CAAC,GAAG,eAAe,CAAC,EAAE,cAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;IACH,OAAO;QACL,SAAS;QACT,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,0BAA0B,8BA2BrC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.d.ts new file mode 100644 index 00000000..7460fefc --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const complementaryGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js b/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js new file mode 100644 index 00000000..d87017c8 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.complementaryGeneration = void 0; +const utils_1 = require("../utils"); +const discreteScaleGeneration_1 = require("./discreteScaleGeneration"); +// generate diverging palette by complementary scheme +const complementaryGeneration = (configuration) => { + const { count, color } = configuration; + const [hue, saturation, value] = utils_1.colorToArray(color, 'hsv'); + const complementaryColor = utils_1.arrayToColor([utils_1.hueOffset(hue, 180), saturation, value], 'hsv'); + const maxL = utils_1.randomInt(80, 90); + const minL = utils_1.randomInt(15, 25); + const halfCount = Math.floor(count / 2); + const left = discreteScaleGeneration_1.discreteScaleGenerationInLab(color, halfCount, [minL, maxL]); + const right = discreteScaleGeneration_1.discreteScaleGenerationInLab(complementaryColor, halfCount, [minL, maxL]).reverse(); + let newColors; + if (count % 2 === 1) { + const midColor = utils_1.arrayToColor([(utils_1.hueOffset(hue, 180) + hue) / 2, utils_1.random(0.05, 0.1), utils_1.random(0.9, 0.95)], 'hsv'); + newColors = [...left, midColor, ...right]; + } + else { + newColors = [...left, ...right]; + } + const palette = { + name: 'complementary', + semantic: null, + type: 'discrete-scale', + colors: newColors, + }; + return palette; +}; +exports.complementaryGeneration = complementaryGeneration; +//# sourceMappingURL=complementaryGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js.map new file mode 100644 index 00000000..431d9434 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/complementaryGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"complementaryGeneration.js","sourceRoot":"src/","sources":["generators/complementaryGeneration.ts"],"names":[],"mappings":";;;AACA,oCAAoF;AAEpF,uEAAyE;AAEzE,qDAAqD;AAC9C,MAAM,uBAAuB,GAAe,CAAC,aAAa,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;IAEvC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,oBAAY,CAAC,CAAC,iBAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAEzF,MAAM,IAAI,GAAG,iBAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,iBAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,sDAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,sDAA4B,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAClG,IAAI,SAAS,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,oBAAY,CAAC,CAAC,CAAC,iBAAS,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,cAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,cAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9G,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;KAC3C;SAAM;QACL,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;KACjC;IACD,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA1BW,QAAA,uBAAuB,2BA0BlC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.d.ts new file mode 100644 index 00000000..ae960f7e --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.d.ts @@ -0,0 +1,2 @@ +import { Color } from '@antv/color-schema'; +export declare const discreteScaleGenerationInLab: (color: Color, count: number, lRange?: [number, number]) => Color[]; diff --git a/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js b/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js new file mode 100644 index 00000000..ea61c67a --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.discreteScaleGenerationInLab = void 0; +const utils_1 = require("../utils"); +// Fix a, b, vary L +const discreteScaleGenerationInLab = (color, count, lRange = [utils_1.randomInt(5, 10), utils_1.randomInt(90, 95)]) => { + const [L, a, b] = utils_1.colorToArray(color, 'lab'); + const minL = L <= 15 ? L : lRange[0]; + const maxL = L >= 85 ? L : lRange[1]; + let dLightness = (maxL - minL) / (count - 1); + // basic color index + const index = Math.ceil((L - minL) / dLightness); + dLightness = index === 0 ? dLightness : (L - minL) / index; + return new Array(count).fill(0).map((d, i) => utils_1.arrayToColor([dLightness * i + minL, a, b], 'lab')); +}; +exports.discreteScaleGenerationInLab = discreteScaleGenerationInLab; +//# sourceMappingURL=discreteScaleGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js.map new file mode 100644 index 00000000..850c23fd --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/discreteScaleGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"discreteScaleGeneration.js","sourceRoot":"src/","sources":["generators/discreteScaleGeneration.ts"],"names":[],"mappings":";;;AACA,oCAAiE;AAEjE,mBAAmB;AACZ,MAAM,4BAA4B,GAAG,CAC1C,KAAY,EACZ,KAAa,EACb,SAA2B,CAAC,iBAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,iBAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EACvD,EAAE;IACX,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,oBAAoB;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACjD,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3D,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAY,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC;AAbW,QAAA,4BAA4B,gCAavC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/index.d.ts b/vendors/smart-color/0.2.1/lib/generators/index.d.ts new file mode 100644 index 00000000..1efdef2e --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/index.d.ts @@ -0,0 +1,9 @@ +import { PaletteGeneration } from '../types'; +/** + * + * @param type + * @param colors locked colors + * @param configuration + * @returns + */ +export declare const paletteGeneration: PaletteGeneration; diff --git a/vendors/smart-color/0.2.1/lib/generators/index.js b/vendors/smart-color/0.2.1/lib/generators/index.js new file mode 100644 index 00000000..e84036c5 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/index.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.paletteGeneration = void 0; +const monochromaticGeneration_1 = require("./monochromaticGeneration"); +const analogousGeneration_1 = require("./analogousGeneration"); +const achromaticGeneration_1 = require("./achromaticGeneration"); +const complementaryGeneration_1 = require("./complementaryGeneration"); +const splitComplementaryGeneration_1 = require("./splitComplementaryGeneration"); +const triadicGeneration_1 = require("./triadicGeneration"); +const tetradicGeneration_1 = require("./tetradicGeneration"); +const polychromaticGeneration_1 = require("./polychromaticGeneration"); +const randomGeneration_1 = require("./randomGeneration"); +const validateConfiguration_1 = require("./validateConfiguration"); +const generator = { + monochromatic: monochromaticGeneration_1.monochromaticGeneration, + analogous: analogousGeneration_1.analogousGeneration, + achromatic: achromaticGeneration_1.achromaticGeneration, + complementary: complementaryGeneration_1.complementaryGeneration, + 'split-complementary': splitComplementaryGeneration_1.splitComplementaryGeneration, + triadic: triadicGeneration_1.triadicGeneration, + tetradic: tetradicGeneration_1.tetradicGeneration, + polychromatic: polychromaticGeneration_1.polychromaticGeneration, + customized: randomGeneration_1.randomGeneration, +}; +/** + * + * @param type + * @param colors locked colors + * @param configuration + * @returns + */ +const paletteGeneration = (type = 'monochromatic', configuration = {}) => { + // set default value + const newConfiguration = validateConfiguration_1.validateConfiguration(type, configuration); + try { + return generator[type](newConfiguration); + } + catch (e) { + return randomGeneration_1.randomGeneration(newConfiguration); + } +}; +exports.paletteGeneration = paletteGeneration; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/index.js.map b/vendors/smart-color/0.2.1/lib/generators/index.js.map new file mode 100644 index 00000000..d2a67845 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["generators/index.ts"],"names":[],"mappings":";;;AAEA,uEAAoE;AACpE,+DAA4D;AAC5D,iEAA8D;AAC9D,uEAAoE;AACpE,iFAA8E;AAC9E,2DAAwD;AACxD,6DAA0D;AAC1D,uEAAoE;AACpE,yDAAsD;AACtD,mEAAgE;AAEhE,MAAM,SAAS,GAAsC;IACnD,aAAa,EAAE,iDAAuB;IACtC,SAAS,EAAE,yCAAmB;IAC9B,UAAU,EAAE,2CAAoB;IAChC,aAAa,EAAE,iDAAuB;IACtC,qBAAqB,EAAE,2DAA4B;IACnD,OAAO,EAAE,qCAAiB;IAC1B,QAAQ,EAAE,uCAAkB;IAC5B,aAAa,EAAE,iDAAuB;IACtC,UAAU,EAAE,mCAAgB;CAC7B,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAsB,CAAC,OAAwB,eAAe,EAAE,aAAa,GAAG,EAAE,EAAE,EAAE;IAClH,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,6CAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpE,IAAI;QACF,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,mCAAgB,CAAC,gBAAgB,CAAC,CAAC;KAC3C;AACH,CAAC,CAAC;AARW,QAAA,iBAAiB,qBAQ5B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.d.ts new file mode 100644 index 00000000..00c14f6e --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const monochromaticGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js b/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js new file mode 100644 index 00000000..be46e5f2 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.monochromaticGeneration = void 0; +const discreteScaleGeneration_1 = require("./discreteScaleGeneration"); +// generate sequential palette by monochromatic scheme +const monochromaticGeneration = (configuration) => { + const { count, color, tendency } = configuration; + const isTint = tendency === 'tint'; + const newColors = discreteScaleGeneration_1.discreteScaleGenerationInLab(color, count); + const palette = { + name: 'monochromatic', + semantic: null, + type: 'discrete-scale', + colors: isTint ? newColors : newColors.reverse(), + }; + return palette; +}; +exports.monochromaticGeneration = monochromaticGeneration; +//# sourceMappingURL=monochromaticGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js.map new file mode 100644 index 00000000..2d5dc5a9 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/monochromaticGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"monochromaticGeneration.js","sourceRoot":"src/","sources":["generators/monochromaticGeneration.ts"],"names":[],"mappings":";;;AAEA,uEAAyE;AAEzE,sDAAsD;AAC/C,MAAM,uBAAuB,GAAe,CAAC,aAAa,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IAEjD,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,sDAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;KACjD,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.d.ts new file mode 100644 index 00000000..30052f21 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const polychromaticGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js b/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js new file mode 100644 index 00000000..598f5851 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.polychromaticGeneration = void 0; +const optimizers_1 = require("../optimizers"); +const categoricalGeneration_1 = require("./categoricalGeneration"); +// generate categorical palette by polychromatic scheme +const polychromaticGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 360 / count; + const { newColors, locked } = categoricalGeneration_1.categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return optimizers_1.paletteOptimization(palette, { locked }); +}; +exports.polychromaticGeneration = polychromaticGeneration; +//# sourceMappingURL=polychromaticGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js.map new file mode 100644 index 00000000..df32c6d0 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/polychromaticGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"polychromaticGeneration.js","sourceRoot":"src/","sources":["generators/polychromaticGeneration.ts"],"names":[],"mappings":";;;AACA,8CAAoD;AACpD,mEAAqE;AAGrE,uDAAuD;AAChD,MAAM,uBAAuB,GAAe,CAAC,aAAa,EAAE,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,kDAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO,gCAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/random.d.ts b/vendors/smart-color/0.2.1/lib/generators/random.d.ts new file mode 100644 index 00000000..773795d2 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/random.d.ts @@ -0,0 +1 @@ +export declare function randomColor(): import("@antv/color-schema").Color; diff --git a/vendors/smart-color/0.2.1/lib/generators/random.js b/vendors/smart-color/0.2.1/lib/generators/random.js new file mode 100644 index 00000000..610cce01 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/random.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.randomColor = void 0; +const utils_1 = require("../utils"); +function randomColor() { + const r = utils_1.randomInt(255); + const g = utils_1.randomInt(255); + const b = utils_1.randomInt(255); + return utils_1.arrayToColor([r, g, b], 'rgb'); +} +exports.randomColor = randomColor; +//# sourceMappingURL=random.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/random.js.map b/vendors/smart-color/0.2.1/lib/generators/random.js.map new file mode 100644 index 00000000..9405db65 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/random.js.map @@ -0,0 +1 @@ +{"version":3,"file":"random.js","sourceRoot":"src/","sources":["generators/random.ts"],"names":[],"mappings":";;;AAAA,oCAAmD;AAEnD,SAAgB,WAAW;IACzB,MAAM,CAAC,GAAG,iBAAS,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,iBAAS,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,iBAAS,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,oBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AALD,kCAKC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/randomGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/randomGeneration.d.ts new file mode 100644 index 00000000..9451b1c4 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/randomGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const randomGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/randomGeneration.js b/vendors/smart-color/0.2.1/lib/generators/randomGeneration.js new file mode 100644 index 00000000..5658e021 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/randomGeneration.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.randomGeneration = void 0; +const optimizers_1 = require("../optimizers"); +const random_1 = require("./random"); +// generate categorical palette randomly +const randomGeneration = (configuration) => { + const { count, colors } = configuration; + const locked = []; + const palette = { + name: 'random', + semantic: null, + type: 'categorical', + colors: new Array(count).fill(0).map((d, i) => { + const lockedColor = colors[i]; + if (lockedColor) { + locked[i] = true; + return lockedColor; + } + return random_1.randomColor(); + }), + }; + return optimizers_1.paletteOptimization(palette, { locked }); +}; +exports.randomGeneration = randomGeneration; +//# sourceMappingURL=randomGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/randomGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/randomGeneration.js.map new file mode 100644 index 00000000..53b5a6cd --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/randomGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"randomGeneration.js","sourceRoot":"src/","sources":["generators/randomGeneration.ts"],"names":[],"mappings":";;;AACA,8CAAoD;AAEpD,qCAAuC;AAEvC,wCAAwC;AACjC,MAAM,gBAAgB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC5D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IACxC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,WAAW,EAAE;gBACf,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,OAAO,WAAW,CAAC;aACpB;YACD,OAAO,oBAAW,EAAE,CAAC;QACvB,CAAC,CAAC;KACH,CAAC;IACF,OAAO,gCAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAjBW,QAAA,gBAAgB,oBAiB3B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.d.ts new file mode 100644 index 00000000..fd3354d9 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const splitComplementaryGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js b/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js new file mode 100644 index 00000000..77fbea0d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitComplementaryGeneration = void 0; +const optimizers_1 = require("../optimizers"); +const categoricalGeneration_1 = require("./categoricalGeneration"); +// generate categorical palette by split complementary scheme +const splitComplementaryGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 180; + const { newColors, locked } = categoricalGeneration_1.categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return optimizers_1.paletteOptimization(palette, { locked }); +}; +exports.splitComplementaryGeneration = splitComplementaryGeneration; +//# sourceMappingURL=splitComplementaryGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js.map new file mode 100644 index 00000000..7ca76f53 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/splitComplementaryGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"splitComplementaryGeneration.js","sourceRoot":"src/","sources":["generators/splitComplementaryGeneration.ts"],"names":[],"mappings":";;;AACA,8CAAoD;AACpD,mEAAqE;AAGrE,6DAA6D;AACtD,MAAM,4BAA4B,GAAe,CAAC,aAAa,EAAE,EAAE;IACxE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,kDAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,gCAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAXW,QAAA,4BAA4B,gCAWvC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.d.ts new file mode 100644 index 00000000..ce55fb4a --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const tetradicGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js b/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js new file mode 100644 index 00000000..a0126d35 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tetradicGeneration = void 0; +const optimizers_1 = require("../optimizers"); +const categoricalGeneration_1 = require("./categoricalGeneration"); +// generate categorical palette by tetradic scheme +const tetradicGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 90; + const { newColors, locked } = categoricalGeneration_1.categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return optimizers_1.paletteOptimization(palette, { locked }); +}; +exports.tetradicGeneration = tetradicGeneration; +//# sourceMappingURL=tetradicGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js.map new file mode 100644 index 00000000..ea61f926 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/tetradicGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tetradicGeneration.js","sourceRoot":"src/","sources":["generators/tetradicGeneration.ts"],"names":[],"mappings":";;;AACA,8CAAoD;AACpD,mEAAqE;AAErE,kDAAkD;AAC3C,MAAM,kBAAkB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC9D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,kDAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO,gCAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAZW,QAAA,kBAAkB,sBAY7B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.d.ts b/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.d.ts new file mode 100644 index 00000000..8f650fee --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.d.ts @@ -0,0 +1,2 @@ +import { Generation } from './types'; +export declare const triadicGeneration: Generation; diff --git a/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js b/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js new file mode 100644 index 00000000..4c1ee1bc --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.triadicGeneration = void 0; +const optimizers_1 = require("../optimizers"); +const categoricalGeneration_1 = require("./categoricalGeneration"); +// generate categorical palette by triadic scheme +const triadicGeneration = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 120; + const { newColors, locked } = categoricalGeneration_1.categoricalGenerationInHsv(color, dHue, count, colors); + const palette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return optimizers_1.paletteOptimization(palette, { locked }); +}; +exports.triadicGeneration = triadicGeneration; +//# sourceMappingURL=triadicGeneration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js.map b/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js.map new file mode 100644 index 00000000..4d6e8ca2 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/triadicGeneration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"triadicGeneration.js","sourceRoot":"src/","sources":["generators/triadicGeneration.ts"],"names":[],"mappings":";;;AACA,8CAAoD;AACpD,mEAAqE;AAGrE,iDAAiD;AAC1C,MAAM,iBAAiB,GAAe,CAAC,aAAa,EAAE,EAAE;IAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,kDAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,gCAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/types.d.ts b/vendors/smart-color/0.2.1/lib/generators/types.d.ts new file mode 100644 index 00000000..708157ec --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/types.d.ts @@ -0,0 +1,5 @@ +import { Palette } from '@antv/color-schema'; +import { GeneratorConfiguration } from '../types'; +export declare type Generation = (configuration: { + [K in keyof GeneratorConfiguration]-?: GeneratorConfiguration[K]; +}) => Palette; diff --git a/vendors/smart-color/0.2.1/lib/generators/types.js b/vendors/smart-color/0.2.1/lib/generators/types.js new file mode 100644 index 00000000..11e638d1 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/types.js.map b/vendors/smart-color/0.2.1/lib/generators/types.js.map new file mode 100644 index 00000000..fa2322a7 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"src/","sources":["generators/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.d.ts b/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.d.ts new file mode 100644 index 00000000..100eec85 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.d.ts @@ -0,0 +1,8 @@ +import { ColorSchemeType } from '@antv/color-schema'; +import { GeneratorConfiguration } from '../types'; +export declare const validateConfiguration: (type: ColorSchemeType, configuration: GeneratorConfiguration) => { + color: import("@antv/color-schema").Color; + colors: import("@antv/color-schema").Color[]; + count: number; + tendency: "tint" | "shade"; +}; diff --git a/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js b/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js new file mode 100644 index 00000000..39a16b41 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateConfiguration = void 0; +const random_1 = require("./random"); +const DISCRETE_SCALE_TYPES = ['monochromatic']; +const validateConfiguration = (type, configuration) => { + const { count = 8, tendency = 'tint' } = configuration; + let { colors = [], color } = configuration; + // If the colour is not configured + // then select the first of the locked colors or generate a random color + if (!color) { + color = colors.find((c) => !!c && !!c.model && !!c.value) || random_1.randomColor(); + } + // Discrete scale palette cannot be generated when colors are locked. + if (DISCRETE_SCALE_TYPES.includes(type)) { + colors = []; + } + return { + color, + colors, + count, + tendency, + }; +}; +exports.validateConfiguration = validateConfiguration; +//# sourceMappingURL=validateConfiguration.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js.map b/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js.map new file mode 100644 index 00000000..1537f173 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/generators/validateConfiguration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validateConfiguration.js","sourceRoot":"src/","sources":["generators/validateConfiguration.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AAEvC,MAAM,oBAAoB,GAAsB,CAAC,eAAe,CAAC,CAAC;AAC3D,MAAM,qBAAqB,GAAG,CAAC,IAAqB,EAAE,aAAqC,EAAE,EAAE;IACpG,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;IACvD,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;IAE3C,kCAAkC;IAClC,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,oBAAW,EAAE,CAAC;KAC5E;IAED,qEAAqE;IACrE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACvC,MAAM,GAAG,EAAE,CAAC;KACb;IACD,OAAO;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,qBAAqB,yBAoBhC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/index.d.ts b/vendors/smart-color/0.2.1/lib/index.d.ts new file mode 100644 index 00000000..b9dcd958 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/index.d.ts @@ -0,0 +1,8 @@ +export { colorToArray, arrayToColor, colorToGray, colorToHex, hexToColor, nameToColor, colorBlend, colorBrighten, colorDarken, } from './utils'; +export { colorSimulation, invertGrayscale } from './simulators'; +export { paletteGeneration } from './generators'; +export { paletteOptimization } from './optimizers'; +export { getPaletteFromImage, getPaletteFromString } from './extractors'; +export { colorDifference, colorAesthetic } from './evaluators'; +export { ColorBlindnessSimulationType, SimulationType } from './types'; +export { COLOR_BLINDNESS_SIMULATION_TYPES, TENDENCIES } from './constant'; diff --git a/vendors/smart-color/0.2.1/lib/index.js b/vendors/smart-color/0.2.1/lib/index.js new file mode 100644 index 00000000..865e9bf7 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/index.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TENDENCIES = exports.COLOR_BLINDNESS_SIMULATION_TYPES = exports.colorAesthetic = exports.colorDifference = exports.getPaletteFromString = exports.getPaletteFromImage = exports.paletteOptimization = exports.paletteGeneration = exports.invertGrayscale = exports.colorSimulation = exports.colorDarken = exports.colorBrighten = exports.colorBlend = exports.nameToColor = exports.hexToColor = exports.colorToHex = exports.colorToGray = exports.arrayToColor = exports.colorToArray = void 0; +var utils_1 = require("./utils"); +Object.defineProperty(exports, "colorToArray", { enumerable: true, get: function () { return utils_1.colorToArray; } }); +Object.defineProperty(exports, "arrayToColor", { enumerable: true, get: function () { return utils_1.arrayToColor; } }); +Object.defineProperty(exports, "colorToGray", { enumerable: true, get: function () { return utils_1.colorToGray; } }); +Object.defineProperty(exports, "colorToHex", { enumerable: true, get: function () { return utils_1.colorToHex; } }); +Object.defineProperty(exports, "hexToColor", { enumerable: true, get: function () { return utils_1.hexToColor; } }); +Object.defineProperty(exports, "nameToColor", { enumerable: true, get: function () { return utils_1.nameToColor; } }); +Object.defineProperty(exports, "colorBlend", { enumerable: true, get: function () { return utils_1.colorBlend; } }); +Object.defineProperty(exports, "colorBrighten", { enumerable: true, get: function () { return utils_1.colorBrighten; } }); +Object.defineProperty(exports, "colorDarken", { enumerable: true, get: function () { return utils_1.colorDarken; } }); +// color simulation +var simulators_1 = require("./simulators"); +Object.defineProperty(exports, "colorSimulation", { enumerable: true, get: function () { return simulators_1.colorSimulation; } }); +Object.defineProperty(exports, "invertGrayscale", { enumerable: true, get: function () { return simulators_1.invertGrayscale; } }); +// palette generation +var generators_1 = require("./generators"); +Object.defineProperty(exports, "paletteGeneration", { enumerable: true, get: function () { return generators_1.paletteGeneration; } }); +// palette optimization +var optimizers_1 = require("./optimizers"); +Object.defineProperty(exports, "paletteOptimization", { enumerable: true, get: function () { return optimizers_1.paletteOptimization; } }); +// get palette +var extractors_1 = require("./extractors"); +Object.defineProperty(exports, "getPaletteFromImage", { enumerable: true, get: function () { return extractors_1.getPaletteFromImage; } }); +Object.defineProperty(exports, "getPaletteFromString", { enumerable: true, get: function () { return extractors_1.getPaletteFromString; } }); +// professional test +var evaluators_1 = require("./evaluators"); +Object.defineProperty(exports, "colorDifference", { enumerable: true, get: function () { return evaluators_1.colorDifference; } }); +Object.defineProperty(exports, "colorAesthetic", { enumerable: true, get: function () { return evaluators_1.colorAesthetic; } }); +var constant_1 = require("./constant"); +Object.defineProperty(exports, "COLOR_BLINDNESS_SIMULATION_TYPES", { enumerable: true, get: function () { return constant_1.COLOR_BLINDNESS_SIMULATION_TYPES; } }); +Object.defineProperty(exports, "TENDENCIES", { enumerable: true, get: function () { return constant_1.TENDENCIES; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/index.js.map b/vendors/smart-color/0.2.1/lib/index.js.map new file mode 100644 index 00000000..02bb8078 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":";;;AAAA,iCAUiB;AATf,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AACV,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AAEb,mBAAmB;AACnB,2CAAgE;AAAvD,6GAAA,eAAe,OAAA;AAAE,6GAAA,eAAe,OAAA;AACzC,qBAAqB;AACrB,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,uBAAuB;AACvB,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA;AAC5B,cAAc;AACd,2CAAyE;AAAhE,iHAAA,mBAAmB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAClD,oBAAoB;AACpB,2CAA+D;AAAtD,6GAAA,eAAe,OAAA;AAAE,4GAAA,cAAc,OAAA;AAExC,uCAA0E;AAAjE,4HAAA,gCAAgC,OAAA;AAAE,sGAAA,UAAU,OAAA"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/optimizers/index.d.ts b/vendors/smart-color/0.2.1/lib/optimizers/index.d.ts new file mode 100644 index 00000000..3989b753 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/optimizers/index.d.ts @@ -0,0 +1,2 @@ +import { PaletteOptimization } from '../types'; +export declare const paletteOptimization: PaletteOptimization; diff --git a/vendors/smart-color/0.2.1/lib/optimizers/index.js b/vendors/smart-color/0.2.1/lib/optimizers/index.js new file mode 100644 index 00000000..b72d0e64 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/optimizers/index.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.paletteOptimization = void 0; +const color_schema_1 = require("@antv/color-schema"); +const constant_1 = require("../constant"); +const simulators_1 = require("../simulators"); +const utils_1 = require("../utils"); +const optimizePaletteByGA_1 = require("./optimizePaletteByGA"); +const COLOR_DIFFERENCE_DEFAULT_VALUE = { + euclidean: 30, + // ref: Categorical Colormap Optimization with Visualization Case Studies + // suggests that [20, 25] might be the borderline zone + CIEDE2000: 20, + // WCAG, 1.4.3 Contrast (Minimum) + contrastRatio: 4.5, +}; +const COLOR_DIFFERENCE_MAX_VALUE = { + euclidean: 291.48, + CIEDE2000: 100, + contrastRatio: 21, +}; +const paletteOptimization = (palette, configuration = {}) => { + const { locked = [], simulationType = 'normal', threshold, colorModel = 'hsv', colorDifferenceMeasure = 'euclidean', backgroundColor = constant_1.WHITE, } = configuration; + let newThreshold = threshold; + // set default value + if (!newThreshold) { + newThreshold = COLOR_DIFFERENCE_DEFAULT_VALUE[colorDifferenceMeasure]; + } + // In case of grayscale mode, the maximum difference between two can be estimated directly + // If the set threshold is outside of this range, trim directly to save optimization time + if (simulationType === 'grayscale') { + const maxValue = COLOR_DIFFERENCE_MAX_VALUE[colorDifferenceMeasure]; + newThreshold = Math.min(newThreshold, maxValue / palette.colors.length); + } + const newPalette = utils_1.cloneDeep(palette); + if (!color_schema_1.isMatrixPalette(newPalette) && !color_schema_1.isContinuousPalette(newPalette)) { + if (simulationType === 'grayscale') { + const colors = newPalette.colors.map((color) => [utils_1.colorToGray(color)]); + const newColors = optimizePaletteByGA_1.optimizePaletteByGA(colors, locked, simulationType, newThreshold, colorModel, colorDifferenceMeasure, backgroundColor); + newPalette.colors.forEach((color, index) => Object.assign(color, simulators_1.invertGrayscale(newColors[index][0] / 255, color))); + } + else { + const colors = newPalette.colors.map((color) => utils_1.colorToArray(color, colorModel)); + const newColors = optimizePaletteByGA_1.optimizePaletteByGA(colors, locked, simulationType, newThreshold, colorModel, colorDifferenceMeasure, backgroundColor); + newPalette.colors.forEach((color, index) => { + Object.assign(color, utils_1.arrayToColor(newColors[index], colorModel)); + }); + } + } + return newPalette; +}; +exports.paletteOptimization = paletteOptimization; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/optimizers/index.js.map b/vendors/smart-color/0.2.1/lib/optimizers/index.js.map new file mode 100644 index 00000000..f8e392fd --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/optimizers/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["optimizers/index.ts"],"names":[],"mappings":";;;AAAA,qDAAiF;AACjF,0CAAoC;AACpC,8CAAgD;AAEhD,oCAA8E;AAC9E,+DAA4D;AAE5D,MAAM,8BAA8B,GAA2C;IAC7E,SAAS,EAAE,EAAE;IACb,yEAAyE;IACzE,sDAAsD;IACtD,SAAS,EAAE,EAAE;IACb,iCAAiC;IACjC,aAAa,EAAE,GAAG;CACnB,CAAC;AAEF,MAAM,0BAA0B,GAA2C;IACzE,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,GAAG;IACd,aAAa,EAAE,EAAE;CAClB,CAAC;AAEK,MAAM,mBAAmB,GAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,EAAE,EAAE,EAAE;IACtF,MAAM,EACJ,MAAM,GAAG,EAAE,EACX,cAAc,GAAG,QAAQ,EACzB,SAAS,EACT,UAAU,GAAG,KAAK,EAClB,sBAAsB,GAAG,WAAW,EACpC,eAAe,GAAG,gBAAK,GACxB,GAAG,aAAa,CAAC;IAClB,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,oBAAoB;IACpB,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG,8BAA8B,CAAC,sBAAsB,CAAC,CAAC;KACvE;IACD,0FAA0F;IAC1F,yFAAyF;IACzF,IAAI,cAAc,KAAK,WAAW,EAAE;QAClC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;QACpE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzE;IAED,MAAM,UAAU,GAAG,iBAAS,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,8BAAe,CAAC,UAAU,CAAC,IAAI,CAAC,kCAAmB,CAAC,UAAU,CAAC,EAAE;QACpE,IAAI,cAAc,KAAK,WAAW,EAAE;YAClC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAY,EAAE,CAAC,CAAC,mBAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvF,MAAM,SAAS,GAAG,yCAAmB,CACnC,MAAM,EACN,MAAM,EACN,cAAc,EACd,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,eAAe,CAChB,CAAC;YACF,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,KAAa,EAAE,EAAE,CACxD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,4BAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CACxE,CAAC;SACH;aAAM;YACL,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,oBAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,yCAAmB,CACnC,MAAM,EACN,MAAM,EACN,cAAc,EACd,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,eAAe,CAChB,CAAC;YACF,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,KAAa,EAAE,EAAE;gBACxD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;SACJ;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAtDW,QAAA,mBAAmB,uBAsD9B"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.d.ts b/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.d.ts new file mode 100644 index 00000000..15c9341c --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.d.ts @@ -0,0 +1,7 @@ +import { Color, ColorModel } from '@antv/color-schema'; +import { ColorDifferenceMeasure, SimulationType } from '../types'; +declare type ColorArray = [number] | [number, number, number] | [number, number, number, number]; +declare type Colors = ColorArray[]; +export declare const calFitness: (colors: Colors, locked: boolean[], simulationType: SimulationType, colorModel: ColorModel, colorDifferenceMeasure: ColorDifferenceMeasure, backgroundColor: Color) => number; +export declare const optimizePaletteByGA: (colors: Colors, locked: boolean[], simulationType: SimulationType, threshold: number, colorModel: ColorModel, colorDifference: ColorDifferenceMeasure, backgroundColor: Color) => any; +export {}; diff --git a/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js b/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js new file mode 100644 index 00000000..ca460f28 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js @@ -0,0 +1,137 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.optimizePaletteByGA = exports.calFitness = void 0; +const color_schema_1 = require("@antv/color-schema"); +const utils_1 = require("../utils"); +const evaluators_1 = require("../evaluators"); +const simulators_1 = require("../simulators"); +// Genetic algorithm configuration +const POPULATION_NUMBER = 50; +const CROSSOVER_RATE = 0.9; +const MUTATION_RATE = 0.1; +const MAX_GENERATION = 100; +const ADAPTIVE_RANGE = [0.8, 1.2]; +const rouletteWheelSelection = (fitnesses) => { + const sumFitness = fitnesses.reduce((a, b) => a + b); + let index = 0; + const seed = utils_1.random(sumFitness); + let count = 0; + for (let i = 0; i < fitnesses.length; i += 1) { + count += fitnesses[i]; + if (seed < count) { + index = +i; + } + } + return index; +}; +const tournamentSelection = (fitnesses) => { + const TOURNAMENT_SIZE = 3; + let index = -1; + let maxFitness = 0; + for (let i = 0; i < TOURNAMENT_SIZE; i += 1) { + const randomIndex = utils_1.randomInt(fitnesses.length - 1); + if (fitnesses[randomIndex] > maxFitness) { + index = i; + maxFitness = fitnesses[randomIndex]; + } + } + return index; +}; +const selectionFunction = { + rouletteWheel: rouletteWheelSelection, + tournament: tournamentSelection, +}; +const selection = (fitnesses, type = 'tournament') => { + return selectionFunction[type](fitnesses); +}; +const crossover = (father, mother) => { + const child1 = utils_1.cloneDeep(father); + const child2 = utils_1.cloneDeep(mother); + for (let i = 1; i < father.length; i += 2) { + child1[i] = mother[i]; + child2[i] = father[i]; + } + return [child1, child2]; +}; +const mutate = (colors, unlockedIndexs, simulationType, colorModel) => { + const newColors = utils_1.cloneDeep(colors); + // pick one color and change color adaptively + const mutateIndex = unlockedIndexs[utils_1.randomInt(unlockedIndexs.length - 1)]; + const dimensionIndex = utils_1.randomInt(colors[0].length - 1); + let newValue = newColors[mutateIndex][dimensionIndex] * utils_1.random(...ADAPTIVE_RANGE); + // clip + let range = [15, 240]; // grayscale + if (simulationType !== 'grayscale') { + range = color_schema_1.ColorModelRange[colorModel][colorModel.split('')[dimensionIndex]]; + } + const [min, max] = range; + if (newValue < min) { + newValue = min; + } + else if (newValue > max) { + newValue = max; + } + newColors[mutateIndex][dimensionIndex] = newValue; + return newColors; +}; +// fitness function +const calFitness = (colors, locked, simulationType, colorModel, colorDifferenceMeasure, backgroundColor) => { + let newColors; + if (simulationType === 'grayscale') { + newColors = colors.map(([gray]) => utils_1.grayToColor(gray)); + } + else { + newColors = colors.map((color) => simulators_1.colorSimulation(utils_1.arrayToColor(color, colorModel), simulationType)); + } + let minDifference = Infinity; + for (let i = 0; i < newColors.length; i += 1) { + for (let j = i + 1; j < newColors.length; j += 1) { + if (!(locked[i] && locked[j])) { + minDifference = Math.min(minDifference, evaluators_1.colorDifference(newColors[i], newColors[j], { measure: colorDifferenceMeasure, backgroundColor })); + } + } + } + return minDifference; +}; +exports.calFitness = calFitness; +const optimizePaletteByGA = (colors, locked, simulationType, threshold, colorModel, colorDifference, backgroundColor) => { + if (Math.round(exports.calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)) > threshold) { + return colors; + } + const unlockedIndexs = new Array(colors.length) + .fill(0) + .map((d, index) => index) + .filter((d, index) => !locked[index]); + // Creating a new generation + let population = new Array(POPULATION_NUMBER) + .fill(0) + .map(() => mutate(colors, unlockedIndexs, simulationType, colorModel)); + // Evaluating individuals + let fitnesses = population.map((colors) => exports.calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)); + let bestFitness = Math.max(...fitnesses); + let elites = population[fitnesses.findIndex((d) => d === bestFitness)]; + let cnt = 1; + while (cnt < MAX_GENERATION && Math.round(bestFitness) < threshold) { + // Elitist Strategy + const newPopulation = [elites]; + for (let i = 1; i < POPULATION_NUMBER; i += 2) { + // Selection + const father = population[selection(fitnesses)]; + const mother = population[selection(fitnesses)]; + // Reproduction + let children = utils_1.random() < CROSSOVER_RATE ? crossover(father, mother) : [father, mother]; + // Mutation + children = children.map((child) => utils_1.random() < MUTATION_RATE ? mutate(child, unlockedIndexs, simulationType, colorModel) : child); + newPopulation.push(...children); + } + population = newPopulation; + fitnesses = population.map((colors) => exports.calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)); + const newBestFitness = Math.max(...fitnesses); + bestFitness = newBestFitness; + elites = population[fitnesses.findIndex((d) => d === newBestFitness)]; + cnt += 1; + } + return elites; +}; +exports.optimizePaletteByGA = optimizePaletteByGA; +//# sourceMappingURL=optimizePaletteByGA.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js.map b/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js.map new file mode 100644 index 00000000..2e82759f --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/optimizers/optimizePaletteByGA.js.map @@ -0,0 +1 @@ +{"version":3,"file":"optimizePaletteByGA.js","sourceRoot":"src/","sources":["optimizers/optimizePaletteByGA.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.d.ts b/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.d.ts new file mode 100644 index 00000000..d5da84d1 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.d.ts @@ -0,0 +1,3 @@ +import { ColorBlindnessSimulationType, ColorSimulation } from '../types'; +export declare function isColorBlindnessSimulation(type: any): type is ColorBlindnessSimulationType; +export declare const colorBlindnessSimulation: ColorSimulation; diff --git a/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js b/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js new file mode 100644 index 00000000..aa11f651 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorBlindnessSimulation = exports.isColorBlindnessSimulation = void 0; +const tslib_1 = require("tslib"); +// @ts-ignore +const color_blind_1 = tslib_1.__importDefault(require("color-blind")); +const constant_1 = require("../constant"); +const utils_1 = require("../utils"); +function isColorBlindnessSimulation(type) { + return type !== 'normal' && constant_1.COLOR_BLINDNESS_SIMULATION_TYPES.indexOf(type) > -1; +} +exports.isColorBlindnessSimulation = isColorBlindnessSimulation; +// get color in color blindness simulation +const colorBlindnessSimulation = (color, type = 'normal') => { + if (type === 'normal') { + return { ...color }; + } + const hexColor = utils_1.colorToHex(color); + const blindColor = color_blind_1.default[type](hexColor); + return utils_1.hexToColor(blindColor); +}; +exports.colorBlindnessSimulation = colorBlindnessSimulation; +//# sourceMappingURL=colorBlindness.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js.map b/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js.map new file mode 100644 index 00000000..7bf470c3 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/colorBlindness.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorBlindness.js","sourceRoot":"src/","sources":["simulators/colorBlindness.ts"],"names":[],"mappings":";;;;AAAA,aAAa;AACb,sEAAkC;AAClC,0CAA+D;AAE/D,oCAAkD;AAElD,SAAgB,0BAA0B,CAAC,IAAS;IAClD,OAAO,IAAI,KAAK,QAAQ,IAAI,2CAAgC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClF,CAAC;AAFD,gEAEC;AAED,0CAA0C;AACnC,MAAM,wBAAwB,GAAoB,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,EAAE;IAClF,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;KACrB;IACD,MAAM,QAAQ,GAAG,kBAAU,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,qBAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,kBAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC;AAPW,QAAA,wBAAwB,4BAOnC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/simulators/grayscale.d.ts b/vendors/smart-color/0.2.1/lib/simulators/grayscale.d.ts new file mode 100644 index 00000000..179588e9 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/grayscale.d.ts @@ -0,0 +1,4 @@ +import { Color } from '@antv/color-schema'; +import { ColorSimulation } from '../types'; +export declare const grayscale: ColorSimulation; +export declare function invertGrayscale(grayscaleValue: number, color: Color): Color; diff --git a/vendors/smart-color/0.2.1/lib/simulators/grayscale.js b/vendors/smart-color/0.2.1/lib/simulators/grayscale.js new file mode 100644 index 00000000..9002aa52 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/grayscale.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.invertGrayscale = exports.grayscale = void 0; +const utils_1 = require("../utils"); +// get color in grayscale +const grayscale = (color) => { + const gray = utils_1.colorToGray(color); + const [, , , alpha = 1] = utils_1.colorToArray(color, 'rgba'); + return utils_1.grayToColor(gray, alpha); +}; +exports.grayscale = grayscale; +// invert color from the gray scale value +// grayscaleValue: [0, 1] +function invertGrayscale(grayscaleValue, color) { + const [, a, b] = utils_1.colorToArray(color, 'lab'); + const [, , , alpha = 1] = utils_1.colorToArray(color, 'rgba'); + const target = grayscaleValue * 100; + let L = Math.round(target); + let newGray = utils_1.colorToGray(utils_1.arrayToColor([L, a, b], 'lab')); + let cnt = 25; + while (Math.round(target) !== Math.round((newGray / 255) * 100) && cnt > 0) { + if (target > (newGray / 255) * 100) { + L += 1; + } + else { + L -= 1; + } + cnt -= 1; + newGray = utils_1.colorToGray(utils_1.arrayToColor([L, a, b], 'lab')); + } + if (Math.round(target) < Math.round((newGray / 255) * 100)) + L -= 1; + let newColor; + if (alpha === 1) { + newColor = utils_1.arrayToColor([L, a, b], 'lab'); + } + else { + const rgb = utils_1.colorToArray(utils_1.arrayToColor([L, a, b], 'lab'), 'rgb'); + newColor = utils_1.arrayToColor([...rgb, alpha], 'rgba'); + } + return { ...color, ...newColor }; +} +exports.invertGrayscale = invertGrayscale; +//# sourceMappingURL=grayscale.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/simulators/grayscale.js.map b/vendors/smart-color/0.2.1/lib/simulators/grayscale.js.map new file mode 100644 index 00000000..e824bb85 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/grayscale.js.map @@ -0,0 +1 @@ +{"version":3,"file":"grayscale.js","sourceRoot":"src/","sources":["simulators/grayscale.ts"],"names":[],"mappings":";;;AACA,oCAAgF;AAGhF,yBAAyB;AAClB,MAAM,SAAS,GAAoB,CAAC,KAAK,EAAE,EAAE;IAClD,MAAM,IAAI,GAAG,mBAAW,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,KAAK,GAAG,CAAC,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,mBAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB;AAEF,yCAAyC;AACzC,yBAAyB;AACzB,SAAgB,eAAe,CAAC,cAAsB,EAAE,KAAY;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,KAAK,GAAG,CAAC,CAAC,GAAG,oBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,cAAc,GAAG,GAAG,CAAC;IAEpC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAG,mBAAW,CAAC,oBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;QAC1E,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;YAClC,CAAC,IAAI,CAAC,CAAC;SACR;aAAM;YACL,CAAC,IAAI,CAAC,CAAC;SACR;QACD,GAAG,IAAI,CAAC,CAAC;QACT,OAAO,GAAG,mBAAW,CAAC,oBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KACvD;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAAE,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAI,QAAe,CAAC;IACpB,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,QAAQ,GAAG,oBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KAC3C;SAAM;QACL,MAAM,GAAG,GAAG,oBAAY,CAAC,oBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,GAAG,oBAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAqC,EAAE,MAAM,CAAC,CAAC;KACtF;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;AACnC,CAAC;AA5BD,0CA4BC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/simulators/index.d.ts b/vendors/smart-color/0.2.1/lib/simulators/index.d.ts new file mode 100644 index 00000000..05e27e57 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/index.d.ts @@ -0,0 +1,4 @@ +import { ColorSimulation } from '../types'; +export declare const colorSimulation: ColorSimulation; +export { isColorBlindnessSimulation } from './colorBlindness'; +export { invertGrayscale } from './grayscale'; diff --git a/vendors/smart-color/0.2.1/lib/simulators/index.js b/vendors/smart-color/0.2.1/lib/simulators/index.js new file mode 100644 index 00000000..fb089ac8 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/index.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.invertGrayscale = exports.isColorBlindnessSimulation = exports.colorSimulation = void 0; +const colorBlindness_1 = require("./colorBlindness"); +const grayscale_1 = require("./grayscale"); +const colorSimulation = (color, type = 'normal') => { + if (type === 'grayscale') { + return grayscale_1.grayscale(color); + } + return colorBlindness_1.colorBlindnessSimulation(color, type); +}; +exports.colorSimulation = colorSimulation; +var colorBlindness_2 = require("./colorBlindness"); +Object.defineProperty(exports, "isColorBlindnessSimulation", { enumerable: true, get: function () { return colorBlindness_2.isColorBlindnessSimulation; } }); +var grayscale_2 = require("./grayscale"); +Object.defineProperty(exports, "invertGrayscale", { enumerable: true, get: function () { return grayscale_2.invertGrayscale; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/simulators/index.js.map b/vendors/smart-color/0.2.1/lib/simulators/index.js.map new file mode 100644 index 00000000..756dd137 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/simulators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["simulators/index.ts"],"names":[],"mappings":";;;AACA,qDAA4D;AAC5D,2CAAwC;AAEjC,MAAM,eAAe,GAAoB,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,EAAE;IACzE,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,OAAO,qBAAS,CAAC,KAAK,CAAC,CAAC;KACzB;IACD,OAAO,yCAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC;AALW,QAAA,eAAe,mBAK1B;AAEF,mDAA8D;AAArD,4HAAA,0BAA0B,OAAA;AACnC,yCAA8C;AAArC,4GAAA,eAAe,OAAA"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/types.d.ts b/vendors/smart-color/0.2.1/lib/types.d.ts new file mode 100644 index 00000000..bfe626a4 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/types.d.ts @@ -0,0 +1,47 @@ +import { Color, Palette, ColorModel, ColorSchemeType, CategoricalPalette, DiscreteScalePalette } from '@antv/color-schema'; +import { COLOR_BLINDNESS_SIMULATION_TYPES, TENDENCIES, COLOR_DIFFERENCE_MEASURES, COLOR_AESTHETIC_MEASURES, BLEND_MODES, SEPARABLE_BLEND_MODES, NON_SEPARABLE_BLEND_MODES } from './constant'; +export declare type ColorBlindnessSimulationType = typeof COLOR_BLINDNESS_SIMULATION_TYPES[number]; +export declare type GrayscaleType = 'grayscale'; +export declare type SimulationType = ColorBlindnessSimulationType | GrayscaleType; +export declare type ColorSimulation = (color: Color, type?: SimulationType) => Color; +export declare type ColorDifferenceMeasure = typeof COLOR_DIFFERENCE_MEASURES[number]; +declare type ColorDifferenceGeneralConfiguration = { + backgroundColor?: Color; +}; +export declare type ColorDifferenceConfiguration = ColorDifferenceGeneralConfiguration & ({ + measure: 'euclidean'; + colorModel?: ColorModel; +} | { + measure: 'CIEDE2000' | 'contrastRatio'; +}); +export declare type ColorDifference = (color1: Color, color2: Color, configuration?: ColorDifferenceConfiguration) => number; +export declare type ColorAestheticMeasure = typeof COLOR_AESTHETIC_MEASURES[number]; +export declare type ColorAestheticConfiguration = { + measure: ColorAestheticMeasure; + backgroundColor?: Color; +}; +export declare type ColorAesthetic = (color1: Color, color2: Color, configuration?: ColorAestheticConfiguration) => number; +export declare type OptimizerConfiguration = { + locked?: boolean[]; + simulationType?: SimulationType; + threshold?: number; + colorModel?: ColorModel; + colorDifferenceMeasure?: ColorDifferenceMeasure; + backgroundColor?: Color; +}; +export declare type PaletteOptimization = (palette: Palette, configuration?: OptimizerConfiguration) => Palette; +declare type Tendency = typeof TENDENCIES[number]; +export declare type GeneratorConfiguration = { + count?: number; + color?: Color; + colors?: (Color | undefined)[]; + tendency?: Tendency; +}; +export declare type PaletteGeneration = (type?: ColorSchemeType, configuration?: GeneratorConfiguration) => CategoricalPalette | DiscreteScalePalette; +export declare type SeparableBlendMode = typeof SEPARABLE_BLEND_MODES[number]; +export declare type NonSeparableBlendMode = typeof NON_SEPARABLE_BLEND_MODES[number]; +export declare type BlendMode = typeof BLEND_MODES[number]; +export declare type ColorBlend = (colorTop: Color, colorBottom: Color, mode?: BlendMode) => Color; +export declare type ColorDarken = (color: Color, value?: number) => Color; +export declare type ColorBrighten = (color: Color, value?: number) => Color; +export {}; diff --git a/vendors/smart-color/0.2.1/lib/types.js b/vendors/smart-color/0.2.1/lib/types.js new file mode 100644 index 00000000..11e638d1 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/types.js.map b/vendors/smart-color/0.2.1/lib/types.js.map new file mode 100644 index 00000000..1d74d2b5 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"src/","sources":["types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.d.ts b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.d.ts new file mode 100644 index 00000000..194d1e9d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.d.ts @@ -0,0 +1,2 @@ +import { ColorBlend } from '../../types'; +export declare const colorBlend: ColorBlend; diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js new file mode 100644 index 00000000..f31b8dd7 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js @@ -0,0 +1,119 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorBlend = void 0; +const constant_1 = require("../../constant"); +const colorConversion_1 = require("../colorConversion"); +const multiply = (top, bottom) => (top * bottom) / 255; +const screen = (top, bottom) => top + bottom - (top * bottom) / 255; +const hardLight = (top, bottom) => top < 128 ? multiply(2 * top, bottom) : screen(2 * top - 255, bottom); +const separableBlendFunc = { + /** w3c */ + normal: (top) => top, + darken: (top, bottom) => Math.min(top, bottom), + multiply, + colorBurn: (top, bottom) => { + if (top === 0) + return 0; + return Math.max(0, 255 * (1 - (255 - bottom) / top)); + }, + lighten: (top, bottom) => Math.max(top, bottom), + screen, + colorDodge: (top, bottom) => { + if (top === 255) + return 255; + return Math.min(255, 255 * (bottom / (255 - top))); + }, + overlay: (top, bottom) => hardLight(bottom, top), + softLight: (top, bottom) => { + if (top < 128) { + return bottom - (1 - (2 * top) / 255) * bottom * (1 - bottom / 255); + } + const D = bottom < 64 ? ((16 * (bottom / 255) - 12) * (bottom / 255) + 4) * (bottom / 255) : Math.sqrt(bottom / 255); + return bottom + 255 * ((2 * top) / 255 - 1) * (D - bottom / 255); + }, + hardLight, + difference: (top, bottom) => Math.abs(top - bottom), + exclusion: (top, bottom) => top + bottom - (2 * top * bottom) / 255, + /** photoshop */ + linearBurn: (top, bottom) => Math.max(top + bottom - 255, 0), + linearDodge: (top, bottom) => Math.min(255, top + bottom), + linearLight: (top, bottom) => Math.max(bottom + 2 * top - 255, 0), + vividLight: (top, bottom) => top < 128 ? 255 * (1 - (1 - bottom / 255) / ((2 * top) / 255)) : 255 * (bottom / 2 / (255 - top)), + pinLight: (top, bottom) => (top < 128 ? Math.min(bottom, 2 * top) : Math.max(bottom, 2 * top - 255)), +}; +const lum = (rgb) => { + return 0.3 * rgb[0] + 0.58 * rgb[1] + 0.11 * rgb[2]; +}; +const clipColor = (rgb) => { + const l = lum(rgb); + const min = Math.min(...rgb); + const max = Math.max(...rgb); + let color = [...rgb]; + if (min < 0) { + color = color.map((value) => l + ((value - l) * l) / (l - min)); + } + if (max > 255) { + color = color.map((value) => l + ((value - l) * (255 - l)) / (max - l)); + } + return color; +}; +const setLum = (rgb, l) => { + const d = l - lum(rgb); + return clipColor(rgb.map((value) => value + d)); +}; +const sat = (rgb) => { + return Math.max(...rgb) - Math.min(...rgb); +}; +const setSat = (rgb, s) => { + const arr = rgb.map((value, index) => ({ value, index })); + arr.sort((a, b) => a.value - b.value); + const minIndex = arr[0].index; + const midIndex = arr[1].index; + const maxIndex = arr[2].index; + const color = [...rgb]; + if (color[maxIndex] > color[minIndex]) { + color[midIndex] = ((color[midIndex] - color[minIndex]) * s) / (color[maxIndex] - color[minIndex]); + color[maxIndex] = s; + } + else { + color[midIndex] = 0; + color[maxIndex] = 0; + } + color[minIndex] = 0; + return color; +}; +const nonSeparableBlendFunc = { + hue: (top, bottom) => setLum(setSat(top, sat(bottom)), lum(bottom)), + saturation: (top, bottom) => setLum(setSat(bottom, sat(top)), lum(bottom)), + color: (top, bottom) => setLum(top, lum(bottom)), + luminosity: (top, bottom) => setLum(bottom, lum(top)), +}; +const colorBlend = (colorTop, colorBottom, mode = 'normal') => { + const [r1, g1, b1, a1] = colorConversion_1.colorToArray(colorTop, 'rgba'); + const [r2, g2, b2, a2] = colorConversion_1.colorToArray(colorBottom, 'rgba'); + const rgb1 = [r1, g1, b1]; + const rgb2 = [r2, g2, b2]; + let blendRgb; + if (constant_1.SEPARABLE_BLEND_MODES.includes(mode)) { + const func = separableBlendFunc[mode]; + blendRgb = rgb1.map((num1, index) => Math.floor(func(num1, rgb2[index]))); + } + else { + blendRgb = nonSeparableBlendFunc[mode](rgb1, rgb2); + } + const a = a1 + a2 * (1 - a1); + const r = Math.round((a1 * (1 - a2) * r1 + a1 * a2 * blendRgb[0] + (1 - a1) * a2 * r2) / a); + const g = Math.round((a1 * (1 - a2) * g1 + a1 * a2 * blendRgb[1] + (1 - a1) * a2 * g2) / a); + const b = Math.round((a1 * (1 - a2) * b1 + a1 * a2 * blendRgb[2] + (1 - a1) * a2 * b2) / a); + if (a === 1) + return { + model: 'rgb', + value: { r, g, b }, + }; + return { + model: 'rgba', + value: { r, g, b, a }, + }; +}; +exports.colorBlend = colorBlend; +//# sourceMappingURL=colorBlend.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js.map b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js.map new file mode 100644 index 00000000..805eef95 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBlend.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorBlend.js","sourceRoot":"src/","sources":["utils/colorComputation/colorBlend.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.d.ts b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.d.ts new file mode 100644 index 00000000..41777bbf --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.d.ts @@ -0,0 +1,3 @@ +import { ColorBrighten, ColorDarken } from '@src/types'; +export declare const colorDarken: ColorDarken; +export declare const colorBrighten: ColorBrighten; diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js new file mode 100644 index 00000000..4ce4ea29 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.colorBrighten = exports.colorDarken = void 0; +const helper_1 = require("../helper"); +const colorConversion_1 = require("../colorConversion"); +// get darken/brighten color +// ref: https://zhuanlan.zhihu.com/p/32422584 +const hueStep = 2; +const saturationStep = 0.16; +const saturationStep2 = 0.05; +const brightnessStep1 = 0.05; +const brightnessStep2 = 0.15; +const lightColorCount = 5; +const darkColorCount = 4; +const getHue = (h, i, isLight) => { + let hue; + if (h >= 60 && h <= 240) { + hue = isLight ? h - hueStep * i : h + hueStep * i; + } + else { + hue = isLight ? h + hueStep * i : h - hueStep * i; + } + if (hue < 0) { + hue += 360; + } + else if (hue >= 360) { + hue -= 360; + } + return Math.round(hue); +}; +const getSaturation = (s, i, isLight) => { + let saturation; + if (isLight) { + saturation = s - saturationStep * i; + } + else if (i === darkColorCount) { + saturation = s + saturationStep; + } + else { + saturation = s + saturationStep2 * i; + } + if (isLight && i === lightColorCount && saturation > 0.1) { + saturation = 0.1; + } + saturation = helper_1.clamp(saturation, 0.06, 1); + return Number(saturation.toFixed(2)); +}; +const getValue = (v, i, isLight) => { + let value; + if (isLight) { + value = v + brightnessStep1 * i; + } + else { + value = v - brightnessStep2 * i; + } + value = helper_1.clamp(value, 0, 1); + return Number(value.toFixed(2)); +}; +const colorDarken = (color, value = 1) => { + const [h, s, v] = colorConversion_1.colorToArray(color, 'hsv'); + return { + model: 'hsv', + value: { + h: getHue(h, value, false), + s: getSaturation(s, value, false), + v: getValue(v, value, false), + }, + }; +}; +exports.colorDarken = colorDarken; +const colorBrighten = (color, value = 1) => { + const [h, s, v] = colorConversion_1.colorToArray(color, 'hsv'); + return { + model: 'hsv', + value: { + h: getHue(h, value, true), + s: getSaturation(s, value, true), + v: getValue(v, value, true), + }, + }; +}; +exports.colorBrighten = colorBrighten; +//# sourceMappingURL=colorBrightenDarken.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js.map b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js.map new file mode 100644 index 00000000..286d04b7 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/colorBrightenDarken.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorBrightenDarken.js","sourceRoot":"src/","sources":["utils/colorComputation/colorBrightenDarken.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.d.ts b/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.d.ts new file mode 100644 index 00000000..e031e979 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.d.ts @@ -0,0 +1,3 @@ +export { colorBlend } from './colorBlend'; +export { colorBrighten, colorDarken } from './colorBrightenDarken'; +export declare const hueOffset: (hue: number, dHue: number) => number; diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js b/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js new file mode 100644 index 00000000..bba9e601 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hueOffset = exports.colorDarken = exports.colorBrighten = exports.colorBlend = void 0; +var colorBlend_1 = require("./colorBlend"); +Object.defineProperty(exports, "colorBlend", { enumerable: true, get: function () { return colorBlend_1.colorBlend; } }); +var colorBrightenDarken_1 = require("./colorBrightenDarken"); +Object.defineProperty(exports, "colorBrighten", { enumerable: true, get: function () { return colorBrightenDarken_1.colorBrighten; } }); +Object.defineProperty(exports, "colorDarken", { enumerable: true, get: function () { return colorBrightenDarken_1.colorDarken; } }); +const hueOffset = (hue, dHue) => { + let newHue = (hue + dHue) % 360; + if (newHue < 0) { + newHue += 360; + } + else if (newHue >= 360) { + newHue -= 360; + } + return newHue; +}; +exports.hueOffset = hueOffset; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js.map b/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js.map new file mode 100644 index 00000000..37faddbb --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorComputation/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["utils/colorComputation/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,6DAAmE;AAA1D,oHAAA,aAAa,OAAA;AAAE,kHAAA,WAAW,OAAA;AAE5B,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,IAAY,EAAU,EAAE;IAC7D,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,MAAM,IAAI,GAAG,CAAC;KACf;SAAM,IAAI,MAAM,IAAI,GAAG,EAAE;QACxB,MAAM,IAAI,GAAG,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorConversion.d.ts b/vendors/smart-color/0.2.1/lib/utils/colorConversion.d.ts new file mode 100644 index 00000000..ca013e03 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorConversion.d.ts @@ -0,0 +1,10 @@ +import { Color, ColorModel } from '@antv/color-schema'; +import { Color as ChromaColor } from 'chroma-js'; +export declare const colorToChromaColor: (color: Color) => ChromaColor; +export declare const colorToArray: (color: Color, colorModel?: ColorModel) => [number, number, number] | [number, number, number, number]; +export declare const arrayToColor: (array: [number] | [number, number, number] | [number, number, number, number], colorModel?: ColorModel) => Color; +export declare function colorToGray(color: Color): number; +export declare function grayToColor(gray: number, alpha?: number): Color; +export { colorToHex } from '@antv/color-schema'; +export declare function hexToColor(hexValue: string): Color; +export declare function nameToColor(name: string): Color; diff --git a/vendors/smart-color/0.2.1/lib/utils/colorConversion.js b/vendors/smart-color/0.2.1/lib/utils/colorConversion.js new file mode 100644 index 00000000..1bbb1194 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorConversion.js @@ -0,0 +1,105 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.nameToColor = exports.hexToColor = exports.colorToHex = exports.grayToColor = exports.colorToGray = exports.arrayToColor = exports.colorToArray = exports.colorToChromaColor = void 0; +const tslib_1 = require("tslib"); +const chroma_js_1 = tslib_1.__importDefault(require("chroma-js")); +const getHexByName_1 = require("./getHexByName"); +const isChromaColor = (color) => { + if (chroma_js_1.default.valid(color)) { + return true; + } + return false; +}; +// Convert color to chroma color +const colorToChromaColor = (color) => { + const { value } = color; + if (isChromaColor(value)) { + return chroma_js_1.default(value); + } + return chroma_js_1.default('#000'); +}; +exports.colorToChromaColor = colorToChromaColor; +// Convert color to an array in a specific color model +const colorToArray = (color, colorModel = color.model) => { + const chromaColor = exports.colorToChromaColor(color); + if (chromaColor) { + return chromaColor[colorModel](); + } + return [0, 0, 0]; +}; +exports.colorToArray = colorToArray; +// Convert an array in a specific color model to color +const arrayToColor = (array, colorModel = array.length === 4 ? 'rgba' : 'rgb') => { + const value = {}; + if (array.length === 1) { + const [v] = array; + for (let i = 0; i < colorModel.length; i += 1) { + value[colorModel[i]] = v; + } + } + else { + for (let i = 0; i < colorModel.length; i += 1) { + value[colorModel[i]] = array[i]; + } + } + return { + model: colorModel, + value, + }; +}; +exports.arrayToColor = arrayToColor; +// Convert color to gray value +function colorToGray(color) { + const [r, g, b] = exports.colorToArray(color, 'rgb'); // [red, green, blue] + // Ref:https://tannerhelland.com/2011/10/01/grayscale-image-algorithm-vb6.html + const gray = Math.round(0.299 * r + 0.587 * g + 0.114 * b); + // gray value: [0, 255] + return gray; +} +exports.colorToGray = colorToGray; +// Convert gray value to color +function grayToColor(gray, alpha = 1) { + if (alpha === 1) { + return { + model: 'rgb', + value: { + r: gray, + g: gray, + b: gray, + }, + }; + } + return { + model: 'rgba', + value: { + r: gray, + g: gray, + b: gray, + a: alpha, + }, + }; +} +exports.grayToColor = grayToColor; +var color_schema_1 = require("@antv/color-schema"); +Object.defineProperty(exports, "colorToHex", { enumerable: true, get: function () { return color_schema_1.colorToHex; } }); +function hexToColor(hexValue) { + if (/^(#|0x)?[0-9a-fA-F]{3}$/.test(hexValue) || /^(#|0x)?[0-9a-fA-F]{6}$/.test(hexValue)) { + const rgb = chroma_js_1.default(hexValue).rgb(); + return exports.arrayToColor(rgb, 'rgb'); + } + if (/^(#|0x)?[0-9a-fA-F]{4}$/.test(hexValue) || /^(#|0x)?[0-9a-fA-F]{8}$/.test(hexValue)) { + const rgba = chroma_js_1.default(hexValue).rgba(); + return exports.arrayToColor(rgba, 'rgba'); + } + return { + model: 'rgb', + value: { r: 0, g: 0, b: 0 }, + }; +} +exports.hexToColor = hexToColor; +function nameToColor(name) { + const hex = getHexByName_1.getHexByName(name); + return hexToColor(hex); +} +exports.nameToColor = nameToColor; +//# sourceMappingURL=colorConversion.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/colorConversion.js.map b/vendors/smart-color/0.2.1/lib/utils/colorConversion.js.map new file mode 100644 index 00000000..4eb1ff81 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/colorConversion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"colorConversion.js","sourceRoot":"src/","sources":["utils/colorConversion.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/degree.d.ts b/vendors/smart-color/0.2.1/lib/utils/degree.d.ts new file mode 100644 index 00000000..a5026a9d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/degree.d.ts @@ -0,0 +1,2 @@ +export declare function rad2deg(n: number): number; +export declare function deg2rad(n: number): number; diff --git a/vendors/smart-color/0.2.1/lib/utils/degree.js b/vendors/smart-color/0.2.1/lib/utils/degree.js new file mode 100644 index 00000000..b3f12bdd --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/degree.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deg2rad = exports.rad2deg = void 0; +function rad2deg(n) { + return n * (180 / Math.PI); +} +exports.rad2deg = rad2deg; +function deg2rad(n) { + return n * (Math.PI / 180); +} +exports.deg2rad = deg2rad; +//# sourceMappingURL=degree.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/degree.js.map b/vendors/smart-color/0.2.1/lib/utils/degree.js.map new file mode 100644 index 00000000..5e72c8b7 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/degree.js.map @@ -0,0 +1 @@ +{"version":3,"file":"degree.js","sourceRoot":"src/","sources":["utils/degree.ts"],"names":[],"mappings":";;;AAAA,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAFD,0BAEC;AACD,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC7B,CAAC;AAFD,0BAEC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/getHexByName.d.ts b/vendors/smart-color/0.2.1/lib/utils/getHexByName.d.ts new file mode 100644 index 00000000..489f89e7 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/getHexByName.d.ts @@ -0,0 +1 @@ +export declare const getHexByName: (name: string) => any; diff --git a/vendors/smart-color/0.2.1/lib/utils/getHexByName.js b/vendors/smart-color/0.2.1/lib/utils/getHexByName.js new file mode 100644 index 00000000..43f27148 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/getHexByName.js @@ -0,0 +1,157 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getHexByName = void 0; +const nameHex = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32', +}; +// @ts-ignore +const getHexByName = (name) => nameHex[name] || '#000000'; +exports.getHexByName = getHexByName; +//# sourceMappingURL=getHexByName.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/getHexByName.js.map b/vendors/smart-color/0.2.1/lib/utils/getHexByName.js.map new file mode 100644 index 00000000..65a95ec8 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/getHexByName.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getHexByName.js","sourceRoot":"src/","sources":["utils/getHexByName.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;IACd,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,cAAc,EAAE,SAAS;IACzB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,SAAS;IAChB,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,oBAAoB,EAAE,SAAS;IAC/B,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,aAAa,EAAE,SAAS;IACxB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,aAAa,EAAE,SAAS;IACxB,GAAG,EAAE,SAAS;IACd,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,SAAS;IACpB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;CACvB,CAAC;AACF,aAAa;AACN,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AAA5D,QAAA,YAAY,gBAAgD"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/helper.d.ts b/vendors/smart-color/0.2.1/lib/utils/helper.d.ts new file mode 100644 index 00000000..0e59bd97 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/helper.d.ts @@ -0,0 +1,4 @@ +export declare const random: (a?: number, b?: number) => number; +export declare const randomInt: (a?: number, b?: number) => number; +export declare const clamp: (num: number, boundOne: number, boundTwo: number) => number; +export declare const cloneDeep: (target: any) => any; diff --git a/vendors/smart-color/0.2.1/lib/utils/helper.js b/vendors/smart-color/0.2.1/lib/utils/helper.js new file mode 100644 index 00000000..8ba355a1 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/helper.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cloneDeep = exports.clamp = exports.randomInt = exports.random = void 0; +const random = (a = 1, b = 0) => { + const lower = Math.min(a, b); + const upper = Math.max(a, b); + return lower + Math.random() * (upper - lower); +}; +exports.random = random; +const randomInt = (a = 1, b = 0) => { + const lower = Math.ceil(Math.min(a, b)); + const upper = Math.floor(Math.max(a, b)); + return Math.floor(lower + Math.random() * (upper - lower + 1)); +}; +exports.randomInt = randomInt; +const clamp = (num, boundOne, boundTwo) => { + if (!boundTwo) { + return Math.max(num, boundOne) === boundOne ? num : boundOne; + } + if (Math.min(num, boundOne) === num) { + return boundOne; + } + if (Math.max(num, boundTwo) === num) { + return boundTwo; + } + return num; +}; +exports.clamp = clamp; +// poor version, but enough +const cloneDeep = (target) => { + if (target && typeof target === 'object') { + const isArray = Array.isArray(target); + if (isArray) { + const cloneTarget = target.map((d) => exports.cloneDeep(d)); + return cloneTarget; + } + // isObject + const cloneTarget = {}; + const keys = Object.keys(target); + keys.forEach((key) => { + // @ts-ignore + cloneTarget[key] = exports.cloneDeep(target[key]); + }); + return cloneTarget; + } + return target; +}; +exports.cloneDeep = cloneDeep; +//# sourceMappingURL=helper.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/helper.js.map b/vendors/smart-color/0.2.1/lib/utils/helper.js.map new file mode 100644 index 00000000..d802c169 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helper.js","sourceRoot":"src/","sources":["utils/helper.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC,EAAU,EAAE;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AAJW,QAAA,MAAM,UAIjB;AAEK,MAAM,SAAS,GAAG,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC,EAAU,EAAE;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB;AAEK,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;IACvE,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;KAC9D;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAXW,QAAA,KAAK,SAWhB;AAEF,2BAA2B;AACpB,MAAM,SAAS,GAAG,CAAC,MAAW,EAAO,EAAE;IAC5C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE;YACX,MAAM,WAAW,GAAI,MAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,WAAW,CAAC;SACpB;QACD,WAAW;QACX,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,aAAa;YACb,WAAW,CAAC,GAAG,CAAC,GAAG,iBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;KACpB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAjBW,QAAA,SAAS,aAiBpB"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/image.d.ts b/vendors/smart-color/0.2.1/lib/utils/image.d.ts new file mode 100644 index 00000000..45375dcf --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/image.d.ts @@ -0,0 +1 @@ +export declare function loadImage(url: string): Promise; diff --git a/vendors/smart-color/0.2.1/lib/utils/image.js b/vendors/smart-color/0.2.1/lib/utils/image.js new file mode 100644 index 00000000..e44d6d0b --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/image.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.loadImage = void 0; +// Load a image in a promise +function loadImage(url) { + return new Promise((resolve, reject) => { + const img = new Image(); + img.addEventListener('load', () => { + resolve(img); + }); + img.addEventListener('error', () => { + reject(new Error(`Failed to load image URL: ${url}`)); + }); + img.crossOrigin = 'anonymous'; + img.src = url; + }); +} +exports.loadImage = loadImage; +//# sourceMappingURL=image.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/image.js.map b/vendors/smart-color/0.2.1/lib/utils/image.js.map new file mode 100644 index 00000000..2dae1f53 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/image.js.map @@ -0,0 +1 @@ +{"version":3,"file":"image.js","sourceRoot":"src/","sources":["utils/image.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAC5B,SAAgB,SAAS,CAAC,GAAW;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAC9B,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,8BAYC"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/index.d.ts b/vendors/smart-color/0.2.1/lib/utils/index.d.ts new file mode 100644 index 00000000..10077df3 --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/index.d.ts @@ -0,0 +1,5 @@ +export { loadImage } from './image'; +export { hueOffset, colorBlend, colorBrighten, colorDarken } from './colorComputation'; +export { colorToArray, arrayToColor, colorToGray, grayToColor, colorToHex, hexToColor, colorToChromaColor, nameToColor, } from './colorConversion'; +export { random, randomInt, clamp, cloneDeep } from './helper'; +export { rad2deg, deg2rad } from './degree'; diff --git a/vendors/smart-color/0.2.1/lib/utils/index.js b/vendors/smart-color/0.2.1/lib/utils/index.js new file mode 100644 index 00000000..bab8d29d --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/index.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deg2rad = exports.rad2deg = exports.cloneDeep = exports.clamp = exports.randomInt = exports.random = exports.nameToColor = exports.colorToChromaColor = exports.hexToColor = exports.colorToHex = exports.grayToColor = exports.colorToGray = exports.arrayToColor = exports.colorToArray = exports.colorDarken = exports.colorBrighten = exports.colorBlend = exports.hueOffset = exports.loadImage = void 0; +var image_1 = require("./image"); +Object.defineProperty(exports, "loadImage", { enumerable: true, get: function () { return image_1.loadImage; } }); +var colorComputation_1 = require("./colorComputation"); +Object.defineProperty(exports, "hueOffset", { enumerable: true, get: function () { return colorComputation_1.hueOffset; } }); +Object.defineProperty(exports, "colorBlend", { enumerable: true, get: function () { return colorComputation_1.colorBlend; } }); +Object.defineProperty(exports, "colorBrighten", { enumerable: true, get: function () { return colorComputation_1.colorBrighten; } }); +Object.defineProperty(exports, "colorDarken", { enumerable: true, get: function () { return colorComputation_1.colorDarken; } }); +var colorConversion_1 = require("./colorConversion"); +Object.defineProperty(exports, "colorToArray", { enumerable: true, get: function () { return colorConversion_1.colorToArray; } }); +Object.defineProperty(exports, "arrayToColor", { enumerable: true, get: function () { return colorConversion_1.arrayToColor; } }); +Object.defineProperty(exports, "colorToGray", { enumerable: true, get: function () { return colorConversion_1.colorToGray; } }); +Object.defineProperty(exports, "grayToColor", { enumerable: true, get: function () { return colorConversion_1.grayToColor; } }); +Object.defineProperty(exports, "colorToHex", { enumerable: true, get: function () { return colorConversion_1.colorToHex; } }); +Object.defineProperty(exports, "hexToColor", { enumerable: true, get: function () { return colorConversion_1.hexToColor; } }); +Object.defineProperty(exports, "colorToChromaColor", { enumerable: true, get: function () { return colorConversion_1.colorToChromaColor; } }); +Object.defineProperty(exports, "nameToColor", { enumerable: true, get: function () { return colorConversion_1.nameToColor; } }); +var helper_1 = require("./helper"); +Object.defineProperty(exports, "random", { enumerable: true, get: function () { return helper_1.random; } }); +Object.defineProperty(exports, "randomInt", { enumerable: true, get: function () { return helper_1.randomInt; } }); +Object.defineProperty(exports, "clamp", { enumerable: true, get: function () { return helper_1.clamp; } }); +Object.defineProperty(exports, "cloneDeep", { enumerable: true, get: function () { return helper_1.cloneDeep; } }); +var degree_1 = require("./degree"); +Object.defineProperty(exports, "rad2deg", { enumerable: true, get: function () { return degree_1.rad2deg; } }); +Object.defineProperty(exports, "deg2rad", { enumerable: true, get: function () { return degree_1.deg2rad; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/lib/utils/index.js.map b/vendors/smart-color/0.2.1/lib/utils/index.js.map new file mode 100644 index 00000000..0367274c --- /dev/null +++ b/vendors/smart-color/0.2.1/lib/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"src/","sources":["utils/index.ts"],"names":[],"mappings":";;;AAAA,iCAAoC;AAA3B,kGAAA,SAAS,OAAA;AAClB,uDAAuF;AAA9E,6GAAA,SAAS,OAAA;AAAE,8GAAA,UAAU,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAE,+GAAA,WAAW,OAAA;AAC1D,qDAS2B;AARzB,+GAAA,YAAY,OAAA;AACZ,+GAAA,YAAY,OAAA;AACZ,8GAAA,WAAW,OAAA;AACX,8GAAA,WAAW,OAAA;AACX,6GAAA,UAAU,OAAA;AACV,6GAAA,UAAU,OAAA;AACV,qHAAA,kBAAkB,OAAA;AAClB,8GAAA,WAAW,OAAA;AAGb,mCAA+D;AAAtD,gGAAA,MAAM,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,+FAAA,KAAK,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC5C,mCAA4C;AAAnC,iGAAA,OAAO,OAAA;AAAE,iGAAA,OAAO,OAAA"} \ No newline at end of file diff --git a/vendors/smart-color/0.2.1/src/.DS_Store b/vendors/smart-color/0.2.1/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c47225d00fea41b5f18b59d526df4c2d53482bb4 GIT binary patch literal 8196 zcmeHML24T@6#Z(`VjL2(43xlR)m5R%BD=sOIEx0l%06{%m!$1D+}X8 z_b9zW4p8U?dV;j?f2khHqhWTY&@Yglk=`FYJ!VGpWg;^B)4>+eIuW%{8P}H4L<)~{ zt&~TuX9H*uPxOw)*~!*XKOc@NZ0%47)B$xs9Z(0;m?@w)t@O+({-)0Y14Y$>jq7E$HfyZ{rbd*fd zFHC1t2h@RuIbfDLN1c64=W^@H#Jp7}s9jVp%quKP2pZYVfs&2`XMY&tcLFNMqz(&< R=t0pB0kJ_Fbzq?m`~kwF7ajlr literal 0 HcmV?d00001 diff --git a/vendors/smart-color/0.2.1/src/@types/color-blind.d.ts b/vendors/smart-color/0.2.1/src/@types/color-blind.d.ts new file mode 100644 index 00000000..7b97a104 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/@types/color-blind.d.ts @@ -0,0 +1,4 @@ +declare module 'color-blind' { + const content: any; + export = content; +} diff --git a/vendors/smart-color/0.2.1/src/constant.ts b/vendors/smart-color/0.2.1/src/constant.ts new file mode 100644 index 00000000..ef422ab1 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/constant.ts @@ -0,0 +1,53 @@ +import { Color } from '@antv/color-schema'; + +export const COLOR_BLINDNESS_SIMULATION_TYPES = [ + 'normal', + 'protanomaly', + 'deuteranomaly', + 'tritanomaly', + 'protanopia', + 'deuteranopia', + 'tritanopia', + 'achromatomaly', + 'achromatopsia', +] as const; +// color optimization configuration +export const TENDENCIES = ['tint', 'shade'] as const; +export const COLOR_DIFFERENCE_MEASURES = ['euclidean', 'CIEDE2000', 'contrastRatio'] as const; + +export const COLOR_AESTHETIC_MEASURES = ['pairPreference', 'harmony'] as const; + +export const WHITE: Color = { + model: 'rgb', + value: { + r: 255, + g: 255, + b: 255, + }, +}; + +// Separable blend modes https://www.w3.org/TR/compositing/#blendingseparable +export const SEPARABLE_BLEND_MODES = [ + 'normal', + 'darken', + 'multiply', + 'colorBurn', + 'linearBurn', + 'lighten', + 'screen', + 'colorDodge', + 'linearDodge', + 'overlay', + 'softLight', + 'hardLight', + 'vividLight', + 'linearLight', + 'pinLight', + 'difference', + 'exclusion', +]; + +// Non-separable blend modes https://www.w3.org/TR/compositing/#blendingnonseparable +export const NON_SEPARABLE_BLEND_MODES = ['hue', 'saturation', 'color', 'luminosity'] as const; + +export const BLEND_MODES = [...SEPARABLE_BLEND_MODES, ...NON_SEPARABLE_BLEND_MODES] as const; diff --git a/vendors/smart-color/0.2.1/src/evaluators/.DS_Store b/vendors/smart-color/0.2.1/src/evaluators/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8b30fadd34b6e8cb11c435019e981904237651ff GIT binary patch literal 6148 zcmeHKy-ve05I&aRv z3qt6wI)BdjzQp%gvTGtTlly!`G$f({oUyly<`d&__LlWxgn35ZaZ6(=XiaxCZ)I!X zFDk%mw@(>)D&h6@E3k@Jl;!KJOua9$z~3j9m!oOs7b~gKoG!ca7d}bS(x=E9Jik4j z-(0_pyE*yRoYlNOFPYv!t>6Sj&hRTxd_hZ$6pc#g@D;P_VAN~LpN>u*W>QNh>!X^V zvl{h~!{pRd0aZX1*j54F(qV(WfZD18s(>o6QGoXc3ukl@tAMg~pph#8u#d19`h1sQ zj*aLdRsk^rGl2>WR1>clCeRVLG0#P;0tPx6`7+)Uzii?S#mLtYw~|iA1=Lm*Pz9O_ z?1aZ5pZ{lH-~XE=eNqKffq$id=_k`^yj$-8UQG5&+ ZL)>x)=pt4D5rOF+0g*u)Rp3_@cn9LUa1Q_g literal 0 HcmV?d00001 diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/.DS_Store b/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1dd78d0df3e9a0946833c80f93e95166e86653cf GIT binary patch literal 6148 zcmeHK%}T>S5T30?QUvMIMYnvyc04E&A(z8@@< z(Fyhu!_|Qyv;e><%t0{cUV>w+pcCvPVg+JiC@_W^X)#O;huw;w6YL|#a5B<-7}?oK zhhoC+c)tzqWL!iYl>ud7mw}`BIOqC*^?m=p8>COlfHE*D2Fx_g(j`)o+B!&%YpsRe qLRr|akN6paNhrne { + if (a === 0 && b === 0) return 0; + const tmphp = rad2deg(Math.atan2(b, a)); + if (tmphp >= 0) return tmphp; + return tmphp + 360; +}; + +// ref: Color Harmony for Image Indexing +// ref: A Study of Colour Harmony for Two-colour Combinations +// ref: https://last.hit.bme.hu/download/firtha/video/Colorimetry/Fairchild_M._Color_appearance_models__2005.pdf p79-81 +export const colorHarmony = (color1: Color, color2: Color): number => { + const [L1, a1, b1] = colorToArray(color1, 'lab'); + const [L2, a2, b2] = colorToArray(color2, 'lab'); + + const Cab1 = Math.sqrt(a1 ** 2 + b1 ** 2); + const Cab2 = Math.sqrt(a1 ** 2 + b1 ** 2); + + const Hab1 = Hab(b1, a1); + const Hab2 = Hab(b2, a2); + + const dCab = Cab1 - Cab2; + const dHab2 = (a1 - a2) ** 2 + (b1 - b2) ** 2 - dCab ** 2; + + const dC = Math.sqrt(dHab2 + (dCab / 1.46) ** 2); + const HC = 0.04 + 0.53 * Math.tanh(0.8 - 0.045 * dC); + + const Lsum = L1 + L2; + const HLsum = 0.28 + 0.54 * Math.tanh(-3.88 + 0.029 * Lsum); + const HdL = 0.14 + 0.15 * Math.tanh(-2 + 0.2 * Math.abs(L1 - L2)); + const HL = HLsum + HdL; + + const EC1 = 0.5 + 0.5 * Math.tanh(-2 + 0.5 * Cab1); + const EC2 = 0.5 + 0.5 * Math.tanh(-2 + 0.5 * Cab2); + const HS1 = -0.08 - 0.14 * Math.sin(deg2rad(Hab1 + 50)) - 0.07 * Math.sin(deg2rad(2 * Hab1 + 90)); + const HS2 = -0.08 - 0.14 * Math.sin(deg2rad(Hab2 + 50)) - 0.07 * Math.sin(deg2rad(2 * Hab2 + 90)); + const EY1 = ((0.22 * L1 - 12.8) / 10) * Math.exp((90 - Hab1) / 10 - Math.exp((90 - Hab1) / 10)); + const EY2 = ((0.22 * L2 - 12.8) / 10) * Math.exp((90 - Hab2) / 10 - Math.exp((90 - Hab2) / 10)); + const HSY1 = EC1 * (HS1 + EY1); + const HSY2 = EC2 * (HS2 + EY2); + const HH = HSY1 + HSY2; + + return HC + HL + HH; +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/index.ts b/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/index.ts new file mode 100644 index 00000000..1274f15d --- /dev/null +++ b/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/index.ts @@ -0,0 +1,20 @@ +import { ColorAesthetic } from '@src/types'; +import { WHITE } from '../../constant'; +import { colorBlend } from '../../utils'; +import { pairPreference } from './pairPreference'; +import { colorHarmony } from './colorHarmony'; + +export const colorAesthetic: ColorAesthetic = (color1, color2, configuration = { measure: 'pairPreference' }) => { + const { measure = 'pairPreference', backgroundColor = WHITE } = configuration; + // If the color is semi-transparent, the color will be overlapped on a white background by default for comparison + const overlappedColor1 = colorBlend(color1, backgroundColor); + const overlappedColor2 = colorBlend(color2, backgroundColor); + switch (measure) { + case 'pairPreference': + return pairPreference(overlappedColor1, overlappedColor2); + case 'harmony': + return colorHarmony(overlappedColor1, overlappedColor2); + default: + return pairPreference(overlappedColor1, overlappedColor2); + } +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/pairPreference/.DS_Store b/vendors/smart-color/0.2.1/src/evaluators/colorAesthetic/pairPreference/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 { + return (d - low) / (high - low); +}; + +const getLabIndex = (L: number, a: number, b: number): number => { + // L = [0,100]; a = [-85, 100]; b = [-110, 95] + const iL = Math.round(L / 5); + const ia = Math.round((a + 85) / 5); + const ib = Math.round((b + 110) / 5); + return iL * 1596 + ia * 42 + ib; +}; +const getCoolness = (L: number, a: number, b: number): number => { + const index = getLabIndex(L, a, b); + return LAB_TO_COOLNESS[index] || 0; +}; + +// Calculate the scalar needed to convert an XYZ color to Lab +const XYZtoLab = (t: number): number => { + if (t > (6.0 / 29.0) ** 3) { + return t ** (1.0 / 3.0); + } + return (1.0 / 3.0) * (29.0 / 6.0) * (29.0 / 6.0) * t + 4.0 / 29.0; +}; +// Calculate the scalar needed to convert an Lab color to XYZ. +const LabToXYZ = (t: number) => { + return t > 6.0 / 29.0 ? t * t * t : 3.0 * (6.0 / 29) * (6.0 / 29) * (t - 4.0 / 29.0); +}; +// Calculate the LCH cyllindrical color representation of an Lab color +const LabToLCH = (L: number, a: number, b: number): number[] => { + const C = Math.sqrt(a * a + b * b); + let H = (Math.atan2(b, a) * 180.0) / Math.PI; + if (H < 0.0) H += 360.0; + if (H > 360.0) H = 360.0 - H; + return [L, C, H]; +}; +// Convert CIE Lab coordinates characterized with Illuminant D65 to CIE Lab +// characterized with Illuminant C. This conversion is required since our model +// relies on a D65 characterization, but Schloss and Palmer's pair preference +// function was defined in Illuminant C characterized CIE Lab space. +const illuminantD65LabToIlluminantCLab = (oldL: number, oldA: number, oldB: number): number[] => { + const ILLUMINANT_C_X = 98.074; + const ILLUMINANT_C_Y = 100.0; + const ILLUMINANT_C_Z = 118.232; + + const ILLUMINANT_D65_X = 95.047; + const ILLUMINANT_D65_Y = 100.0; + const ILLUMINANT_D65_Z = 108.883; + + // Derive X,Y,Z from Lab by inversing the transformation + const x = (1.0 / 116.0) * (oldL + 16) + (1.0 / 500.0) * oldA; + const y = (1.0 / 116.0) * (oldL + 16); + const z = (1 / 116) * (oldL + 16) - (1 / 200) * oldB; + + const X = ILLUMINANT_D65_X * LabToXYZ(x); + const Y = ILLUMINANT_D65_Y * LabToXYZ(y); + const Z = ILLUMINANT_D65_Z * LabToXYZ(z); + + const deconstructY = XYZtoLab(Y / ILLUMINANT_C_Y); + const L = 116 * deconstructY - 16; + const a = 500 * (XYZtoLab(X / ILLUMINANT_C_X) - deconstructY); + const b = 200 * (deconstructY - XYZtoLab(Z / ILLUMINANT_C_Z)); + + return [L, a, b]; +}; + +export const pairPreference = (color1: Color, color2: Color): number => { + const [L1, a1, b1] = colorToArray(color1, 'lab'); + const [L2, a2, b2] = colorToArray(color2, 'lab'); + const coolness1 = getCoolness(L1, a1, b1); + const coolness2 = getCoolness(L2, a2, b2); + + // Convert from D65 to Illuminant C Lab + const Lab1 = illuminantD65LabToIlluminantCLab(L1, a1, b1); + const Lab2 = illuminantD65LabToIlluminantCLab(L2, a2, b2); + // Convert Lab Illuminant C to LCH + const lCH1 = LabToLCH(Lab1[0], Lab1[1], Lab1[2]); + const lCH2 = LabToLCH(Lab2[0], Lab2[1], Lab2[2]); + + const diffL = Math.abs(lCH1[0] - lCH2[0]); + const diffH = Math.abs(lCH1[2] - lCH2[2]); + const sumC = coolness1 + coolness2; + + const pp = wL * normalize(diffL, lMax, lMin) + wH * normalize(diffH, hMax, hMin) + wC * normalize(sumC, cMax, cMin); + return pp; +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorDifference/CIEDE2000.ts b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/CIEDE2000.ts new file mode 100644 index 00000000..4b34fa76 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/CIEDE2000.ts @@ -0,0 +1,74 @@ +import { Color } from '@antv/color-schema'; +import { colorToArray, rad2deg, deg2rad } from '../../utils'; + +const hp = (x: number, y: number) => { + const tmphp = rad2deg(Math.atan2(x, y)); + if (tmphp >= 0) return tmphp; + return tmphp + 360; +}; + +// ref: https://en.wikipedia.org/wiki/Color_difference#CIEDE2000 +// output range: [0, 100] +export const CIEDE2000 = (color1: Color, color2: Color): number => { + // weight, usually unity + const kL = 1; + const kC = 1; + const kH = 1; + // Get L,a,b values for color + const [L1, a1, b1] = colorToArray(color1, 'lab'); + const [L2, a2, b2] = colorToArray(color2, 'lab'); + + const C1 = Math.sqrt(a1 ** 2 + b1 ** 2); + const C2 = Math.sqrt(a2 ** 2 + b2 ** 2); + const avgC = (C1 + C2) / 2; + + const p = 0.5 * (1 - Math.sqrt(avgC ** 7 / (avgC ** 7 + 25 ** 7))); + const a1p = (1.0 + p) * a1; + const a2p = (1.0 + p) * a2; + + const C1p = Math.sqrt(a1p ** 2 + b1 ** 2); + const C2p = Math.sqrt(a2p ** 2 + b2 ** 2); + + const h1p = hp(b1, a1p); + const h2p = hp(b2, a2p); + + const dLp = L2 - L1; + const dCp = C2p - C1p; + + let dhp: number; + if (Math.abs(h2p - h1p) <= 180) dhp = h2p - h1p; + else if (h2p - h1p < -180) dhp = h2p - h1p + 360; + else dhp = h2p - h1p - 360; // h2p - h1p > 180 + + const dHp = 2 * Math.sqrt(C1p * C2p) * Math.sin(deg2rad(dhp) / 2.0); + let avgHp: number; + if (Math.abs(h1p - h2p) <= 180) avgHp = (h1p + h2p) / 2.0; + else if (Math.abs(h1p - h2p) > 180 && h1p + h2p < 360) avgHp = (h1p + h2p + 360) / 2.0; + else avgHp = (h1p + h2p - 360) / 2.0; // Math.abs(h1p - h2p) > 180 && h1p + h2p >= 360 + + const avgL = (L1 + L2) / 2.0; + const avgCp = (C1p + C2p) / 2.0; + const T = + 1 - + 0.17 * Math.cos(deg2rad(avgHp - 30)) + + 0.24 * Math.cos(deg2rad(2 * avgHp)) + + 0.32 * Math.cos(deg2rad(3 * avgHp + 6)) - + 0.2 * Math.cos(deg2rad(4 * avgHp - 63)); + + const SL = 1 + (0.015 * (avgL - 50) ** 2) / Math.sqrt(20 + (avgL - 50) ** 2); + const SC = 1 + 0.045 * avgCp; + const SH = 1 + 0.015 * avgCp * T; + + const RT = + -2 * + Math.sqrt(avgCp ** 7 / (avgCp ** 7 + 25.0 ** 7)) * + Math.sin(deg2rad(60 * Math.exp(-(((avgHp - 275) / 25) ** 2)))); + + const dE = Math.sqrt( + (dLp / (SL * kL)) ** 2 + + (dCp / (SC * kC)) ** 2 + + (dHp / (SH * kH)) ** 2 + + RT * (dCp / (SC * kC)) * (dHp / (SH * kH)) + ); + return dE; +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorDifference/contrastRatio.ts b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/contrastRatio.ts new file mode 100644 index 00000000..15d76ae4 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/contrastRatio.ts @@ -0,0 +1,25 @@ +import { Color } from '@antv/color-schema'; +import { colorToArray } from '../../utils'; + +const compute = (num: number): number => { + const n = num / 255; + if (n <= 0.03928) { + return n / 12.92; + } + return ((n + 0.055) / 1.055) ** 2.4; +}; +const calcRelativeLuminance = (color: Color): number => { + const [r, g, b] = colorToArray(color); + return 0.2126 * compute(r) + 0.7152 * compute(g) + 0.0722 * compute(b); +}; + +// ref: https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio +// Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1). +export const contrastRatio = (color1: Color, color2: Color): number => { + const L1 = calcRelativeLuminance(color1); + const L2 = calcRelativeLuminance(color2); + if (L2 > L1) { + return (L2 + 0.05) / (L1 + 0.05); + } + return (L1 + 0.05) / (L2 + 0.05); +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorDifference/euclideanDistance.ts b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/euclideanDistance.ts new file mode 100644 index 00000000..ce77c2cc --- /dev/null +++ b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/euclideanDistance.ts @@ -0,0 +1,9 @@ +import chroma from 'chroma-js'; +import { Color, ColorModel } from '@antv/color-schema'; +import { colorToChromaColor } from '../../utils'; + +// Computes the Euclidean distance between two colors in a given color model (default is Lab). +// output range: [0, 255] +export const euclideanDistance = (color1: Color, color2: Color, colorModel: ColorModel = 'lab'): number => { + return chroma.distance(colorToChromaColor(color1), colorToChromaColor(color2), colorModel); +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/colorDifference/index.ts b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/index.ts new file mode 100644 index 00000000..a8acd02e --- /dev/null +++ b/vendors/smart-color/0.2.1/src/evaluators/colorDifference/index.ts @@ -0,0 +1,24 @@ +import { ColorDifference } from '@src/types'; +import { WHITE } from '../../constant'; +import { colorBlend } from '../../utils'; +import { euclideanDistance } from './euclideanDistance'; +import { CIEDE2000 } from './CIEDE2000'; +import { contrastRatio } from './contrastRatio'; + +export const colorDifference: ColorDifference = (color1, color2, configuration = { measure: 'euclidean' }) => { + const { measure = 'euclidean', backgroundColor = WHITE } = configuration; + // If the color is semi-transparent, the color will be overlapped on a white background by default for comparison + const overlappedColor1 = colorBlend(color1, backgroundColor); + const overlappedColor2 = colorBlend(color2, backgroundColor); + switch (measure) { + case 'CIEDE2000': + return CIEDE2000(overlappedColor1, overlappedColor2); + case 'euclidean': + // @ts-ignore + return euclideanDistance(overlappedColor1, overlappedColor2, configuration.colorModel); + case 'contrastRatio': + return contrastRatio(overlappedColor1, overlappedColor2); + default: + return euclideanDistance(overlappedColor1, overlappedColor2); + } +}; diff --git a/vendors/smart-color/0.2.1/src/evaluators/index.ts b/vendors/smart-color/0.2.1/src/evaluators/index.ts new file mode 100644 index 00000000..c8441e9b --- /dev/null +++ b/vendors/smart-color/0.2.1/src/evaluators/index.ts @@ -0,0 +1,2 @@ +export { colorDifference } from './colorDifference'; +export { colorAesthetic } from './colorAesthetic'; diff --git a/vendors/smart-color/0.2.1/src/extractors/getPaletteFromImage.ts b/vendors/smart-color/0.2.1/src/extractors/getPaletteFromImage.ts new file mode 100644 index 00000000..483c0c15 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/extractors/getPaletteFromImage.ts @@ -0,0 +1,73 @@ +import { Palette } from '@antv/color-schema'; +// @ts-ignore +import quantize from 'quantize'; +import { loadImage, arrayToColor } from '../utils'; + +// sample pixels in image +const imageToPixels = (image: HTMLImageElement, quality: number): [number, number, number][] => { + const { width, height } = image; + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + if (!context) return []; + canvas.width = width; + canvas.height = height; + context.drawImage(image, 0, 0, width, height); + const imageData = context.getImageData(0, 0, width, height).data; + + const pixels: [number, number, number][] = []; + const count = width * height; + for (let i = 0; i < count; i += quality) { + const offset = i * 4; + const r = imageData[offset + 0]; + const g = imageData[offset + 1]; + const b = imageData[offset + 2]; + const a = imageData[offset + 3]; + + // If pixel is mostly opaque and not white + if (typeof a === 'undefined' || a >= 125) { + if (!(r > 250 && g > 250 && b > 250)) { + pixels.push([r, g, b]); + } + } + } + return pixels; +}; + +// Get a list of colors from img url +export async function getPaletteFromImage( + imgUrl: string, + count: number = 6, + quality: number = 10 +): Promise { + // int + let validCount = Math.round(count); + validCount = Math.max(1, validCount); + validCount = Math.min(50, validCount); + let validQuality = Math.round(quality); + validQuality = Math.max(1, validQuality); + + return new Promise((resolve) => { + loadImage(imgUrl) + .then((img) => { + validQuality = Math.min(Math.floor((img.width * img.height) / validCount), validQuality); + const pixels = imageToPixels(img, validQuality); + + // Use the median cut algorithm provided by quantize to cluster similar colors + // the colorCount in quantize must be larger than 1 + // so if the validCount is equal to 1 + // get a palette of two colors and select the base color from the largest cluster + const colorMap = quantize(pixels, validCount === 1 ? 2 : validCount); + const arrayRGB = colorMap.palette().slice(0, validCount); + + resolve({ + name: 'image', + semantic: null, + type: 'categorical', + colors: arrayRGB.map((rgb: [number, number, number]) => arrayToColor(rgb, 'rgb')), + }); + }) + .finally(() => { + resolve(undefined); + }); + }); +} diff --git a/vendors/smart-color/0.2.1/src/extractors/getPaletteFromString.ts b/vendors/smart-color/0.2.1/src/extractors/getPaletteFromString.ts new file mode 100644 index 00000000..537545f7 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/extractors/getPaletteFromString.ts @@ -0,0 +1,18 @@ +import { Palette } from '@antv/color-schema'; +import { hexToColor } from '../utils'; + +// Get a list of colors from string +export function getPaletteFromString(string: string): Palette { + return { + name: 'code', + semantic: null, + type: 'categorical', + colors: string + .replace(/[^#,0-9a-fA-F]/g, '') + .split(',') + .filter((color) => color.length > 0) + .map((color) => { + return hexToColor(color); + }), + }; +} diff --git a/vendors/smart-color/0.2.1/src/extractors/index.ts b/vendors/smart-color/0.2.1/src/extractors/index.ts new file mode 100644 index 00000000..ca8afba3 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/extractors/index.ts @@ -0,0 +1,2 @@ +export { getPaletteFromImage } from './getPaletteFromImage'; +export { getPaletteFromString } from './getPaletteFromString'; diff --git a/vendors/smart-color/0.2.1/src/generators/achromaticGeneration.ts b/vendors/smart-color/0.2.1/src/generators/achromaticGeneration.ts new file mode 100644 index 00000000..432e1687 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/achromaticGeneration.ts @@ -0,0 +1,26 @@ +import { Color } from '@antv/color-schema'; +import { monochromaticGeneration } from './monochromaticGeneration'; +import { Generation } from './types'; + +const BLACK: Color = { + model: 'rgb', + value: { r: 0, g: 0, b: 0 }, +}; +const WHITE: Color = { + model: 'rgb', + value: { r: 255, g: 255, b: 255 }, +}; + +// generate sequential palette by achromatic scheme +export const achromaticGeneration: Generation = (configuration) => { + const { tendency } = configuration; + const newConfiguration = { + ...configuration, + color: tendency === 'tint' ? BLACK : WHITE, + }; + const palette = monochromaticGeneration(newConfiguration); + return { + ...palette, + name: 'achromatic', + }; +}; diff --git a/vendors/smart-color/0.2.1/src/generators/analogousGeneration.ts b/vendors/smart-color/0.2.1/src/generators/analogousGeneration.ts new file mode 100644 index 00000000..45d19da8 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/analogousGeneration.ts @@ -0,0 +1,34 @@ +import { DiscreteScalePalette } from '@antv/color-schema'; +import { colorToArray, arrayToColor, hueOffset } from '../utils'; +import { Generation } from './types'; + +// generate sequential palette by analogous scheme +export const analogousGeneration: Generation = (configuration) => { + const { count, color, tendency } = configuration; + + const isTint = tendency === 'tint'; + const [hue, saturation, value] = colorToArray(color, 'hsv'); + const index = Math.floor(count / 2); + // Ref: Ant Design 3.x palette algorithm https://zhuanlan.zhihu.com/p/32422584 + let dHue = 60 / (count - 1); + if (hue >= 60 && hue <= 240) { + // cool undertone + dHue = -dHue; + } + const dSaturation = (saturation - 0.1) / 3 / (count - index - 1); + const dValue = (value - 0.4) / 3 / index; + const newColors = new Array(count).fill(0).map((d, i) => { + const h = hueOffset(hue, dHue * (i - index)); + const s = + i <= index ? Math.min(saturation + dSaturation * (index - i), 1) : saturation + 3 * dSaturation * (index - i); + const v = i <= index ? value - 3 * dValue * (index - i) : Math.min(value - dValue * (index - i), 1); + return arrayToColor([h, s, v], 'hsv'); + }); + const palette: DiscreteScalePalette = { + name: 'analogous', + semantic: null, + type: 'discrete-scale', + colors: isTint ? newColors : newColors.reverse(), + }; + return palette; +}; diff --git a/vendors/smart-color/0.2.1/src/generators/categoricalGeneration.ts b/vendors/smart-color/0.2.1/src/generators/categoricalGeneration.ts new file mode 100644 index 00000000..9f0beb9b --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/categoricalGeneration.ts @@ -0,0 +1,33 @@ +import { Color } from '@antv/color-schema'; +import { colorToArray, arrayToColor, hueOffset, random } from '../utils'; + +const saturationRange: [number, number] = [0.3, 0.9]; +const valueRange: [number, number] = [0.5, 1]; +export const categoricalGenerationInHsv = ( + color: Color, + dHue: number, + count: number, + colors: (Color | undefined)[] = [] +) => { + const [h] = colorToArray(color, 'hsv'); + const locked = new Array(count).fill(false); + let placeBasicColor = colors.findIndex((c) => c && c.model === color.model && c.value === color.value) === -1; + const newColors = new Array(count).fill(0).map((d, i): Color => { + const lockedColor = colors[i]; + if (lockedColor) { + locked[i] = true; + return lockedColor; + } + // find the first unlocked position to place the basic color + if (placeBasicColor) { + placeBasicColor = false; + locked[i] = true; + return color; + } + return arrayToColor([hueOffset(h, dHue * i), random(...saturationRange), random(...valueRange)], 'hsv'); + }); + return { + newColors, + locked, + }; +}; diff --git a/vendors/smart-color/0.2.1/src/generators/complementaryGeneration.ts b/vendors/smart-color/0.2.1/src/generators/complementaryGeneration.ts new file mode 100644 index 00000000..09871559 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/complementaryGeneration.ts @@ -0,0 +1,33 @@ +import { DiscreteScalePalette } from '@antv/color-schema'; +import { colorToArray, arrayToColor, hueOffset, random, randomInt } from '../utils'; +import { Generation } from './types'; +import { discreteScaleGenerationInLab } from './discreteScaleGeneration'; + +// generate diverging palette by complementary scheme +export const complementaryGeneration: Generation = (configuration) => { + const { count, color } = configuration; + + const [hue, saturation, value] = colorToArray(color, 'hsv'); + const complementaryColor = arrayToColor([hueOffset(hue, 180), saturation, value], 'hsv'); + + const maxL = randomInt(80, 90); + const minL = randomInt(15, 25); + const halfCount = Math.floor(count / 2); + + const left = discreteScaleGenerationInLab(color, halfCount, [minL, maxL]); + const right = discreteScaleGenerationInLab(complementaryColor, halfCount, [minL, maxL]).reverse(); + let newColors; + if (count % 2 === 1) { + const midColor = arrayToColor([(hueOffset(hue, 180) + hue) / 2, random(0.05, 0.1), random(0.9, 0.95)], 'hsv'); + newColors = [...left, midColor, ...right]; + } else { + newColors = [...left, ...right]; + } + const palette: DiscreteScalePalette = { + name: 'complementary', + semantic: null, + type: 'discrete-scale', + colors: newColors, + }; + return palette; +}; diff --git a/vendors/smart-color/0.2.1/src/generators/discreteScaleGeneration.ts b/vendors/smart-color/0.2.1/src/generators/discreteScaleGeneration.ts new file mode 100644 index 00000000..f3550346 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/discreteScaleGeneration.ts @@ -0,0 +1,18 @@ +import { Color } from '@antv/color-schema'; +import { colorToArray, arrayToColor, randomInt } from '../utils'; + +// Fix a, b, vary L +export const discreteScaleGenerationInLab = ( + color: Color, + count: number, + lRange: [number, number] = [randomInt(5, 10), randomInt(90, 95)] +): Color[] => { + const [L, a, b] = colorToArray(color, 'lab'); + const minL = L <= 15 ? L : lRange[0]; + const maxL = L >= 85 ? L : lRange[1]; + let dLightness = (maxL - minL) / (count - 1); + // basic color index + const index = Math.ceil((L - minL) / dLightness); + dLightness = index === 0 ? dLightness : (L - minL) / index; + return new Array(count).fill(0).map((d, i) => arrayToColor([dLightness * i + minL, a, b], 'lab')); +}; diff --git a/vendors/smart-color/0.2.1/src/generators/index.ts b/vendors/smart-color/0.2.1/src/generators/index.ts new file mode 100644 index 00000000..4dd514dc --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/index.ts @@ -0,0 +1,41 @@ +import { ColorSchemeType } from '@antv/color-schema'; +import { PaletteGeneration } from '../types'; +import { monochromaticGeneration } from './monochromaticGeneration'; +import { analogousGeneration } from './analogousGeneration'; +import { achromaticGeneration } from './achromaticGeneration'; +import { complementaryGeneration } from './complementaryGeneration'; +import { splitComplementaryGeneration } from './splitComplementaryGeneration'; +import { triadicGeneration } from './triadicGeneration'; +import { tetradicGeneration } from './tetradicGeneration'; +import { polychromaticGeneration } from './polychromaticGeneration'; +import { randomGeneration } from './randomGeneration'; +import { validateConfiguration } from './validateConfiguration'; + +const generator: Record = { + monochromatic: monochromaticGeneration, + analogous: analogousGeneration, + achromatic: achromaticGeneration, + complementary: complementaryGeneration, + 'split-complementary': splitComplementaryGeneration, + triadic: triadicGeneration, + tetradic: tetradicGeneration, + polychromatic: polychromaticGeneration, + customized: randomGeneration, +}; + +/** + * + * @param type + * @param colors locked colors + * @param configuration + * @returns + */ +export const paletteGeneration: PaletteGeneration = (type: ColorSchemeType = 'monochromatic', configuration = {}) => { + // set default value + const newConfiguration = validateConfiguration(type, configuration); + try { + return generator[type](newConfiguration); + } catch (e) { + return randomGeneration(newConfiguration); + } +}; diff --git a/vendors/smart-color/0.2.1/src/generators/monochromaticGeneration.ts b/vendors/smart-color/0.2.1/src/generators/monochromaticGeneration.ts new file mode 100644 index 00000000..9075947c --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/monochromaticGeneration.ts @@ -0,0 +1,18 @@ +import { DiscreteScalePalette } from '@antv/color-schema'; +import { Generation } from './types'; +import { discreteScaleGenerationInLab } from './discreteScaleGeneration'; + +// generate sequential palette by monochromatic scheme +export const monochromaticGeneration: Generation = (configuration) => { + const { count, color, tendency } = configuration; + + const isTint = tendency === 'tint'; + const newColors = discreteScaleGenerationInLab(color, count); + const palette: DiscreteScalePalette = { + name: 'monochromatic', + semantic: null, + type: 'discrete-scale', + colors: isTint ? newColors : newColors.reverse(), + }; + return palette; +}; diff --git a/vendors/smart-color/0.2.1/src/generators/polychromaticGeneration.ts b/vendors/smart-color/0.2.1/src/generators/polychromaticGeneration.ts new file mode 100644 index 00000000..9ed11aa0 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/polychromaticGeneration.ts @@ -0,0 +1,19 @@ +import { CategoricalPalette } from '@antv/color-schema'; +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +import { Generation } from './types'; + +// generate categorical palette by polychromatic scheme +export const polychromaticGeneration: Generation = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 360 / count; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette: CategoricalPalette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + + return paletteOptimization(palette, { locked }); +}; diff --git a/vendors/smart-color/0.2.1/src/generators/random.ts b/vendors/smart-color/0.2.1/src/generators/random.ts new file mode 100644 index 00000000..e90e497e --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/random.ts @@ -0,0 +1,8 @@ +import { arrayToColor, randomInt } from '../utils'; + +export function randomColor() { + const r = randomInt(255); + const g = randomInt(255); + const b = randomInt(255); + return arrayToColor([r, g, b], 'rgb'); +} diff --git a/vendors/smart-color/0.2.1/src/generators/randomGeneration.ts b/vendors/smart-color/0.2.1/src/generators/randomGeneration.ts new file mode 100644 index 00000000..92e59ea6 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/randomGeneration.ts @@ -0,0 +1,24 @@ +import { CategoricalPalette } from '@antv/color-schema'; +import { paletteOptimization } from '../optimizers'; +import { Generation } from './types'; +import { randomColor } from './random'; + +// generate categorical palette randomly +export const randomGeneration: Generation = (configuration) => { + const { count, colors } = configuration; + const locked: boolean[] = []; + const palette: CategoricalPalette = { + name: 'random', + semantic: null, + type: 'categorical', + colors: new Array(count).fill(0).map((d, i) => { + const lockedColor = colors[i]; + if (lockedColor) { + locked[i] = true; + return lockedColor; + } + return randomColor(); + }), + }; + return paletteOptimization(palette, { locked }); +}; diff --git a/vendors/smart-color/0.2.1/src/generators/splitComplementaryGeneration.ts b/vendors/smart-color/0.2.1/src/generators/splitComplementaryGeneration.ts new file mode 100644 index 00000000..18d35807 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/splitComplementaryGeneration.ts @@ -0,0 +1,18 @@ +import { CategoricalPalette } from '@antv/color-schema'; +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +import { Generation } from './types'; + +// generate categorical palette by split complementary scheme +export const splitComplementaryGeneration: Generation = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 180; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette: CategoricalPalette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return paletteOptimization(palette, { locked }); +}; diff --git a/vendors/smart-color/0.2.1/src/generators/tetradicGeneration.ts b/vendors/smart-color/0.2.1/src/generators/tetradicGeneration.ts new file mode 100644 index 00000000..044beeca --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/tetradicGeneration.ts @@ -0,0 +1,18 @@ +import { CategoricalPalette } from '@antv/color-schema'; +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +import { Generation } from './types'; +// generate categorical palette by tetradic scheme +export const tetradicGeneration: Generation = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 90; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette: CategoricalPalette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + + return paletteOptimization(palette, { locked }); +}; diff --git a/vendors/smart-color/0.2.1/src/generators/triadicGeneration.ts b/vendors/smart-color/0.2.1/src/generators/triadicGeneration.ts new file mode 100644 index 00000000..7e0f2eef --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/triadicGeneration.ts @@ -0,0 +1,18 @@ +import { CategoricalPalette } from '@antv/color-schema'; +import { paletteOptimization } from '../optimizers'; +import { categoricalGenerationInHsv } from './categoricalGeneration'; +import { Generation } from './types'; + +// generate categorical palette by triadic scheme +export const triadicGeneration: Generation = (configuration) => { + const { count, color, colors } = configuration; + const dHue = 120; + const { newColors, locked } = categoricalGenerationInHsv(color, dHue, count, colors); + const palette: CategoricalPalette = { + name: 'tetradic', + semantic: null, + type: 'categorical', + colors: newColors, + }; + return paletteOptimization(palette, { locked }); +}; diff --git a/vendors/smart-color/0.2.1/src/generators/types.ts b/vendors/smart-color/0.2.1/src/generators/types.ts new file mode 100644 index 00000000..d7e8d528 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/types.ts @@ -0,0 +1,6 @@ +import { Palette } from '@antv/color-schema'; +import { GeneratorConfiguration } from '../types'; + +export type Generation = ( + configuration: { [K in keyof GeneratorConfiguration]-?: GeneratorConfiguration[K] } +) => Palette; diff --git a/vendors/smart-color/0.2.1/src/generators/validateConfiguration.ts b/vendors/smart-color/0.2.1/src/generators/validateConfiguration.ts new file mode 100644 index 00000000..952b6946 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/generators/validateConfiguration.ts @@ -0,0 +1,26 @@ +import { ColorSchemeType } from '@antv/color-schema'; +import { GeneratorConfiguration } from '../types'; +import { randomColor } from './random'; + +const DISCRETE_SCALE_TYPES: ColorSchemeType[] = ['monochromatic']; +export const validateConfiguration = (type: ColorSchemeType, configuration: GeneratorConfiguration) => { + const { count = 8, tendency = 'tint' } = configuration; + let { colors = [], color } = configuration; + + // If the colour is not configured + // then select the first of the locked colors or generate a random color + if (!color) { + color = colors.find((c) => !!c && !!c.model && !!c.value) || randomColor(); + } + + // Discrete scale palette cannot be generated when colors are locked. + if (DISCRETE_SCALE_TYPES.includes(type)) { + colors = []; + } + return { + color, + colors, + count, + tendency, + }; +}; diff --git a/vendors/smart-color/0.2.1/src/index.ts b/vendors/smart-color/0.2.1/src/index.ts new file mode 100644 index 00000000..a4a5cdf5 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/index.ts @@ -0,0 +1,23 @@ +export { + colorToArray, + arrayToColor, + colorToGray, + colorToHex, + hexToColor, + nameToColor, + colorBlend, + colorBrighten, + colorDarken, +} from './utils'; +// color simulation +export { colorSimulation, invertGrayscale } from './simulators'; +// palette generation +export { paletteGeneration } from './generators'; +// palette optimization +export { paletteOptimization } from './optimizers'; +// get palette +export { getPaletteFromImage, getPaletteFromString } from './extractors'; +// professional test +export { colorDifference, colorAesthetic } from './evaluators'; +export { ColorBlindnessSimulationType, SimulationType } from './types'; +export { COLOR_BLINDNESS_SIMULATION_TYPES, TENDENCIES } from './constant'; diff --git a/vendors/smart-color/0.2.1/src/optimizers/index.ts b/vendors/smart-color/0.2.1/src/optimizers/index.ts new file mode 100644 index 00000000..e96d3069 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/optimizers/index.ts @@ -0,0 +1,77 @@ +import { Color, isContinuousPalette, isMatrixPalette } from '@antv/color-schema'; +import { WHITE } from '../constant'; +import { invertGrayscale } from '../simulators'; +import { PaletteOptimization, ColorDifferenceMeasure } from '../types'; +import { colorToGray, colorToArray, arrayToColor, cloneDeep } from '../utils'; +import { optimizePaletteByGA } from './optimizePaletteByGA'; + +const COLOR_DIFFERENCE_DEFAULT_VALUE: Record = { + euclidean: 30, + // ref: Categorical Colormap Optimization with Visualization Case Studies + // suggests that [20, 25] might be the borderline zone + CIEDE2000: 20, + // WCAG, 1.4.3 Contrast (Minimum) + contrastRatio: 4.5, +}; + +const COLOR_DIFFERENCE_MAX_VALUE: Record = { + euclidean: 291.48, + CIEDE2000: 100, + contrastRatio: 21, +}; + +export const paletteOptimization: PaletteOptimization = (palette, configuration = {}) => { + const { + locked = [], + simulationType = 'normal', + threshold, + colorModel = 'hsv', + colorDifferenceMeasure = 'euclidean', + backgroundColor = WHITE, + } = configuration; + let newThreshold = threshold; + // set default value + if (!newThreshold) { + newThreshold = COLOR_DIFFERENCE_DEFAULT_VALUE[colorDifferenceMeasure]; + } + // In case of grayscale mode, the maximum difference between two can be estimated directly + // If the set threshold is outside of this range, trim directly to save optimization time + if (simulationType === 'grayscale') { + const maxValue = COLOR_DIFFERENCE_MAX_VALUE[colorDifferenceMeasure]; + newThreshold = Math.min(newThreshold, maxValue / palette.colors.length); + } + + const newPalette = cloneDeep(palette); + if (!isMatrixPalette(newPalette) && !isContinuousPalette(newPalette)) { + if (simulationType === 'grayscale') { + const colors = newPalette.colors.map((color: Color): [number] => [colorToGray(color)]); + const newColors = optimizePaletteByGA( + colors, + locked, + simulationType, + newThreshold, + colorModel, + colorDifferenceMeasure, + backgroundColor + ); + newPalette.colors.forEach((color: Color, index: number) => + Object.assign(color, invertGrayscale(newColors[index][0] / 255, color)) + ); + } else { + const colors = newPalette.colors.map((color: Color) => colorToArray(color, colorModel)); + const newColors = optimizePaletteByGA( + colors, + locked, + simulationType, + newThreshold, + colorModel, + colorDifferenceMeasure, + backgroundColor + ); + newPalette.colors.forEach((color: Color, index: number) => { + Object.assign(color, arrayToColor(newColors[index], colorModel)); + }); + } + } + return newPalette; +}; diff --git a/vendors/smart-color/0.2.1/src/optimizers/optimizePaletteByGA.ts b/vendors/smart-color/0.2.1/src/optimizers/optimizePaletteByGA.ts new file mode 100644 index 00000000..c9add021 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/optimizers/optimizePaletteByGA.ts @@ -0,0 +1,172 @@ +import { Color, ColorModel, ColorModelRange as COLOR_MODEL_RANGE } from '@antv/color-schema'; +import { ColorDifferenceMeasure, SimulationType } from '../types'; +import { arrayToColor, grayToColor, random, randomInt, cloneDeep } from '../utils'; +import { colorDifference } from '../evaluators'; +import { colorSimulation } from '../simulators'; + +type ColorArray = [number] | [number, number, number] | [number, number, number, number]; +type Colors = ColorArray[]; + +// Genetic algorithm configuration +const POPULATION_NUMBER = 50; +const CROSSOVER_RATE = 0.9; +const MUTATION_RATE = 0.1; +const MAX_GENERATION = 100; +const ADAPTIVE_RANGE: [number, number] = [0.8, 1.2]; + +type SelectionFunctionType = 'rouletteWheel' | 'tournament'; +type SelectionFunction = (fitnesses: number[]) => number; +const rouletteWheelSelection: SelectionFunction = (fitnesses) => { + const sumFitness = fitnesses.reduce((a, b) => a + b); + let index = 0; + const seed = random(sumFitness); + let count = 0; + for (let i = 0; i < fitnesses.length; i += 1) { + count += fitnesses[i]; + if (seed < count) { + index = +i; + } + } + return index; +}; +const tournamentSelection: SelectionFunction = (fitnesses) => { + const TOURNAMENT_SIZE = 3; + let index = -1; + let maxFitness = 0; + for (let i = 0; i < TOURNAMENT_SIZE; i += 1) { + const randomIndex = randomInt(fitnesses.length - 1); + if (fitnesses[randomIndex] > maxFitness) { + index = i; + maxFitness = fitnesses[randomIndex]; + } + } + return index; +}; +const selectionFunction: Record number> = { + rouletteWheel: rouletteWheelSelection, + tournament: tournamentSelection, +}; +const selection = (fitnesses: number[], type: SelectionFunctionType = 'tournament') => { + return selectionFunction[type](fitnesses); +}; + +const crossover = (father: Colors, mother: Colors) => { + const child1 = cloneDeep(father); + const child2 = cloneDeep(mother); + for (let i = 1; i < father.length; i += 2) { + child1[i] = mother[i]; + child2[i] = father[i]; + } + return [child1, child2]; +}; + +const mutate = (colors: Colors, unlockedIndexs: number[], simulationType: SimulationType, colorModel: ColorModel) => { + const newColors = cloneDeep(colors); + // pick one color and change color adaptively + const mutateIndex = unlockedIndexs[randomInt(unlockedIndexs.length - 1)]; + const dimensionIndex = randomInt(colors[0].length - 1); + let newValue = newColors[mutateIndex][dimensionIndex] * random(...ADAPTIVE_RANGE); + // clip + let range = [15, 240]; // grayscale + if (simulationType !== 'grayscale') { + range = COLOR_MODEL_RANGE[colorModel][colorModel.split('')[dimensionIndex]]; + } + + const [min, max] = range; + if (newValue < min) { + newValue = min; + } else if (newValue > max) { + newValue = max; + } + + newColors[mutateIndex][dimensionIndex] = newValue; + return newColors; +}; + +// fitness function +export const calFitness = ( + colors: Colors, + locked: boolean[], + simulationType: SimulationType, + colorModel: ColorModel, + colorDifferenceMeasure: ColorDifferenceMeasure, + backgroundColor: Color +): number => { + let newColors: Color[]; + if (simulationType === 'grayscale') { + newColors = colors.map(([gray]) => grayToColor(gray)); + } else { + newColors = colors.map((color) => colorSimulation(arrayToColor(color, colorModel), simulationType)); + } + let minDifference = Infinity; + for (let i = 0; i < newColors.length; i += 1) { + for (let j = i + 1; j < newColors.length; j += 1) { + if (!(locked[i] && locked[j])) { + minDifference = Math.min( + minDifference, + colorDifference(newColors[i], newColors[j], { measure: colorDifferenceMeasure, backgroundColor }) + ); + } + } + } + return minDifference; +}; + +export const optimizePaletteByGA = ( + colors: Colors, + locked: boolean[], + simulationType: SimulationType, + threshold: number, + colorModel: ColorModel, + colorDifference: ColorDifferenceMeasure, + backgroundColor: Color +) => { + if ( + Math.round(calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor)) > threshold + ) { + return colors; + } + const unlockedIndexs = new Array(colors.length) + .fill(0) + .map((d, index) => index) + .filter((d, index) => !locked[index]); + + // Creating a new generation + let population = new Array(POPULATION_NUMBER) + .fill(0) + .map(() => mutate(colors, unlockedIndexs, simulationType, colorModel)); + // Evaluating individuals + let fitnesses = population.map((colors) => + calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor) + ); + let bestFitness = Math.max(...fitnesses); + let elites = population[fitnesses.findIndex((d) => d === bestFitness)]; + let cnt = 1; + while (cnt < MAX_GENERATION && Math.round(bestFitness) < threshold) { + // Elitist Strategy + const newPopulation = [elites]; + + for (let i = 1; i < POPULATION_NUMBER; i += 2) { + // Selection + const father = population[selection(fitnesses)]; + const mother = population[selection(fitnesses)]; + // Reproduction + let children = random() < CROSSOVER_RATE ? crossover(father, mother) : [father, mother]; + // Mutation + children = children.map((child) => + random() < MUTATION_RATE ? mutate(child, unlockedIndexs, simulationType, colorModel) : child + ); + newPopulation.push(...children); + } + + population = newPopulation; + fitnesses = population.map((colors) => + calFitness(colors, locked, simulationType, colorModel, colorDifference, backgroundColor) + ); + const newBestFitness = Math.max(...fitnesses); + bestFitness = newBestFitness; + elites = population[fitnesses.findIndex((d) => d === newBestFitness)]; + cnt += 1; + } + return elites; +}; diff --git a/vendors/smart-color/0.2.1/src/simulators/colorBlindness.ts b/vendors/smart-color/0.2.1/src/simulators/colorBlindness.ts new file mode 100644 index 00000000..0666d048 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/simulators/colorBlindness.ts @@ -0,0 +1,19 @@ +// @ts-ignore +import blinder from 'color-blind'; +import { COLOR_BLINDNESS_SIMULATION_TYPES } from '../constant'; +import { ColorBlindnessSimulationType, ColorSimulation } from '../types'; +import { hexToColor, colorToHex } from '../utils'; + +export function isColorBlindnessSimulation(type: any): type is ColorBlindnessSimulationType { + return type !== 'normal' && COLOR_BLINDNESS_SIMULATION_TYPES.indexOf(type) > -1; +} + +// get color in color blindness simulation +export const colorBlindnessSimulation: ColorSimulation = (color, type = 'normal') => { + if (type === 'normal') { + return { ...color }; + } + const hexColor = colorToHex(color); + const blindColor = blinder[type](hexColor); + return hexToColor(blindColor); +}; diff --git a/vendors/smart-color/0.2.1/src/simulators/grayscale.ts b/vendors/smart-color/0.2.1/src/simulators/grayscale.ts new file mode 100644 index 00000000..1414135a --- /dev/null +++ b/vendors/smart-color/0.2.1/src/simulators/grayscale.ts @@ -0,0 +1,42 @@ +import { Color } from '@antv/color-schema'; +import { arrayToColor, colorToArray, colorToGray, grayToColor } from '../utils'; +import { ColorSimulation } from '../types'; + +// get color in grayscale +export const grayscale: ColorSimulation = (color) => { + const gray = colorToGray(color); + const [, , , alpha = 1] = colorToArray(color, 'rgba'); + return grayToColor(gray, alpha); +}; + +// invert color from the gray scale value +// grayscaleValue: [0, 1] +export function invertGrayscale(grayscaleValue: number, color: Color): Color { + const [, a, b] = colorToArray(color, 'lab'); + const [, , , alpha = 1] = colorToArray(color, 'rgba'); + const target = grayscaleValue * 100; + + let L = Math.round(target); + let newGray = colorToGray(arrayToColor([L, a, b], 'lab')); + let cnt = 25; + + while (Math.round(target) !== Math.round((newGray / 255) * 100) && cnt > 0) { + if (target > (newGray / 255) * 100) { + L += 1; + } else { + L -= 1; + } + cnt -= 1; + newGray = colorToGray(arrayToColor([L, a, b], 'lab')); + } + if (Math.round(target) < Math.round((newGray / 255) * 100)) L -= 1; + + let newColor: Color; + if (alpha === 1) { + newColor = arrayToColor([L, a, b], 'lab'); + } else { + const rgb = colorToArray(arrayToColor([L, a, b], 'lab'), 'rgb'); + newColor = arrayToColor([...rgb, alpha] as [number, number, number, number], 'rgba'); + } + return { ...color, ...newColor }; +} diff --git a/vendors/smart-color/0.2.1/src/simulators/index.ts b/vendors/smart-color/0.2.1/src/simulators/index.ts new file mode 100644 index 00000000..1b175f07 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/simulators/index.ts @@ -0,0 +1,13 @@ +import { ColorSimulation } from '../types'; +import { colorBlindnessSimulation } from './colorBlindness'; +import { grayscale } from './grayscale'; + +export const colorSimulation: ColorSimulation = (color, type = 'normal') => { + if (type === 'grayscale') { + return grayscale(color); + } + return colorBlindnessSimulation(color, type); +}; + +export { isColorBlindnessSimulation } from './colorBlindness'; +export { invertGrayscale } from './grayscale'; diff --git a/vendors/smart-color/0.2.1/src/types.ts b/vendors/smart-color/0.2.1/src/types.ts new file mode 100644 index 00000000..587c2379 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/types.ts @@ -0,0 +1,96 @@ +import { + Color, + Palette, + ColorModel, + ColorSchemeType, + CategoricalPalette, + DiscreteScalePalette, +} from '@antv/color-schema'; +import { + COLOR_BLINDNESS_SIMULATION_TYPES, + TENDENCIES, + COLOR_DIFFERENCE_MEASURES, + COLOR_AESTHETIC_MEASURES, + BLEND_MODES, + SEPARABLE_BLEND_MODES, + NON_SEPARABLE_BLEND_MODES, +} from './constant'; + +// color simulation +export type ColorBlindnessSimulationType = typeof COLOR_BLINDNESS_SIMULATION_TYPES[number]; +export type GrayscaleType = 'grayscale'; +export type SimulationType = ColorBlindnessSimulationType | GrayscaleType; +export type ColorSimulation = ( + color: Color, + // default value: 'normal' + type?: SimulationType +) => Color; + +// professional test +export type ColorDifferenceMeasure = typeof COLOR_DIFFERENCE_MEASURES[number]; +type ColorDifferenceGeneralConfiguration = { + // If the color is semi-transparent, the color will be overlapped on the backgroundColor + // default value: white + backgroundColor?: Color; +}; +export type ColorDifferenceConfiguration = ColorDifferenceGeneralConfiguration & + ( + | { + measure: 'euclidean'; + // default value: 'lab' + colorModel?: ColorModel; + } + | { + measure: 'CIEDE2000' | 'contrastRatio'; + } + ); +export type ColorDifference = (color1: Color, color2: Color, configuration?: ColorDifferenceConfiguration) => number; +export type ColorAestheticMeasure = typeof COLOR_AESTHETIC_MEASURES[number]; +export type ColorAestheticConfiguration = { + measure: ColorAestheticMeasure; + // If the color is semi-transparent, the color will be overlapped on the backgroundColor + // default value: white + backgroundColor?: Color; +}; +export type ColorAesthetic = (color1: Color, color2: Color, configuration?: ColorAestheticConfiguration) => number; + +// palette optimization +export type OptimizerConfiguration = { + // default value: [] + locked?: boolean[]; + // default value: 'normal' + simulationType?: SimulationType; + threshold?: number; + // default value: 'hsv' + colorModel?: ColorModel; + // default value: 'euclidean' + colorDifferenceMeasure?: ColorDifferenceMeasure; + // for semi-transparent colors + backgroundColor?: Color; +}; +export type PaletteOptimization = (palette: Palette, configuration?: OptimizerConfiguration) => Palette; + +// palette generation +type Tendency = typeof TENDENCIES[number]; +export type GeneratorConfiguration = { + count?: number; + // basic color + color?: Color; + // locked colors + colors?: (Color | undefined)[]; + tendency?: Tendency; +}; + +export type PaletteGeneration = ( + // default value: monochromatic + type?: ColorSchemeType, + configuration?: GeneratorConfiguration +) => CategoricalPalette | DiscreteScalePalette; + +// color compution +export type SeparableBlendMode = typeof SEPARABLE_BLEND_MODES[number]; +export type NonSeparableBlendMode = typeof NON_SEPARABLE_BLEND_MODES[number]; +export type BlendMode = typeof BLEND_MODES[number]; +export type ColorBlend = (colorTop: Color, colorBottom: Color, mode?: BlendMode) => Color; +export type ColorDarken = (color: Color, value?: number) => Color; +export type ColorBrighten = (color: Color, value?: number) => Color; diff --git a/vendors/smart-color/0.2.1/src/utils/colorComputation/colorBlend.ts b/vendors/smart-color/0.2.1/src/utils/colorComputation/colorBlend.ts new file mode 100644 index 00000000..07cf6bc1 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/colorComputation/colorBlend.ts @@ -0,0 +1,134 @@ +import { SEPARABLE_BLEND_MODES } from '../../constant'; +import { SeparableBlendMode, NonSeparableBlendMode, ColorBlend } from '../../types'; +import { colorToArray } from '../colorConversion'; + +// ref: [wiki] https://en.wikipedia.org/wiki/Blend_modes +// ref: [photoshop] https://www.deepskycolors.com/archivo/2010/04/21/formulas-for-Photoshop-blending-modes.html +// ref: [photoshop] https://photoblogstop.com/photoshop/photoshop-blend-modes-explained +// ref: [w3c] https://www.w3.org/TR/compositing/#blending css mix-blend-mode: soft-light +type SeparableBlendFunc = (top: number, bottom: number) => number; +const multiply: SeparableBlendFunc = (top, bottom) => (top * bottom) / 255; +const screen: SeparableBlendFunc = (top, bottom) => top + bottom - (top * bottom) / 255; +const hardLight: SeparableBlendFunc = (top, bottom) => + top < 128 ? multiply(2 * top, bottom) : screen(2 * top - 255, bottom); +const separableBlendFunc: Record = { + /** w3c */ + normal: (top) => top, + darken: (top, bottom) => Math.min(top, bottom), + multiply, + colorBurn: (top, bottom) => { + if (top === 0) return 0; + return Math.max(0, 255 * (1 - (255 - bottom) / top)); + }, + lighten: (top, bottom) => Math.max(top, bottom), + screen, + colorDodge: (top, bottom) => { + if (top === 255) return 255; + return Math.min(255, 255 * (bottom / (255 - top))); + }, + overlay: (top, bottom) => hardLight(bottom, top), + softLight: (top, bottom) => { + if (top < 128) { + return bottom - (1 - (2 * top) / 255) * bottom * (1 - bottom / 255); + } + const D = + bottom < 64 ? ((16 * (bottom / 255) - 12) * (bottom / 255) + 4) * (bottom / 255) : Math.sqrt(bottom / 255); + return bottom + 255 * ((2 * top) / 255 - 1) * (D - bottom / 255); + }, + hardLight, + difference: (top, bottom) => Math.abs(top - bottom), + exclusion: (top, bottom) => top + bottom - (2 * top * bottom) / 255, + + /** photoshop */ + linearBurn: (top, bottom) => Math.max(top + bottom - 255, 0), + linearDodge: (top, bottom) => Math.min(255, top + bottom), + linearLight: (top, bottom) => Math.max(bottom + 2 * top - 255, 0), + vividLight: (top, bottom) => + top < 128 ? 255 * (1 - (1 - bottom / 255) / ((2 * top) / 255)) : 255 * (bottom / 2 / (255 - top)), + pinLight: (top, bottom) => (top < 128 ? Math.min(bottom, 2 * top) : Math.max(bottom, 2 * top - 255)), +}; + +type RGBArr = [number, number, number]; +type NonSeparableBlendFunc = (top: RGBArr, bottom: RGBArr) => RGBArr; + +const lum = (rgb: RGBArr) => { + return 0.3 * rgb[0] + 0.58 * rgb[1] + 0.11 * rgb[2]; +}; + +const clipColor = (rgb: RGBArr): RGBArr => { + const l = lum(rgb); + const min = Math.min(...rgb); + const max = Math.max(...rgb); + let color = [...rgb]; + if (min < 0) { + color = color.map((value) => l + ((value - l) * l) / (l - min)); + } + if (max > 255) { + color = color.map((value) => l + ((value - l) * (255 - l)) / (max - l)); + } + return color as RGBArr; +}; + +const setLum = (rgb: RGBArr, l: number): RGBArr => { + const d = l - lum(rgb); + return clipColor(rgb.map((value) => value + d) as RGBArr); +}; + +const sat = (rgb: RGBArr) => { + return Math.max(...rgb) - Math.min(...rgb); +}; + +const setSat = (rgb: RGBArr, s: number): RGBArr => { + const arr = rgb.map((value, index) => ({ value, index })); + arr.sort((a, b) => a.value - b.value); + const minIndex = arr[0].index; + const midIndex = arr[1].index; + const maxIndex = arr[2].index; + + const color = [...rgb]; + if (color[maxIndex] > color[minIndex]) { + color[midIndex] = ((color[midIndex] - color[minIndex]) * s) / (color[maxIndex] - color[minIndex]); + color[maxIndex] = s; + } else { + color[midIndex] = 0; + color[maxIndex] = 0; + } + color[minIndex] = 0; + return color as RGBArr; +}; + +const nonSeparableBlendFunc: Record = { + hue: (top, bottom) => setLum(setSat(top, sat(bottom)), lum(bottom)), + saturation: (top, bottom) => setLum(setSat(bottom, sat(top)), lum(bottom)), + color: (top, bottom) => setLum(top, lum(bottom)), + luminosity: (top, bottom) => setLum(bottom, lum(top)), +}; + +export const colorBlend: ColorBlend = (colorTop, colorBottom, mode = 'normal') => { + const [r1, g1, b1, a1] = colorToArray(colorTop, 'rgba'); + const [r2, g2, b2, a2] = colorToArray(colorBottom, 'rgba'); + const rgb1: RGBArr = [r1, g1, b1]; + const rgb2: RGBArr = [r2, g2, b2]; + let blendRgb; + if (SEPARABLE_BLEND_MODES.includes(mode)) { + const func = separableBlendFunc[mode]; + blendRgb = rgb1.map((num1, index) => Math.floor(func(num1, rgb2[index]))); + } else { + blendRgb = nonSeparableBlendFunc[mode](rgb1, rgb2); + } + + const a = a1 + a2 * (1 - a1); + const r = Math.round((a1 * (1 - a2) * r1 + a1 * a2 * blendRgb[0] + (1 - a1) * a2 * r2) / a); + const g = Math.round((a1 * (1 - a2) * g1 + a1 * a2 * blendRgb[1] + (1 - a1) * a2 * g2) / a); + const b = Math.round((a1 * (1 - a2) * b1 + a1 * a2 * blendRgb[2] + (1 - a1) * a2 * b2) / a); + + if (a === 1) + return { + model: 'rgb', + value: { r, g, b }, + }; + return { + model: 'rgba', + value: { r, g, b, a }, + }; +}; diff --git a/vendors/smart-color/0.2.1/src/utils/colorComputation/colorBrightenDarken.ts b/vendors/smart-color/0.2.1/src/utils/colorComputation/colorBrightenDarken.ts new file mode 100644 index 00000000..c5839338 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/colorComputation/colorBrightenDarken.ts @@ -0,0 +1,77 @@ +import { ColorBrighten, ColorDarken } from '@src/types'; +import { clamp } from '../helper'; +import { colorToArray } from '../colorConversion'; + +// get darken/brighten color +// ref: https://zhuanlan.zhihu.com/p/32422584 +const hueStep = 2; +const saturationStep = 0.16; +const saturationStep2 = 0.05; +const brightnessStep1 = 0.05; +const brightnessStep2 = 0.15; +const lightColorCount = 5; +const darkColorCount = 4; + +const getHue = (h: number, i: number, isLight: boolean): number => { + let hue; + if (h >= 60 && h <= 240) { + hue = isLight ? h - hueStep * i : h + hueStep * i; + } else { + hue = isLight ? h + hueStep * i : h - hueStep * i; + } + if (hue < 0) { + hue += 360; + } else if (hue >= 360) { + hue -= 360; + } + return Math.round(hue); +}; +const getSaturation = (s: number, i: number, isLight: boolean): number => { + let saturation; + if (isLight) { + saturation = s - saturationStep * i; + } else if (i === darkColorCount) { + saturation = s + saturationStep; + } else { + saturation = s + saturationStep2 * i; + } + if (isLight && i === lightColorCount && saturation > 0.1) { + saturation = 0.1; + } + saturation = clamp(saturation, 0.06, 1); + return Number(saturation.toFixed(2)); +}; +const getValue = (v: number, i: number, isLight: boolean): number => { + let value; + if (isLight) { + value = v + brightnessStep1 * i; + } else { + value = v - brightnessStep2 * i; + } + value = clamp(value, 0, 1); + return Number(value.toFixed(2)); +}; + +export const colorDarken: ColorDarken = (color, value = 1) => { + const [h, s, v] = colorToArray(color, 'hsv'); + return { + model: 'hsv', + value: { + h: getHue(h, value, false), + s: getSaturation(s, value, false), + v: getValue(v, value, false), + }, + }; +}; + +export const colorBrighten: ColorBrighten = (color, value = 1) => { + const [h, s, v] = colorToArray(color, 'hsv'); + return { + model: 'hsv', + value: { + h: getHue(h, value, true), + s: getSaturation(s, value, true), + v: getValue(v, value, true), + }, + }; +}; diff --git a/vendors/smart-color/0.2.1/src/utils/colorComputation/index.ts b/vendors/smart-color/0.2.1/src/utils/colorComputation/index.ts new file mode 100644 index 00000000..5e405593 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/colorComputation/index.ts @@ -0,0 +1,12 @@ +export { colorBlend } from './colorBlend'; +export { colorBrighten, colorDarken } from './colorBrightenDarken'; + +export const hueOffset = (hue: number, dHue: number): number => { + let newHue = (hue + dHue) % 360; + if (newHue < 0) { + newHue += 360; + } else if (newHue >= 360) { + newHue -= 360; + } + return newHue; +}; diff --git a/vendors/smart-color/0.2.1/src/utils/colorConversion.ts b/vendors/smart-color/0.2.1/src/utils/colorConversion.ts new file mode 100644 index 00000000..dd139200 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/colorConversion.ts @@ -0,0 +1,104 @@ +import { Color, ColorModel } from '@antv/color-schema'; +import chroma, { Color as ChromaColor } from 'chroma-js'; +import { getHexByName } from './getHexByName'; + +const isChromaColor = (color: any): color is ChromaColor => { + if (chroma.valid(color)) { + return true; + } + return false; +}; + +// Convert color to chroma color +export const colorToChromaColor = (color: Color): ChromaColor => { + const { value } = color; + if (isChromaColor(value)) { + return chroma(value); + } + return chroma('#000'); +}; + +// Convert color to an array in a specific color model +export const colorToArray = ( + color: Color, + colorModel: ColorModel = color.model +): [number, number, number] | [number, number, number, number] => { + const chromaColor = colorToChromaColor(color); + if (chromaColor) { + return chromaColor[colorModel](); + } + return [0, 0, 0]; +}; +// Convert an array in a specific color model to color +export const arrayToColor = ( + array: [number] | [number, number, number] | [number, number, number, number], + colorModel: ColorModel = array.length === 4 ? 'rgba' : 'rgb' +): Color => { + const value: any = {}; + if (array.length === 1) { + const [v] = array; + for (let i = 0; i < colorModel.length; i += 1) { + value[colorModel[i]] = v; + } + } else { + for (let i = 0; i < colorModel.length; i += 1) { + value[colorModel[i]] = array[i]; + } + } + return { + model: colorModel, + value, + } as Color; +}; + +// Convert color to gray value +export function colorToGray(color: Color): number { + const [r, g, b] = colorToArray(color, 'rgb'); // [red, green, blue] + // Ref:https://tannerhelland.com/2011/10/01/grayscale-image-algorithm-vb6.html + const gray = Math.round(0.299 * r + 0.587 * g + 0.114 * b); + // gray value: [0, 255] + return gray; +} +// Convert gray value to color +export function grayToColor(gray: number, alpha: number = 1): Color { + if (alpha === 1) { + return { + model: 'rgb', + value: { + r: gray, + g: gray, + b: gray, + }, + }; + } + return { + model: 'rgba', + value: { + r: gray, + g: gray, + b: gray, + a: alpha, + }, + }; +} + +export { colorToHex } from '@antv/color-schema'; +export function hexToColor(hexValue: string): Color { + if (/^(#|0x)?[0-9a-fA-F]{3}$/.test(hexValue) || /^(#|0x)?[0-9a-fA-F]{6}$/.test(hexValue)) { + const rgb = chroma(hexValue).rgb(); + return arrayToColor(rgb, 'rgb'); + } + if (/^(#|0x)?[0-9a-fA-F]{4}$/.test(hexValue) || /^(#|0x)?[0-9a-fA-F]{8}$/.test(hexValue)) { + const rgba = chroma(hexValue).rgba(); + return arrayToColor(rgba, 'rgba'); + } + return { + model: 'rgb', + value: { r: 0, g: 0, b: 0 }, + }; +} + +export function nameToColor(name: string): Color { + const hex = getHexByName(name); + return hexToColor(hex); +} diff --git a/vendors/smart-color/0.2.1/src/utils/degree.ts b/vendors/smart-color/0.2.1/src/utils/degree.ts new file mode 100644 index 00000000..9daa8b8f --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/degree.ts @@ -0,0 +1,6 @@ +export function rad2deg(n: number) { + return n * (180 / Math.PI); +} +export function deg2rad(n: number) { + return n * (Math.PI / 180); +} diff --git a/vendors/smart-color/0.2.1/src/utils/getHexByName.ts b/vendors/smart-color/0.2.1/src/utils/getHexByName.ts new file mode 100644 index 00000000..8377da8f --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/getHexByName.ts @@ -0,0 +1,152 @@ +const nameHex = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32', +}; +// @ts-ignore +export const getHexByName = (name: string) => nameHex[name] || '#000000'; diff --git a/vendors/smart-color/0.2.1/src/utils/helper.ts b/vendors/smart-color/0.2.1/src/utils/helper.ts new file mode 100644 index 00000000..30458a26 --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/helper.ts @@ -0,0 +1,44 @@ +export const random = (a: number = 1, b: number = 0): number => { + const lower = Math.min(a, b); + const upper = Math.max(a, b); + return lower + Math.random() * (upper - lower); +}; + +export const randomInt = (a: number = 1, b: number = 0): number => { + const lower = Math.ceil(Math.min(a, b)); + const upper = Math.floor(Math.max(a, b)); + return Math.floor(lower + Math.random() * (upper - lower + 1)); +}; + +export const clamp = (num: number, boundOne: number, boundTwo: number) => { + if (!boundTwo) { + return Math.max(num, boundOne) === boundOne ? num : boundOne; + } + if (Math.min(num, boundOne) === num) { + return boundOne; + } + if (Math.max(num, boundTwo) === num) { + return boundTwo; + } + return num; +}; + +// poor version, but enough +export const cloneDeep = (target: any): any => { + if (target && typeof target === 'object') { + const isArray = Array.isArray(target); + if (isArray) { + const cloneTarget = (target as []).map((d) => cloneDeep(d)); + return cloneTarget; + } + // isObject + const cloneTarget = {}; + const keys = Object.keys(target); + keys.forEach((key) => { + // @ts-ignore + cloneTarget[key] = cloneDeep(target[key]); + }); + return cloneTarget; + } + return target; +}; diff --git a/vendors/smart-color/0.2.1/src/utils/image.ts b/vendors/smart-color/0.2.1/src/utils/image.ts new file mode 100644 index 00000000..53ad093c --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/image.ts @@ -0,0 +1,14 @@ +// Load a image in a promise +export function loadImage(url: string): Promise { + return new Promise((resolve, reject) => { + const img = new Image(); + img.addEventListener('load', () => { + resolve(img); + }); + img.addEventListener('error', () => { + reject(new Error(`Failed to load image URL: ${url}`)); + }); + img.crossOrigin = 'anonymous'; + img.src = url; + }); +} diff --git a/vendors/smart-color/0.2.1/src/utils/index.ts b/vendors/smart-color/0.2.1/src/utils/index.ts new file mode 100644 index 00000000..8f795c7a --- /dev/null +++ b/vendors/smart-color/0.2.1/src/utils/index.ts @@ -0,0 +1,15 @@ +export { loadImage } from './image'; +export { hueOffset, colorBlend, colorBrighten, colorDarken } from './colorComputation'; +export { + colorToArray, + arrayToColor, + colorToGray, + grayToColor, + colorToHex, + hexToColor, + colorToChromaColor, + nameToColor, +} from './colorConversion'; + +export { random, randomInt, clamp, cloneDeep } from './helper'; +export { rad2deg, deg2rad } from './degree'; diff --git a/vendors/smart-color/LICENSE b/vendors/smart-color/LICENSE new file mode 100644 index 00000000..a5b36357 --- /dev/null +++ b/vendors/smart-color/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 AntV team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendors/smart-color/README.md b/vendors/smart-color/README.md new file mode 100644 index 00000000..39f2c7a2 --- /dev/null +++ b/vendors/smart-color/README.md @@ -0,0 +1,101 @@ +

+@antv/smart-color +

+ +
+A JavaScript library for color computation. +
+ +## ✨ Features + +* **Palette Generation**: Generate categorical or discrete scale palette based on [color scheme](https://github.com/neoddish/color-palette-json-schema#colorschemetype). +* **Palette Optimization**: Optimize palette to enhance color discriminability. +* **Palette Extraction**: Get palettes from strings and images. +* **Color Simulation**: Simulate color blindness and color in grayscale. +* **Color Evaluation**: Evaluate color discriminability and aesthetics. +* **Color Computation**: Blend colors, brighten or darken colors. +* **Color Conversion**: Convert color into different formats. + +## 📦 Installation + +```bash +$ npm install @antv/smart-color +``` + +## 🔨 Getting Started + +* Palette Generation + +```ts +import { paletteGeneration } from '@antv/smart-color'; + +paletteGeneration("monochromatic", { + color: { + model: "rgb", + value: { r: 91, g: 143, b: 249 }, + }, + count: 7, + tendency: "shade" +}); +``` + +
+ auto generated palette +
+ +* Palette Optimization + +```ts +import { PaletteOptimization } from '@antv/smart-color'; + +const palette = { + name: "color4", + semantic: null, + type: "categorical", + colors: [ + { model: "rgb", value: { r: 101, g: 120, b: 155 }, }, + { model: "rgb", value: { r: 91, g: 143, b: 249 }, }, + { model: "rgb", value: { r: 97, g: 221, b: 170 }, }, + { model: "rgb", value: { r: 246, g: 189, b: 22 }, } + ], +} +paletteOptimization(palette, { + locked: [true], + simulationType: "grayscale" +}); +``` + +
+
+ Before: + palette before optimization +
+
+ After: + palette after optimization +
+
+ +* Color Simulation + +```ts +import { colorSimulation } from '@antv/smart-color'; + +const color = { + model: "rgb", + value: { r: 91, g: 143, b: 249 }, +} +colorSimulation(color, "achromatomaly"); +``` + +
+ color simulation result +
+ +## 🔗 Links + +* [API Reference](./docs/api/readme.md) + +## License + +MIT