From 818fa5a3d5992a93231b22dd21a2b58c8d8a9632 Mon Sep 17 00:00:00 2001 From: Samet Akcay Date: Wed, 11 Dec 2024 14:41:12 +0000 Subject: [PATCH] Merge main to v2 (#2464) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update timm requirement from <=1.0.7,>=1.0.7 to >=1.0.7,<=1.0.9 (#2274) * Update timm requirement from <=1.0.7,>=1.0.7 to >=1.0.7,<=1.0.9 Updates the requirements on [timm](https://github.com/huggingface/pytorch-image-models) to permit the latest version. - [Release notes](https://github.com/huggingface/pytorch-image-models/releases) - [Commits](https://github.com/huggingface/pytorch-image-models/compare/v1.0.7...v1.0.9) --- updated-dependencies: - dependency-name: timm dependency-type: direct:production ... Signed-off-by: dependabot[bot] * Update pyproject.toml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Samet Akcay * ๐ŸžUpdate `setuptools` requirement for PEP 660 support (#2320) Update setup tools Signed-off-by: Samet Akcay * Fix transforms for draem, dsr and rkde (#2324) Signed-off-by: Blaz Rolih * Add check before loading metrics data from checkpoint (#2323) Add check before loading from checkpoint Signed-off-by: Blaz Rolih Co-authored-by: Samet Akcay * Add PIMO (#2329) * PIMO (#1726) * update Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * test binclf curves numpy and numba and fixes Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct som docstrings Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * torch interface and tests Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * torch interface and tests Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * constants regrouped in dataclass as class vars Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * result class was unneccesary for per_image_binclf_curve Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * factorize function _get_threshs_minmax_linspace Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * small docs fixes Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add pimo numpy version and test Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * move validation Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add `shared_fpr_metric` option Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add pimo torch functional version and test Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add torchmetrics interface and test Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * renames and put things in init Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * validate inputs in result objects Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * result objects to from dict and tests Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add save and load methods to result objects and test Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor validations and minor changes Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * test result objects' properties Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * minor refactors Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add missing docstrings Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * minore vocabulary fix for consistency Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add per image scores statistics and test it Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor constants notation Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add stats tests and test it Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * change the meaning of AUPIMO.num_thresh Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * interface to format pairwise test results Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * improve doc Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add optional `paths` to result objects and some minor fixes and refactors Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * remove frozen from dataclasses and some done todos Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * review headers Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * doc modifs Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor `score_less_than_thresh` in `_binclf_one_curve_python` Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct license comments Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * fix doc Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * numba as extra requirement Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor copyrights from jpcbertoldo Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * remove from __future__ import annotations Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor validations names Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * dedupe file path validation Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * fix tests Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * Add todo Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor enums Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * only logger.warning Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor test imports Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor docs Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * refactor some docs Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct pre commit errors Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * remove author tag Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add thrid party program Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * Update src/anomalib/metrics/per_image/pimo.py * move HAS_NUMBA Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * remove PIMOSharedFPRMetric Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * make torchmetrics compute avg by dft Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * pre-commit hooks corrections Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct numpy.trapezoid Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> Co-authored-by: Samet Akcay * ๐Ÿ—‘๏ธ Remove numba (#2313) * remove numba Signed-off-by: Ashwin Vaidya * fix pre-commit checks Signed-off-by: Ashwin Vaidya * add third-party-programs.txt Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * ๐Ÿ—‘๏ธ Remove unused methods (#2315) * remove numba Signed-off-by: Ashwin Vaidya * fix pre-commit checks Signed-off-by: Ashwin Vaidya * remove all unused methods Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * PIMO: Port Numpy โ†’ Torch (#2316) * remove numba Signed-off-by: Ashwin Vaidya * fix pre-commit checks Signed-off-by: Ashwin Vaidya * remove all unused methods Signed-off-by: Ashwin Vaidya * replace numpy with torch Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * ๐Ÿ”จRefactor methods across files (#2321) * remove numba Signed-off-by: Ashwin Vaidya * fix pre-commit checks Signed-off-by: Ashwin Vaidya * remove all unused methods Signed-off-by: Ashwin Vaidya * replace numpy with torch Signed-off-by: Ashwin Vaidya * refactor code Signed-off-by: Ashwin Vaidya * refactor move functional inside update remove path from the metric * Add changes from comments Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * Remove model to model comparison (#2325) * rename to pimo Signed-off-by: Ashwin Vaidya * minor refactor Signed-off-by: Ashwin Vaidya * remove model to model comparison Signed-off-by: Ashwin Vaidya * fix test Signed-off-by: Ashwin Vaidya * PR comments Signed-off-by: Ashwin Vaidya * Minor refactor Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * PR comments Signed-off-by: Ashwin Vaidya * Remove unused enums Signed-off-by: Ashwin Vaidya * update doc strings Signed-off-by: Ashwin Vaidya * update param names Signed-off-by: Ashwin Vaidya * add aupimo basic usage tutorial notebook (#2330) * add aupimo basic usage tutorial notebook Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * update scipy import Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add cite us Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * minor Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * modify texts and add illustration Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * udpate working dir Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> Signed-off-by: Ashwin Vaidya Co-authored-by: Joao P C Bertoldo <24547377+jpcbertoldo@users.noreply.github.com> Co-authored-by: Samet Akcay * Makes batch size dynamic (#2339) Made batch dimension of ONNX export dynamic when specifying input shape. * Add pimo tutorial advanced i (fixed) (#2336) * uset all padim features to make it deterministic Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add aupimo notebook advanced i Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * update readme Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * modify changelog Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct readme Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct again Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * minor corrections Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * Pimo tutorials/02 advanced ii (#2347) * uset all padim features to make it deterministic Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add aupimo notebook advanced i Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * update readme Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * modify changelog Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct readme Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct again Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * minor corrections Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add aupimo notebook advanced ii (pimo curve and integration bounds) Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * fix links Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * correct change log Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * Create epic.yaml * ๐Ÿ”จ Update the issue templates (#2363) * Update epic.yaml * Update epic.yaml * Update epic.yaml * Update epic.yaml * Update task.yaml * Create user_story.yaml * Update epic.yaml * Pimo tutorials/03 advanced iii (#2348) * add aupimo notebook advanced iii (aupimo score of a random model) Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add cite us Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * update notebooks readme Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> Co-authored-by: Samet Akcay * ๐Ÿ”จ Deprecate try import and replace it with Lightning's package_available (#2373) Replace try_import with lightnings package_available function Signed-off-by: Samet Akcay * Refactor folder3d to avoid complex-structure (C901) issue (#2185) * Refactored-make_folder3d_dataset-ruff-error-C901 (#1926) Signed-off-by: sahusiddharth * Simplify folder 3d dataset (#2184) --------- Signed-off-by: sahusiddharth Co-authored-by: Siddharth Sahu <112792547+sahusiddharth@users.noreply.github.com> * ๐Ÿš€ Add datumaro annotation dataloader (#2377) * Add datumaro annotation dataloader Signed-off-by: Ashwin Vaidya * Update changelog Signed-off-by: Ashwin Vaidya * Add examples Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * Pimo tutorials/04 advanced iv (#2352) * add notebook 701e_aupimo_advanced_iv on load/save and statistical comparisons Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * make `AUPIMOResult.num_thresholds` optional Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * add aupimo notebook advanced iv (load/save and statistical tests) Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * simplify cite us and mention intal Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> * fix readme Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> --------- Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> Co-authored-by: Samet Akcay * ๐Ÿž Defer OpenVINO import to avoid unnecessary warnings (#2385) * Fix openvino import issue Signed-off-by: Samet Akcay * Fix pre-commit issues Signed-off-by: Samet Akcay --------- Signed-off-by: Samet Akcay * ๐Ÿš€ Add VLM based Anomaly Model (#2344) * [Draft] Llm on (#2165) * Add TaskType Explanation Signed-off-by: Bepitic * Add llm model Signed-off-by: Bepitic * add ollama Signed-off-by: Bepitic * better description for descr in title Signed-off-by: Bepitic * add text of llm into imageResult visualization * add text of llm into imageResult visualization Signed-off-by: Bepitic * latest changes Signed-off-by: Bepitic * add wip llava/llava_next Signed-off-by: Bepitic * add init Signed-off-by: Bepitic * add text of llm into imageResult visualization Signed-off-by: Bepitic * latest changes Signed-off-by: Bepitic * upd Lint Signed-off-by: Bepitic * fix visualization with description Signed-off-by: Bepitic * show the images every batch Signed-off-by: Bepitic * fix docstring and error management Signed-off-by: Bepitic * Add compatibility for TaskType.EXPLANATION. Signed-off-by: Bepitic * Remove, show in the engine-Visualization. * fix visualization and llm openai multishot. * fix Circular import problem * Add HugginFace To LLavaNext Signed-off-by: Bepitic --------- Signed-off-by: Bepitic * ๐Ÿ”จ Scaffold for refactor (#2340) * initial scafold Signed-off-by: Ashwin Vaidya * Apply PR comments Signed-off-by: Ashwin Vaidya * rename dir Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * Add ChatGPT (#2341) * initial scafold Signed-off-by: Ashwin Vaidya * Apply PR comments Signed-off-by: Ashwin Vaidya * rename dir Signed-off-by: Ashwin Vaidya * delete llm_ollama Signed-off-by: Ashwin Vaidya * Add ChatGPT Signed-off-by: Ashwin Vaidya * Add ChatGPT Signed-off-by: Ashwin Vaidya * Remove LLM model Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * Add Huggingface (#2343) * initial scafold Signed-off-by: Ashwin Vaidya * Apply PR comments Signed-off-by: Ashwin Vaidya * rename dir Signed-off-by: Ashwin Vaidya * delete llm_ollama Signed-off-by: Ashwin Vaidya * Add ChatGPT Signed-off-by: Ashwin Vaidya * Add ChatGPT Signed-off-by: Ashwin Vaidya * Remove LLM model Signed-off-by: Ashwin Vaidya * Add transformers Signed-off-by: Ashwin Vaidya * Remove llava Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * ๐Ÿ”จ Minor Refactor (#2345) Refactor Signed-off-by: Ashwin Vaidya * undo changes Signed-off-by: Ashwin Vaidya * undo changes Signed-off-by: Ashwin Vaidya * undo changes to image.py Signed-off-by: Ashwin Vaidya * Add explanation visualizer (#2351) * Add explanation visualizer Signed-off-by: Ashwin Vaidya * bug-fix Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * ๐Ÿ”จ Allow setting API keys from env (#2353) Allow setting API keys from env Signed-off-by: Ashwin Vaidya * ๐Ÿงช Add tests (#2355) * Add tests Signed-off-by: Ashwin Vaidya * remove explanation task type Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Ashwin Vaidya * minor fixes Signed-off-by: Ashwin Vaidya * Update changelog Signed-off-by: Ashwin Vaidya * Fix tests Signed-off-by: Ashwin Vaidya * Address PR comments Signed-off-by: Ashwin Vaidya * update name Signed-off-by: Ashwin Vaidya * Update src/anomalib/models/image/vlm_ad/lightning_model.py Co-authored-by: Samet Akcay * update name Signed-off-by: Ashwin Vaidya --------- Signed-off-by: Bepitic Signed-off-by: Ashwin Vaidya Co-authored-by: Paco Co-authored-by: Samet Akcay * Add ensembling methods for tiling to Anomalib (#1226) * Fixed broken links in readme * Fixed inference command in readme * Add tiling for ensemble * Add tests for tiling for ensemble * Moved ensemble tiler to separate file * Modify padim config for ensemble * Add tiling to dataset * Revert changes to train * Add tiling to collate fn * Fix tiling in collate * Change val. function to protected * Add tile number logic * Move collate fn to separate file * Update tests for tiler * Add training loop for ensemble * Add model input size setup * Move ens config to separate file * Revert mvtec modifications * Remove unused imports in mvtec * Add batch adjustment to untiling * Add predict step to ensemble * Add comment and docstring to tile joining function * Move tile joining to separate function * Add joining for all tiled data * Add joining for all box data * Refactor pred. joining as modular class * Fix box joining * Add label and score joining * Add ensemble visualization * Add end of predict hook * Add metric computation * Fix metric thresholds * Add removal of individual visualization * Add demo1 notebook * Add docstrings and cleanup * Add memory benchmark * Add modular class for storing predictions * Add metric to separate class * Refactor to support prediction data class * Rename predictions class * Add filesystem predictions class * Add resized predictions class * Fix joiner for classification task * Add page peak to memory benchmark * Add global stats calculation * Add docstrings to stats calculation * Refactor joiner for pipeline * Refactor stats into pipeline * Refactor metrics as pipeline block * Refactor visualization as pipeline block * Refactor postprocessing into a pipeline * Add normalization and thresholding on joined predictions * Refactor tiler to accept config file * Add smoothing of tile joins. * Refactor ensemble datamodule preparation * Remove unused changes in dataloader * Fix metric configuration * Fix box coordinates in joining * Add ensemble callbacks preparation function * Fix box prediction bug in postprocess * Add ensemble params to config * Refactor postprocessing. * Refactor post-processing * Refactor predictions * Code cleanup * Optimize prediction storage * Make join smoothing configurable * Cleanup before PR * Fix stats pipeline * Fix logging strings * Fix memory benchmark * Fix tiler issues * Fix import issues * Fix naming in metrics and visualization * Fix cyclic import * Make logging lazy * Refactor tiler tests * Added collate tiling tests * Added ensemble helper functions tests * Refactor for dummy ensemble config * Refactor for dummy base config * Add tests for prediction storage * Add tests for prediction joiner * Add tests for visualization * Fix small issues in tests * Add metrics test * Add post-processing tests * Fix tiler to work with different instance * Move seed setting inside train loop * Fix pipeline stats bug * Rename ensemble config fixture * Add pipeline tests * Fix config in pipeline tests * Add training script test * Fix types and docstrings * Move and rename to tiled_ensemble * Fix bug in label joining. * Remove memory benchmark * Cleanup files * Fix metrics setup * Rename collate function * Add license to test files * Rename fixtures * Add more comments to tiled ensemble training * Add start of training log message * Refactor tiler to have explicit arguments * Refactor pred. storage to have explicit arguments * Refactor metrics to have explicit arguments * Refactor visualization to have explicit arguments * Refactor post-processing to have explicit arguments * Sort imports * Add test ensemble script * Fix join smoothing bug * Add more documentation to doc-strings * Remove unused import * Add brief tiled ensemble documentation * Update typehints * Make training args more clear * Revert addition of no threshold option. * Refactor normalization and threshold config * Remove tiled ensemble from docs index * Add comments to clarify parts of ensemble config * Improve ensemble config comments * Add num_tiles attribute to tiler. * Fix metrics process docstring * Fix visualization bug and cover with test * Replace strings with enum * Improve comments in joiner. * Fix bug when model doesn't have anomaly maps. * Improve docstrings (types, clarify). * Fix visualization tests * Fix dict membership checks * Add saving of ensemble config file * Update test script args * Cover test script with tests * Update export warning * Fix case when no test or val data * Improve documentation images * Add images for documentation * Add codacy suggestion * Refactor joiner to single class * Refactor storage names and config * Update normalization and threshold stage names * Add transforms independent input size to models Signed-off-by: blaz-r * Make collate function a datamodule attribute Signed-off-by: blaz-r * Refactor tiled ensemble train into pipeline step Signed-off-by: blaz-r * Refactor tiled ensemble prediction into pipeline step Signed-off-by: blaz-r * Refactor tiled ensemble merging into pipeline step Signed-off-by: blaz-r * Refactor tiled ensemble seam smoothing into pipeline step Signed-off-by: blaz-r * Refactor tiled stats calculation into pipeline step Signed-off-by: blaz-r * Fix ckpt loading when predicting on test set. Signed-off-by: blaz-r * Add logging and add tqdm to pipeline steps. Signed-off-by: blaz-r * Refactor normalization pipeline step Signed-off-by: blaz-r * Refactor thresholding into new pipeline job * Fix transforms issue when predicting with dataloader * Add visualization as new pipeline step * Add metrics as new pipeline step * Format the code and address some lint problems Signed-off-by: Blaz Rolih * Add code to skip test if test split is none Signed-off-by: Blaz Rolih * Add accelerator to metrics and smoothing Signed-off-by: Blaz Rolih * Make threshold acq helper function and add to threshold to metrics Signed-off-by: Blaz Rolih * Make a separate test pipeline Signed-off-by: Blaz Rolih * Restructure tiled ensemble files into directories Signed-off-by: Blaz Rolih * Pipeline code cleanup Signed-off-by: Blaz Rolih * Remove old tiled ensemble files Signed-off-by: blaz-r * Remove old post processing files Signed-off-by: blaz-r * Fix sigma value read in smoothing Signed-off-by: blaz-r * Update stats calc and normalization Signed-off-by: blaz-r * Update args naming convention Signed-off-by: blaz-r * Refactor code for nice config Signed-off-by: blaz-r * Update docs structure for new system Signed-off-by: blaz-r * Cleanup train code Signed-off-by: blaz-r * Fix test script args Signed-off-by: blaz-r * Update box merging Signed-off-by: blaz-r * Refactor helper function tests Signed-off-by: blaz-r * Small changes in helper and engine Signed-off-by: blaz-r * Refactor merging tests Signed-off-by: blaz-r * Refactor tiling tests Signed-off-by: blaz-r * Refactor metrics test Signed-off-by: blaz-r * Add support for different threshold methods Signed-off-by: blaz-r * Format tests Signed-off-by: blaz-r * Change test to predict Signed-off-by: blaz-r * Refactor stats calculation tests Signed-off-by: blaz-r * Refactor prediction data tests Signed-off-by: blaz-r * Update metrics tests Signed-off-by: blaz-r * Move metrics tests to components Signed-off-by: blaz-r * Refactor seam smoothing tests Signed-off-by: blaz-r * Refactor normalization tests Signed-off-by: blaz-r * Move mock stats to conftest Signed-off-by: blaz-r * Fix typehints for generator Signed-off-by: blaz-r * Refactor threshold tests Signed-off-by: blaz-r * Temporarily disable box minmax Signed-off-by: blaz-r * Add tiled ensemble integration test Signed-off-by: blaz-r * Fix normalization tests and add additional merging test Signed-off-by: blaz-r * Add tile collater tests Signed-off-by: blaz-r * Change dataset in tests to dummy Signed-off-by: blaz-r * Format and fix linter errors Signed-off-by: blaz-r * Format and some cleanup Signed-off-by: blaz-r * Rename predict to eval Signed-off-by: blaz-r * Update docs for refactored version of code Signed-off-by: blaz-r * Cleanup the docs Signed-off-by: blaz-r * Update ensemble engine Signed-off-by: blaz-r * Remove boxes from pipelines and tests Signed-off-by: blaz-r * Fix TODO comment issue Signed-off-by: blaz-r * Fix unused model in ens. engine Signed-off-by: blaz-r * Fix path case in test Signed-off-by: blaz-r * Change temporary dir to project_path Signed-off-by: blaz-r * Change mvtec to MVTec in test path Signed-off-by: Blaz Rolih --------- Signed-off-by: blaz-r Signed-off-by: Blaz Rolih Co-authored-by: Samet Akcay * ๐Ÿ“š Add training from a checkpoint example (#2389) * Add training from a checkpoint example Signed-off-by: Samet Akcay * Replace patchcore example with efficient-ad Signed-off-by: Samet Akcay --------- Signed-off-by: Samet Akcay * Export experiment duration in seconds in CSV. (#2392) * Export experiment duration in seconds in CSV. Signed-off-by: Weilin Xu * Update CHANGELOG Signed-off-by: Weilin Xu * Log fit and test durations separately. Signed-off-by: Weilin Xu --------- Signed-off-by: Weilin Xu Co-authored-by: Samet Akcay * Make single GPU benchmarking 5x more efficient (#2390) * Use SerialRunner if only one CUDA device is available. Signed-off-by: Weilin Xu * Resolve PLR6201. Signed-off-by: Weilin Xu * Update CHANGELOG. Signed-off-by: Weilin Xu * Keep the same logging level in benchmarking. Signed-off-by: Weilin Xu --------- Signed-off-by: Weilin Xu Co-authored-by: Samet Akcay * ๐Ÿž Fix installation package issues (#2395) * Update the coverage settings Signed-off-by: Samet Akcay * Remove VlmAd's relative import Signed-off-by: Samet Akcay * Revert relative imports Signed-off-by: Samet Akcay * Add type checking Signed-off-by: Samet Akcay --------- Signed-off-by: Samet Akcay * Export the flattened config in benchmark CSV. (#2391) * Export the flattened config in benchmark CSV. Signed-off-by: Weilin Xu * Update CHANGELOG Signed-off-by: Weilin Xu * Reuse the existing flatten_dict(). Signed-off-by: Weilin Xu --------- Signed-off-by: Weilin Xu Co-authored-by: Samet Akcay * `v1.2.0` Release (#2397) Prepare v1.2.0 release (#2396) * Update changelog * Update the version in __init__ --------- Signed-off-by: Samet Akcay * Bump Anomalib version to `2.0.0dev` in `main` (#2402) Update __init__.py * ๐ŸžReplace package_available with module_available (#2407) * ignore tiled ensemble for now Signed-off-by: Samet Akcay * ollama version Signed-off-by: Samet Akcay * Exclude tiled ensemble unit tests Signed-off-by: Samet Akcay --------- Signed-off-by: dependabot[bot] Signed-off-by: Samet Akcay Signed-off-by: Blaz Rolih Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com> Signed-off-by: Ashwin Vaidya Signed-off-by: sahusiddharth Signed-off-by: Bepitic Signed-off-by: blaz-r Signed-off-by: Weilin Xu Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Blaลพ Rolih <61357777+blaz-r@users.noreply.github.com> Co-authored-by: Ashwin Vaidya Co-authored-by: Joao P C Bertoldo <24547377+jpcbertoldo@users.noreply.github.com> Co-authored-by: Marcus Pertlwieser <116986601+Marcus1506@users.noreply.github.com> Co-authored-by: Siddharth Sahu <112792547+sahusiddharth@users.noreply.github.com> Co-authored-by: Paco Co-authored-by: Weilin Xu Co-authored-by: Harim Kang --- .../markdown/guides/how_to/pipelines/index.md | 7 - .../guides/how_to/pipelines/tiled_ensemble.md | 157 --------- .../700_metrics/701b_aupimo_advanced_i.ipynb | 322 +++++++++++++++--- .../700_metrics/701c_aupimo_advanced_ii.ipynb | 152 ++++++++- .../models/components/base/export_mixin.py | 2 +- tools/tiled_ensemble/ens_config.yaml | 43 --- tools/tiled_ensemble/eval.py | 28 -- tools/tiled_ensemble/train.py | 17 - 8 files changed, 408 insertions(+), 320 deletions(-) delete mode 100644 docs/source/markdown/guides/how_to/pipelines/tiled_ensemble.md delete mode 100644 tools/tiled_ensemble/ens_config.yaml delete mode 100644 tools/tiled_ensemble/eval.py delete mode 100644 tools/tiled_ensemble/train.py diff --git a/docs/source/markdown/guides/how_to/pipelines/index.md b/docs/source/markdown/guides/how_to/pipelines/index.md index c7f2c44706..d70e6be757 100644 --- a/docs/source/markdown/guides/how_to/pipelines/index.md +++ b/docs/source/markdown/guides/how_to/pipelines/index.md @@ -6,13 +6,6 @@ This section contains tutorials on how to use different pipelines of Anomalib an :margin: 1 1 0 0 :gutter: 1 -:::{grid-item-card} {octicon}`stack` Tiled Ensemble -:link: ./tiled_ensemble -:link-type: doc - -Learn more about how to use the tiled ensemble pipelines. -::: - :::{grid-item-card} {octicon}`gear` Custom Pipeline :link: ./custom_pipeline :link-type: doc diff --git a/docs/source/markdown/guides/how_to/pipelines/tiled_ensemble.md b/docs/source/markdown/guides/how_to/pipelines/tiled_ensemble.md deleted file mode 100644 index 3550efb5fd..0000000000 --- a/docs/source/markdown/guides/how_to/pipelines/tiled_ensemble.md +++ /dev/null @@ -1,157 +0,0 @@ -# Tiled ensemble - -This guide will show you how to use **The Tiled Ensemble** method for anomaly detection. For more details, refer to the official [Paper](https://openaccess.thecvf.com/content/CVPR2024W/VAND/html/Rolih_Divide_and_Conquer_High-Resolution_Industrial_Anomaly_Detection_via_Memory_Efficient_CVPRW_2024_paper.html). - -The tiled ensemble approach reduces memory consumption by dividing input images into a grid of tiles and training a dedicated model for each tile location. -It is compatible with any existing image anomaly detection model without the need for any modification of the underlying architecture. - -![Tiled ensemble flow](../../../../images/tiled_ensemble/ensemble_flow.png) - -```{note} -This feature is experimental and may not work as expected. -For any problems refer to [Issues](https://github.com/openvinotoolkit/anomalib/issues) and feel free to ask any question in [Discussions](https://github.com/openvinotoolkit/anomalib/discussions). -``` - -## Training - -You can train a tiled ensemble using the training script located inside `tools/tiled_ensemble` directory: - -```{code-block} bash - -python tools/tiled_ensemble/train_ensemble.py \ - --config tools/tiled_ensemble/ens_config.yaml -``` - -By default, the Padim model is trained on **MVTec AD bottle** category using image size of 256x256, divided into non-overlapping 128x128 tiles. -You can modify these parameters in the [config file](#ensemble-configuration). - -## Evaluation - -After training, you can evaluate the tiled ensemble on test data using: - -```{code-block} bash - -python tools/tiled_ensemble/eval.py \ - --config tools/tiled_ensemble/ens_config.yaml \ - --root path_to_results_dir - -``` - -Ensure that `root` points to the directory containing the training results, typically `results/padim/mvtec/bottle/runX`. - -## Ensemble configuration - -Tiled ensemble is configured using `ens_config.yaml` file in the `tools/tiled_ensemble` directory. -It contains general settings and tiled ensemble specific settings. - -### General - -General settings at the top of the config file are used to set up the random `seed`, `accelerator` (device) and the path to where results will be saved `default_root_dir`. - -```{code-block} yaml -seed: 42 -accelerator: "gpu" -default_root_dir: "results" -``` - -### Tiling - -This section contains the following settings, used for image tiling: - -```{code-block} yaml - -tiling: - tile_size: 256 - stride: 256 -``` - -These settings determine the tile size and stride. Another important parameter is image_size from `data` section later in the config. It determines the original size of the image. - -Input image is split into tiles, where each tile is of shape set by `tile_size` and tiles are taken with step set by `stride`. -For example: having image_size: 512, tile_size: 256, and stride: 256, results in 4 non-overlapping tile locations. - -### Normalization and thresholding - -Next up are the normalization and thresholding settings: - -```{code-block} yaml -normalization_stage: image -thresholding: - method: F1AdaptiveThreshold - stage: image -``` - -- **Normalization**: Can be applied per each tile location separately (`tile` option), after combining prediction (`image` option), or skipped (`none` option). - -- **Thresholding**: Can also be applied at different stages, but it is limited to `tile` and `image`. Another setting for thresholding is the method used. It can be specified as a string or by the class path. - -### Data - -The `data` section is used to configure the input `image_size` and other parameters for the dataset used. - -```{code-block} yaml -data: - class_path: anomalib.data.MVTec - init_args: - root: ./datasets/MVTec - category: bottle - train_batch_size: 32 - eval_batch_size: 32 - num_workers: 8 - task: segmentation - transform: null - train_transform: null - eval_transform: null - test_split_mode: from_dir - test_split_ratio: 0.2 - val_split_mode: same_as_test - val_split_ratio: 0.5 - image_size: [256, 256] -``` - -Refer to [Data](../../reference/data/image/index.md) for more details on parameters. - -### SeamSmoothing - -This section contains settings for `SeamSmoothing` block of pipeline: - -```{code-block} yaml -SeamSmoothing: - apply: True - sigma: 2 - width: 0.1 - -``` - -SeamSmoothing job is responsible for smoothing of regions where tiles meet - called tile seams. - -- **apply**: If True, smoothing will be applied. -- **sigma**: Controls the sigma of Gaussian filter used for smoothing. -- **width**: Sets the percentage of the region around the seam to be smoothed. - -### TrainModels - -The last section `TrainModels` contains the setup for model training: - -```{code-block} yaml -TrainModels: - model: - class_path: Fastflow - - metrics: - pixel: AUROC - image: AUROC - - trainer: - max_epochs: 500 - callbacks: - - class_path: lightning.pytorch.callbacks.EarlyStopping - init_args: - patience: 42 - monitor: pixel_AUROC - mode: max -``` - -- **Model**: Specifies the model used. Refer to [Models](../../reference/models/image/index.md) for more details on the model parameters. -- **Metrics**: Defines evaluation metrics for pixel and image level. -- **Trainer**: _optional_ parameters, used to control the training process. Refer to [Engine](../../reference/engine/index.md) for more details. diff --git a/notebooks/700_metrics/701b_aupimo_advanced_i.ipynb b/notebooks/700_metrics/701b_aupimo_advanced_i.ipynb index 9646e81868..e3756ae706 100644 --- a/notebooks/700_metrics/701b_aupimo_advanced_i.ipynb +++ b/notebooks/700_metrics/701b_aupimo_advanced_i.ipynb @@ -194,9 +194,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Metric `AUPIMO` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n" + ] + } + ], "source": [ "aupimo = AUPIMO(\n", " # with `False` all the values are returned in a dataclass\n", @@ -235,9 +243,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MEAN\n", + "aupimo_result.aupimos[labels == 1].mean().item()=0.742841961578308\n", + "OTHER STATISTICS\n", + "DescribeResult(nobs=92, minmax=(0.0, 1.0), mean=0.742841961578308, variance=0.08757792704451817, skewness=-0.9285678601866055, kurtosis=-0.3299211772047075)\n" + ] + }, + { + "data": { + "image/png": "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KlXqqhdPnz17VpKuWXauuLI8LS3tmut8++23qlSpkv7+97/bxnx8fDR48OAb5g0ICND58+e1YsWKG657LREREXkuRZI0ePBguyMuw4YNU+nSpfXtt9/mO0NefPvttwoJCVHv3r1tY+7u7nrqqad07tw5rV271m79Xr162UqRJNuRvYK85gso7ihGgItkZ2dr3rx5at26tfbv36+9e/dq7969uueee5ScnKyVK1c6vM2/nrYJDw/XihUr9P3332vdunU6duyYlixZogoVKuR5m4888ohSU1O1dOlSxcbGqnPnzlctP1fGrhSka8lLgTp48KBq1KiR6/Pc6JSWJD355JO6/fbb1bFjR1WpUkUDBgzQsmXLbvi+/xUREeHQ+n99rIGvr68qVapU6LfcHzx4UDVr1sx1p9yVU28HDx60Gw8LC7N7faUk/fV6KOBWxqk0wEVWrVqlo0ePat68eZo3b16u5bGxsWrfvr2ky7fOS7LdHfVX6enpdutdUaZMGUVGRt5UzkqVKqlVq1Z65513tH79en311VdXXc/f31+VKlXSr7/+et3t/frrr7rtttvk5+d3U7mupWLFitq6dauWL1+upUuXaunSpYqJidHjjz+e66Lka/H29i6UbFdTEEcG8+pqpxaly3feAbiMI0aAi8TGxqpixYqaP39+rp/evXvr66+/thWhoKAg+fj4KDEx8arbSkxMlI+Pj0NHghzx6KOP6scff5Sfn586dep0zfU6d+6s/fv3a926dVdd/uOPP+rAgQM3vJ6latWq+uOPP3L9C/tan/+vPDw81KVLF02bNk1//PGHhgwZok8//VR79+6VlPvI2s3as2eP3etz587p6NGjdnfLlStXTikpKXbrXbx4UUePHrUbcyRb1apVtWfPnlzPcdq9e7dtOQDHUIwAF8jIyNCCBQvUuXNn/f3vf8/1M2LECJ09e1aLFi2SdPm/9Nu3b6/FixcrKSnJbltJSUlavHix2rdvf80jAjfr73//u8aNG6dp06Zd9zk6Y8aMkbe3t4YMGaJTp07ZLTt9+rSGDh0qHx8fjRkz5rr769Spk44cOWL3VO0rjwG4kb/u183NTQ0aNJAk2+3+ZcqUkaRcRSW/Zs2aZfdcqOnTp+vSpUvq2LGjbax69er64Ycfcr3vr0eMHMnWqVMnHTt2TJ9//rlt7NKlS5oyZYp8fX3VsmXL/Hwc4JbGqTTABa7clXWtO5aaNWtme9hjr169JEmvv/66mjVrprvvvluDBw9WeHi4Dhw4oFmzZslisej1118vtLz+/v5XfQbPX9WsWVOffPKJ+vTpo/r16+d68vXJkyc1d+5cVa9e/brbGTRokD788EM9/vjjSkhIUKVKlfSf//wnT3fSPfHEEzp9+rTatGmjKlWq6ODBg5oyZYruvPNO27U3d955p0qVKqU333xTqamp8vT0VJs2ba76CIK8uHjxotq2bauePXsqMTFR06ZN0/333283v0888YSGDh2q7t27q127dtq2bZuWL1+e6yifI9kGDx6smTNnql+/fkpISFB4eLi+/PJLrV+/Xu+9994NL4QHcBUGgNN16dLFeHl5mfPnz19znX79+hl3d3dz8uRJ29iuXbtMr169TMWKFU3p0qVNxYoVzSOPPGJ27dqV6/0tW7Y09erVu2GWvn37mjJlyjj83tWrVxtJZv78+bmW/frrr6Z3796mUqVKxt3d3YSEhJjevXub7du33zDPFQcPHjQPPvig8fHxMRUqVDCjRo0yy5YtM5LM6tWr7fJXrVrV9vrLL7807du3NxUrVjQeHh4mLCzMDBkyxBw9etRu+x999JGpVq2aKVWqlN02q1ataqKioq6aqWrVqqZv37621zExMUaSWbt2rRk8eLApV66c8fX1NX369DGnTp2ye292drZ5/vnnTYUKFYyPj4/p0KGD2bt3b65tXi9by5YtTcuWLe3WTU5ONv379zcVKlQwHh4epn79+iYmJsZunf379xtJ5u233871mSSZcePGXfXzArciizFcdQcAACBxjREAAIANxQgAAMCKYgQAAGBFMQIAALCiGAEAAFhRjAAAAKxK/AMec3JydOTIEZUtW7bAvwYAAAAUDmOMzp49q8qVK+f6ouTCVOKL0ZEjRxQaGurqGAAAIB8OHTqkKlWqOG1/Jb4YXXkk/v79+1W+fHkXp7m1ZWVl6bvvvlP79u3l7u7u6ji3NOaiaGE+ig7moug4ffq0IiIinP7VNiW+GF05fVa2bFn5+fm5OM2tLSsrSz4+PvLz8+MvHBdjLooW5qPoYC6KjitfzOzsy2C4+BoAAMCKYgQAAGBFMQIAALCiGAEAAFhRjAAAAKwoRgAAAFYUIwAAACuKEQAAgBXFCAAAwIpiBAAAYEUxAgAAsKIY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CoeLkcVi0QsvvKAxY8Zo7969OnfunOrWrStfX9/CyAcAAOA0DhejKzw8PFS2bFmVLVuWUgQAAEoEh68xunTpkl566SX5+/srPDxc4eHh8vf314svvqisrKzCyAgAAOAUDh8xGjlypBYsWKC33npLzZs3lyTFx8dr/PjxOnXqlKZPn17gIQEAAJzB4WIUFxenefPmqWPHjraxBg0aKDQ0VL1796YYAQCAYsvhU2menp4KDw/PNR4RESEPD4+CyAQAAOASDhejESNG6NVXX7V9R5okZWZm6rXXXtOIESMKNBwAAIAz5elUWrdu3exef//996pSpYoaNmwoSdq2bZsuXryotm3bFnxCAAAAJ8lTMfL397d73b17d7vXoaGhBZcIAADARfJUjGJiYgo7BwAAgMs5fI0RAABASeXw7fqnTp3Syy+/rNWrV+v48ePKycmxW3769OkCCwcAAOBMDhejxx57THv37tXAgQMVHBwsi8VSGLkAAACczuFi9OOPP2rdunW2O9IAAABKCoevMapdu7YyMjIKIwsAAIBLOVyMpk2bphdeeEFr167VqVOnlJaWZvcDAABQXDl8Ki0gIEBpaWlq06aN3bgxRhaLRdnZ2QUWDgAAwJkcLkZ9+vSRu7u74uLiuPgaAACUKA4Xox07duiXX35RrVq1CiMPAACAyzh8jVHjxo116NChwsgCAADgUg4fMRo5cqRGjRqlMWPGqH79+nJ3d7db3qBBgwILBwAA4EwOF6NevXpJkgYMGGAbs1gsXHwNAACKPYeL0f79+wsjBwAAgMs5fI1R1apVr/vjiEmTJqlJkyYqW7asKlasqK5duyoxMdFunQsXLmj48OEKDAyUr6+vunfvruTkZEdjAwAA3JDDR4w+/fTT6y5//PHH87yttWvXavjw4WrSpIkuXbqkf/7zn2rfvr127typMmXKSJKeeeYZffPNN5o/f778/f01YsQIdevWTevXr3c0OgAAwHU5XIxGjRpl9zorK0vp6eny8PCQj4+PQ8Vo2bJldq/nzJmjihUrKiEhQS1atFBqaqpmz56tuLg42wMlY2JiVKdOHf38889q1qyZo/EBAACuyeFidObMmVxje/bs0bBhwzRmzJibCpOamipJKl++vCQpISFBWVlZioyMtK1Tu3ZthYWFKT4+/qrFKDMzU5mZmbbXV76mJCsrS1lZWTeV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NHXqVIWHh8vLy0v33HOPNm7caFs2evRolS9fXqGhoYqNjbV73/z589WlSxdnxy0RJk2apCZNmqhs2bKqWLGiunbtqsTERLt1Lly4oOHDhyswMFC+vr7q3r273VPMT58+rS5dusjX11d33XWXfvnlF7v3Dx8+XO+8845TPk9J8sYbb8hisejpp5+2jTEXznP48GFFR0crMDBQ3t7eql+/vjZv3mxbbozRyy+/rEqVKsnb21uRkZHas2ePbXlmZqYee+wx+fn56fbbb9f3339vt/23335bI0eOdNrnKa6ys7P10ksvKSIiQt7e3qpevbpeffVVu+/dYi4Kzw8//KAuXbqocuXKslgsWrhwod3yG/3upct/L/Xp00d+fn4KCAjQwIEDde7cOdvyAwcOqEWLFipTpoxatGihAwcO2L2/c+fO+uqrrxwP79QvICkE8+bNMx4eHubjjz82v/32mxk0aJAJCAgwycnJZtGiRSY4ONhs2rTJxMXFGS8vL3PixAljjDEpKSmmZs2a5uDBgy7+BMVThw4dTExMjNmxY4fZunWr6dSpkwkLCzPnzp2zrTN06FATGhpqVq5caTZv3myaNWtm7r33Xtvy0aNHm5YtW5rExETz9NNPm0aNGtmWxcfHm0aNGplLly459XMVdxs3bjTh4eGmQYMGZtSoUbZx5sI5Tp8+bapWrWr69etnNmzYYPbt22eWL19u9u7da1vnjTfeMP7+/mbhwoVm27Zt5sEHHzQREREmIyPDGGPMBx98YOrUqWN27Nhh3n77bRMUFGRycnKMMcbs27fP1KxZ06Smprrk8xUnr732mgkMDDRLliwx+/fvN/Pnzze+vr7m/ffft63DXBSeb7/91rzwwgtmwYIFRpL5+uuv7Zbf6HdvjDEPPPCAadiwofn555/Njz/+aGrUqGF69+5tW96tWzfzyCOPmN9//9307NnTdO/e3bZs3rx5pkuXLvnKXuyLUdOmTc3w4cNtr7Ozs03lypXNpEmTzJtvvml69eplW1axYkWzceNGY4wxgwcPNpMnT3Z63pLq+PHjRpJZu3atMeZy8XR3dzfz58+3rbNr1y4jycTHxxtjjOnYsaOZPn26McaYnTt3Gh8fH2OMMRcvXjQNGzY0mzZtcvKnKN7Onj1ratasaVasWGFatmxpK0bMhfM8//zz5v7777/m8pycHBMSEmLefvtt21hKSorx9PQ0c+fONcYYM2zYMPP8888bY4xJT083kszx48eNMZf/g2TBggWF+AlKjqioKDNgwAC7sW7dupk+ffoYY5gLZ/prMcrL737nzp1Gkt3fPUuXLjUWi8UcPnzYGGNMnTp1zNKlS40xl4tY3bp1jTHGnDlzxtSoUcMkJSXlK2+xPpV28eJFJSQkKDIy0jbm5uamyMhIxcfHq2HDhtq8ebPOnDmjhIQEZWRkqEaNGlq3bp22bNmip556yoXpS5bU1FRJsn3ZX0JCgrKysuzmpnbt2goLC1N8fLwkqWHDhlq1apUuXbqk5cuXq0GDBpKkt956S61atVLjxo2d/CmKt+HDhysqKsrudy4xF860aNEiNW7cWD169FDFihV111136aOPPrIt379/v44dO2Y3F/7+/rrnnnvs5mLdunXKyMjQ8uXLValSJVWoUEGxsbHy8vLSww8/7PTPVRzde++9WrlypX7//XdJ0rZt27Ru3Tp17NhREnPhSnn53cfHxysgIMDu757IyEi5ublpw4YNki7Pz/fff6+cnBx99913tr+3xowZo+HDhys0NDR/AfNVp4qIw4cPG0nmp59+shsfM2aMadq0qTHGmHHjxpnq1aubO+64wyxYsMBkZmaaO+64w2zevNlMmTLF3H777ebee+81O3bscMVHKBGys7NNVFSUue+++2xjsbGxxsPDI9e6TZo0Mc8995wx5vJ/IfTu3duEhYWZFi1amN9++838/vvvpmbNmubkyZNmyJAhJiIiwvTo0cOkpKQ47fMUR3PnzjV33HGH7TD0/x4xYi6cx9PT03h6epqxY8eaLVu2mJkzZxovLy8zZ84cY4wx69evN5LMkSNH7N7Xo0cP07NnT2PM5aN0Tz75pAkPDzeNGzc2P/74ozl16pSpVq2aSUpKMi+88IKpXr26ad++vfnzzz+d/hmLi+zsbPP8888bi8ViSpcubSwWi3n99ddty5kL59Ffjhjl5Xf/2muvmdtvvz3XtoKCgsy0adOMMcb8+eefJioqyoSGhpqoqCjz559/mrVr15rGjRubU6dOmR49epiIiAgzZMgQk5mZmee8xeIrQW7G+PHjNX78eNvrCRMmKDIyUu7u7po4caK2b9+uJUuW6PHHH1dCQoLrghZjw4cP144dO7Ru3TqH3ufv76+4uDi7sTZt2ujtt99WbGys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PClJSk1N1QsvvKCpU6fm2k758uUVFBSU598JgKKDYgTgus6dO6fPP/9cw4YNU1RUlObMmXNT2wsICFBISIjuuOMOTZ8+XRkZGVqxYsU117/77rsVGhqqBQsW2MYWLFigsLAw3XXXXXbrDh8+XB4eHvruu+/UsmVLhYWFqWPHjvr+++91+PBhvfDCCw5l3bVrl1q1aqXGjRurd+/e8vPz0/79+yVJzz33nIYNG5arnAEo3ihGAK7riy++UO3atVWrVi1FR0fr448/VkF9xaK3t7ck6eLFi9ddb8CAAYqJibG9/vjjj9W/f3+7dU6fPq3ly5frySeftG33ipCQEPXp00eff/65Q9kbNmyozZs368yZM0pISFBGRoZq1KihdevWacuWLXrqqafyvC0AxQPFCMB1zZ49W9HR0ZKkBx54QKmpqVq7du1Nbzc9PV0vvviiSpUqpZYtW1533ejoaK1bt04HDx7UwYMHtX79elumK/bs2SNjjOrUqXPVbdSpU0dnzpzRiRMn8pyxQ4cOio6OVpMmTdSvXz998sknKlOmjIYNG6YZM2Zo+vTpqlWrlu677z799ttved4ugKKrtKsDACi6EhMTtXHjRn399deSLl+D06tXL82ePVutWrXK1zZ79+6tUqVKKSMjQ0FBQZo9e7YaNGhw3fcEBQXZTuMZYxQVFaUKFSpcdd2COpp1xfjx4zV+/Hjb6wkTJigyMlLu7u6aOHGitm/friVLlujxxx9XQkJCge4bgPNRjABc0+zZs3Xp0iVVrlzZNmaMkaenpz788EP5+/vLz89P0uWLkQMCAuzen5KSIn9/f7uxd999V5GRkfL393foAuUBAwZoxIgRknTVC55r1Kghi8WiXbt26eGHH861fNeuXSpXrtxNXRS9e/duffbZZ/rll1/08ccfq0WLFgoKClLPnj01YMAAnT17VmXLls339gG4HqfSAFzVpUuX9Omnn+qdd97R1q1bbT/btm1T5cqVNXfuXElSzZo15ebmlutoyb59+5Samqrbb7/dbjwkJEQ1atRwuKA88MADunjxorKystShQ4dcywMDA9WuXTtNmzbN7g42STp27JhiY2PVq1cvWSwWh/Z7hTFGQ4YM0eTJk+Xr66vs7GxlZWVJku1/s7Oz87VtAEUHR4wAXNWSJUt05swZDRw4MNdRn+7du2v27NkaOnSoypYtqyeeeELPPvusSpcurfr16+vQoUN6/vnn1axZM917770FkqdUqVLatWuX7c9X8+GHH+ree+9Vhw4dNHHiREVEROi3337TmDFjdNttt+m1117L9/7//e9/KygoyPbcovvuu0/jx4/Xzz//rKVLl6pu3bq5jpgBKH44YgTgqmbPnm075fVX3bt31+bNm/Xrr79Kkt5//3317dtXzz//vOrVq6d+/fqpQYMGWrx4cb6P0FyNn5+f7dTd1dSsWVObN29WtWrV1LNnT1WvXl2DBw9W69atFR8fr/Lly+drv8nJyXrttdf0wQcf2MaaNm2qZ599VlFRUfriiy/s7poDUHxZTEFfqQgAxdD48eO1cOHCAvsKjwMHDigiIkK//PKL7rzzzgLZJoDCxxEjALDavn27fH19NW3atJvaTseOHVWvXr0CSgXAmThiBAC6/IDIK18ZEhQUdNVTiHl1+PBh2wXgYWFh8vDwKJCMAAofxQgAAMCKU2kAAABWFCMAAAArihEAAIAVxQgAAMCKYgQAAGBFMQIAALCiGAEAAFhRjAAAAKwoRgAAAFb/D60PVy7Nlq5qAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# the normal images have `nan` values because\n", "# recall is not defined for them so we ignore them\n", @@ -279,9 +309,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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ERGR6jHwEBERkeox8BAREZHqMfAQERGR6jHwEBERkeox8BAREZHqMfAQERGR6jHwEBERkeox8BAREZHqMfAQERGR6jHwEBERkeox8BAREZHqMfAQERGR6jHwEBERkeox8BAREZHqMfAQERGR6jHwEBERkeox8BAREZHqMfAQERGR6jHwEBERkeox8BAREZHq6ZX1BIiInicxMRGZmZllPQ0iKgHm5uZwdXUt9XEZeIjotZaYmAg3N7eyngZRqbEz02CQlwG+j3mE6/ekrKfzSpw9e7bUQw8DDxG91vKv7CxfvhweHh5lPBuiV8847Sw8dg1Cj69+RraVusJ+XFwcgoKCyuSKLQMPEb0RPDw80KBBg7KeBtGrd00H2AV4uLsDDvXKejaqwU3LREREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6JR54srKycPToUWRlZZV010RERKQCcXFxpZ4TSjzwxMfHw8vLC/Hx8SXdNREREalAUFBQqecE3tIiIiIi1WPgISIiItVj4CEiIiLVY+AhIiIi1WPgISIiItVj4CEiIiLVY+AhIiIi1WPgISIiItVj4CEiIiLVY+AhIiIi1WPgISIiItVj4CEiIiLVY+AhIiIi1WPgISIiItXTK+kOs7OzAQBxcXEl3TURvYXy/5bk/20hojfX33+PS/t3usQDT3JyMgAgKCiopLsmordYcnIymjdvXtbTIKKXkJ8R8n8uzd/pEg88zs7OAIDly5fDw8OjpLsnordMXFwcgoKClL8tRPTm+vvvcWn/Tpd44DE2NgYAeHh4oEGDBiXdPRG9pfL/thDRm+vvv8el/TvNTctERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkeiUeeNzd3RETEwN3d/eS7pqIiIhUYPny5aWeE/RKukMTExM0aNCgpLslIiIilfDw8ICJiUmpjslbWkRERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8REREpHoMPERERKR6DDxERESkegw8RERE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", + "text/plain": [ + "
" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "fig, ax = plt.subplots(figsize=(7, 2))\n", "boxplot_data = ax.boxplot(\n", @@ -316,9 +358,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['mean', 'iqr', 'cilo', 'cihi', 'whishi', 'whislo', 'fliers', 'q1', 'med', 'q3'])\n" + ] + } + ], "source": [ "boxplot_data = mpl.cbook.boxplot_stats(aupimo_result.aupimos[labels == 1].numpy())[0]\n", "print(boxplot_data.keys())" @@ -333,9 +383,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value image_index\n", + "0 whislo 0.00 65\n", + "1 q1 0.53 58\n", + "2 med 0.89 63\n", + "3 q3 1.00 22\n", + "4 whishi 1.00 0\n" + ] + } + ], "source": [ "image_selection = []\n", "\n", @@ -376,7 +439,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -583,9 +646,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "FPR bounds\n", + "Lower bound: 0.00001\n", + "Upper bound: 0.00010\n", + "Thresholds corresponding to the FPR bounds\n", + "Lower threshold: 0.504\n", + "Upper threshold: 0.553\n" + ] + } + ], "source": [ "# the fpr bounds are fixed in advance in the metric object\n", "print(f\"\"\"FPR bounds\n", @@ -696,29 +772,20 @@ "source": [ "# Cite Us\n", "\n", - "AUPIMO was developed during Google Summer of Code 2023 (GSoC 2023) with the `anomalib` team from OpenVINO Toolkit.\n", + "AUPIMO was developed during [Google Summer of Code 2023 (GSoC 2023)](https://summerofcode.withgoogle.com/archive/2023/projects/SPMopugd) with the `anomalib` team from Intel's OpenVINO Toolkit.\n", "\n", - "Our work was accepted to the British Machine Vision Conference 2024 (BMVC 2024).\n", + "arXiv: [arxiv.org/abs/2401.01984](https://arxiv.org/abs/2401.01984) (accepted to BMVC 2024)\n", + "\n", + "Official repository: [github.com/jpcbertoldo/aupimo](https://github.com/jpcbertoldo/aupimo) (numpy-only API and numba-accelerated versions available)\n", "\n", "```bibtex\n", "@misc{bertoldo2024aupimo,\n", - " title={{AUPIMO: Redefining Visual Anomaly Detection Benchmarks with High Speed and Low Tolerance}}, \n", " author={Joao P. C. Bertoldo and Dick Ameln and Ashwin Vaidya and Samet Akรงay},\n", + " title={{AUPIMO: Redefining Visual Anomaly Detection Benchmarks with High Speed and Low Tolerance}}, \n", " year={2024},\n", - " eprint={2401.01984},\n", - " archivePrefix={arXiv},\n", - " primaryClass={cs.CV},\n", " url={https://arxiv.org/abs/2401.01984}, \n", "}\n", - "```\n", - "\n", - "Paper on arXiv: [arxiv.org/abs/2401.01984](https://arxiv.org/abs/2401.01984) (accepted to BMVC 2024)\n", - "\n", - "Medium post: [medium.com/p/c653ac30e802](https://medium.com/p/c653ac30e802)\n", - "\n", - "Official repository: [github.com/jpcbertoldo/aupimo](https://github.com/jpcbertoldo/aupimo) (numpy-only API and numba-accelerated versions available)\n", - "\n", - "GSoC 2023 page: [summerofcode.withgoogle.com/archive/2023/projects/SPMopugd](https://summerofcode.withgoogle.com/archive/2023/projects/SPMopugd)" + "```" ] }, { @@ -749,7 +816,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -932,9 +999,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value nearest index label\n", + "0 whislo 0.00 0.00 65 1\n", + "1 q1 0.53 0.53 58 1\n", + "2 mean 0.74 0.75 7 1\n", + "3 med 0.89 0.89 63 1\n", + "4 q3 1.00 1.00 22 1\n", + "5 whishi 1.00 1.00 0 1\n" + ] + } + ], "source": [ "# basic usage\n", "boxplot_statistics = boxplot_stats(aupimo_result.aupimos, labels)\n", @@ -951,9 +1032,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value nearest index label\n", + "0 whislo 0.00 0.00 67 1\n", + "1 q1 0.59 0.59 58 1\n", + "2 mean 0.78 0.79 43 1\n", + "3 med 0.98 0.99 9 1\n", + "4 whishi 1.00 1.00 0 1\n", + "5 q3 1.00 1.00 36 1\n" + ] + } + ], "source": [ "# repeated values\n", "# if the distribution is very skewed to one side,\n", @@ -972,9 +1067,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value nearest index label\n", + "0 whislo 0.00 0.00 67 1\n", + "1 q1 0.59 0.59 58 1\n", + "2 mean 0.78 0.79 43 1\n", + "3 med 0.98 0.99 9 1\n", + "4 whishi 1.00 1.00 0 1\n", + "5 q3 1.00 1.00 0 1\n" + ] + } + ], "source": [ "# this behavior can be changed to allow repeated values\n", "print(pd.DataFrame.from_records(boxplot_stats(mock, labels, repeated_policy=None)))" @@ -989,9 +1098,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAADvCAYAAAD2Og4yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3ZUlEQVR4nO3de1yP9/8/8Me7d+eziIpUKIVyqDmfNk1I01iIEDanDGNmPjtozofhY+aw7YP5TA4z2YfGyGkOyyk5J6Eck3NFSPX8/eHX9fVeoUjl8rjfbu/bvF+v1/W6Xtf7lTx2Xa/remtEREBERESkYnqlPQAiIiKiV42Bh4iIiFSPgYeIiIhUj4GHiIiIVI+Bh4iIiFSPgYeIiIhUj4GHiIiIVI+Bh4iIiFSPgYeIiIhUj4GHiKgM2rFjBzQaDXbs2FHaQyFSBQYeeuPMnz8fGo0GjRo1KrA+OTkZGo0G3377bYH13377LTQaDZKTk5Wy1q1bQ6PRKC8bGxu89dZbWLx4MXJzc5V2oaGhMDc31+kvb1tXV9cC9xcdHa30+9tvv+WrP3HiBEJCQlC5cmUYGRnBwcEBPXv2xIkTJ573USiuX7+O4cOHw93dHSYmJqhYsSIaNmyIMWPG4O7du4Xu53URGhqqM1/6+vpwdHRE9+7dcfLkydIe3kvbsGEDwsPDS3sYRGWKfmkPgKikRUREwNnZGfv378eZM2dQo0aNYum3SpUqmDJlCoDHAeK///0v+vfvj9OnT2Pq1KnP3NbY2BhnzpzB/v370bBhw3zjNTY2xoMHD/JtFxkZieDgYNjY2KB///5wcXFBcnIyFi1ahN9++w0rV67E+++//8x937p1Cz4+PkhPT0e/fv3g7u6Omzdv4ujRo1iwYAEGDx6cL6SpgZGREf7zn/8AALKzs3H27FksXLgQf/75J06ePAkHB4dSHuGL27BhA+bNm8fQQ/QEBh56oyQlJeHvv/9GZGQkBg4ciIiICIwbN65Y+rayskJISIjyfuDAgahZsya+//57TJgwAQYGBk/dtnr16sjOzsaKFSt0As+DBw+wdu1a+Pv7Y82aNTrbnD17Fr169UK1atWwc+dO2NraKnXDhw9HixYt0KtXLxw9ehTVqlV76r4XLVqECxcuYM+ePWjatKlOXXp6OgwNDQv9Gbyse/fuwczMrET2pa+vrzNfANC4cWN07NgRf/zxBz766KMSGQcRlQxe0qI3SkREBMqVKwd/f3988MEHiIiIeGX7MjU1RePGjXHv3j1cv379ue2Dg4OxatUqnUtg69evR2ZmJrp27Zqv/YwZM5CZmYkff/xRJ+wAQIUKFfDDDz/g3r17mD59+jP3e/bsWWi1WjRu3DhfnaWlJYyNjXXK9u3bhw4dOqBcuXIwMzODl5cX5syZo9Nm27ZtaNGiBczMzGBtbY1OnTohPj5ep014eDg0Gg1OnjyJHj16oFy5cmjevLlSv2zZMnh7e8PExAQ2Njbo3r07Ll68qNNHYmIiunTpAjs7OxgbG6NKlSro3r070tLSnnnMT2NnZwfgcRh60rlz5xAUFAQbGxtlXv/44w+lPj4+HiYmJujdu7fOdrt374ZWq8WYMWOUMmdnZ3Ts2BGbN29GvXr1YGxsjFq1aiEyMrJQY1y9erXyuVSoUAEhISG4fPmyUh8aGop58+YBgM5lO6I3HQMPvVEiIiLQuXNnGBoaIjg4GImJiThw4MAr29+5c+eg1WphbW393LY9evRASkqKziLV5cuXo02bNqhYsWK+9uvXr4ezszNatGhRYH8tW7aEs7Ozzj/MBXFyckJOTg5++eWX544xOjoaLVu2xMmTJzF8+HDMnDkTb7/9NqKiopQ2W7ZsgZ+fH65du4bw8HCMHDkSf//9N5o1a6az7ilPUFAQMjMzMXnyZOWsyqRJk9C7d2+4urpi1qxZGDFiBLZu3YqWLVvizp07AICsrCz4+flh7969+PjjjzFv3jwMGDAA586dU9o8z40bN3Djxg2kpqYiJiYGn3zyCcqXL4+OHTsqbVJTU9G0aVNs2rQJQ4YMwaRJk/DgwQO89957WLt2LQDAw8MDEyZMwC+//IJ169YBeHy2KjQ0FO7u7hg/frzOfhMTE9GtWze0b98eU6ZMgb6+PoKCghAdHf3M8f7888/o2rUrtFotpkyZgo8++giRkZFo3ry5cswDBw7Eu+++CwD45ZdflBfRG0+I3hAHDx4UABIdHS0iIrm5uVKlShUZPny4TrukpCQBIDNmzCiwnxkzZggASUpKUspatWol7u7ucv36dbl+/brEx8fLsGHDBIAEBAQo7fr06SNmZmY6/bVq1Upq164tIiI+Pj7Sv39/ERG5ffu2GBoaytKlS2X79u0CQFavXi0iInfu3BEA0qlTp2ce83vvvScAJD09/altrl69Kra2tgJA3N3dZdCgQbJ8+XK5c+eOTrvs7GxxcXERJycnuX37tk5dbm6u8ud69epJxYoV5ebNm0rZkSNHRE9PT3r37q2UjRs3TgBIcHCwTl/Jycmi1Wpl0qRJOuXHjh0TfX19pTwuLk7nMymKPn36CIB8r8qVK0tsbKxO2xEjRggA2bVrl1KWkZEhLi4u4uzsLDk5OSIikpOTI82bN5dKlSrJjRs3JCwsTPT19eXAgQM6/Tk5OQkAWbNmjVKWlpYm9vb2Ur9+faUsb863b98uIiJZWVlSsWJFqVOnjty/f19pFxUVJQDk66+/VsrCwsKEv96JdPEMD70xIiIiUKlSJbz99tsAHp/u79atG1auXImcnJyX7v/UqVOwtbWFra0tPDw8MHfuXPj7+2Px4sWF7qNHjx6IjIxEVlYWfvvtN2i12gIXHWdkZAAALCwsntlfXn16evpT21SqVAlHjhzBoEGDcPv2bSxcuBA9evRAxYoVMWHCBIgIACAuLg5JSUkYMWJEvjNWeZdMUlJScPjwYYSGhsLGxkap9/LywrvvvosNGzbk2/+gQYN03kdGRiI3Nxddu3ZVzsDcuHEDdnZ2cHV1xfbt2wE8XjMFAJs2bUJmZuYzP4eCGBsbIzo6GtHR0di0aRN++OEHmJubo0OHDjh9+rTSbsOGDWjYsKHO5TZzc3MMGDAAycnJyl1denp6+Pnnn3H37l20b98e8+fPx9ixY+Hj45Nv3w4ODjrzamlpid69eyMuLg5Xr14tcLwHDx7EtWvXMGTIEJ3LjP7+/nB3d3/umTyiNx0DD70RcnJysHLlSrz99ttISkrCmTNncObMGTRq1AipqanYunVrkfv857oIZ2dnREdHY8uWLdi9ezeuXr2KqKgoVKhQodB95q0/2bhxIyIiItCxY8cCQ01eWV7weZrCBiN7e3ssWLAAKSkpSEhIwHfffQdbW1t8/fXXWLRoEYDHa30AoE6dOk/t5/z58wCAmjVr5qvz8PDAjRs3cO/ePZ1yFxcXnfeJiYkQEbi6uioBMu8VHx+Pa9euKduNHDkS//nPf1ChQgX4+flh3rx5hV6/o9Vq4evrC19fX7Rt2xYDBgzAli1bkJaWhrFjx+oc09OO58ljBh4vPg8PD8eBAwdQu3ZtfPXVVwXuu0aNGvl+ftzc3ACgwMt+T+6noLG4u7vrjIOI8uNdWvRG2LZtG1JSUrBy5UqsXLkyX31ERATatm0LAMr/Pd+/f7/AvvLOJvxzMa+ZmRl8fX1fapz29vZo3bo1Zs6ciT179uS7MyuPlZUV7O3tcfTo0Wf2d/ToUVSuXBmWlpaF2r9Go4Gbmxvc3Nzg7+8PV1dXRERE4MMPPyzysRSWiYmJzvvc3FxoNBps3LgRWq02X/snb5GfOXMmQkND8b///Q+bN2/GsGHDMGXKFOzduxdVqlQp8liqVKmCmjVrYufOnUU/kP9v8+bNAIArV67g5s2bykJoIipdPMNDb4SIiAhUrFgRq1evzvcKDg7G2rVrlYBja2sLU1NTJCQkFNhXQkICTE1Ni3Tmpih69OiBXbt2wdLSEh06dHhqu44dOyIpKQm7d+8usH7Xrl1ITk7WWYBbFNWqVUO5cuWQkpIC4PHZCwA4fvz4U7dxcnICgAI/u1OnTqFChQrPve28evXqEBG4uLgoZ2CefP3zbjJPT098+eWX2LlzJ3bt2oXLly9j4cKFRTrWJ2VnZ+s8bNHJyempx5NXn2fhwoWIjo7GpEmTkJWVhYEDBxa4jzNnziiXCvPkXUZzdnYucJtnfbYJCQk64+BdWUQFKN0lRESvXmZmplhYWEi/fv0KrN+zZ48AkJUrVyplgYGBYmlpKefPn9dpe/78ebGwsJDAwECd8icXHj/L8xYtizxekDxu3DhZvny5UvbPRcsiIqdPnxYTExOpVauW3LhxQ6fPmzdvSq1atcTU1FTOnDnzzDHt3btX7t69m6983759AkDee+89EXm8KLewi5YrVaqk0+bYsWNPXbR8/fp1nb7OnDkjWq1WevToodNv3n7yjjUtLU0ePXqkU5+eni56enry6aefPvOYC5oHEZGEhATR19eXRo0aKWV5i5b//vtvpezu3btSrVo1nUXL586dE3Nzc+nSpYuIiCxcuFAAyNKlS3X28axFy/Xq1VPKnrZo2cvLSx48eKC027BhQ75Fy2PGjBEA+eaJ6E3GS1qkeuvWrUNGRgbee++9AusbN24MW1tbREREoFu3bgCAyZMno3HjxmjQoAEGDBgAZ2dnJCcn48cff4RGo8HkyZNf2XitrKwK9YRcV1dXLF26FD179oSnp2e+Jy3fuHEDK1asUM7MPM0vv/yCiIgIvP/++/D29oahoSHi4+OxePFiGBsb41//+heAx4tyFyxYgICAANSrVw99+/aFvb09Tp06hRMnTmDTpk0AHj8fqH379mjSpAn69++P+/fvY+7cuYU+rurVq2PixIkYO3YskpOTERgYCAsLCyQlJWHt2rUYMGAAPv30U2zbtg1Dhw5FUFAQ3NzckJ2djV9++QVarRZdunR57n6ys7OxbNkyAI8voyUnJ2PhwoXIzc3VeRjl559/jhUrVqB9+/YYNmwYbGxssHTpUiQlJWHNmjXQ09ODiKBfv34wMTHBggULADy+PXzNmjUYPnw4fH19dZ7c7Obmhv79++PAgQOoVKkSFi9ejNTUVCxZsuSp4zUwMMC0adPQt29ftGrVCsHBwUhNTcWcOXPg7OyMTz75RGnr7e0NABg2bBj8/Pyg1WrRvXv3534mRKpW2omL6FULCAgQY2NjuXfv3lPbhIaGioGBgc6Zkvj4eOnWrZtUrFhR9PX1pWLFitK9e3eJj4/Pt31xnuEpSEFnePIcPXpUgoODxd7eXgwMDMTOzk6Cg4Pl2LFjzx1P3vajR4+WBg0aiI2Njejr64u9vb0EBQXJoUOH8rXfvXu3vPvuu2JhYSFmZmbi5eUlc+fO1WmzZcsWadasmZiYmIilpaUEBATIyZMnddo87QxPnjVr1kjz5s3FzMxMzMzMxN3dXcLCwiQhIUFEHp9R6devn1SvXl2MjY3FxsZG3n77bdmyZctzj7mg29ItLS2lTZs2BW5/9uxZ+eCDD8Ta2lqMjY2lYcOGEhUVpdTPmTMn31kbEZELFy6IpaWldOjQQSlzcnISf39/2bRpk3h5eYmRkZG4u7vnm9t/nuHJs2rVKqlfv74YGRmJjY2N9OzZUy5duqTTJjs7Wz7++GOxtbUVjUbDW9SJREQj8o8LyURE9Mo4OzujTp06Og9rJKJXj4uWiYiISPUYeIiIiEj1GHiIiIhI9biGh4iIiFSPZ3iIiIhI9Rh4iIiISPUK/eDB3NxcXLlyBRYWFnxsOREREb1SIoKMjAw4ODhAT+/lz88UOvBcuXIFjo6OL71DIiIiosK6ePHiC30Z8D8VOvBYWFgoOy7sNy8TERERvYj09HQ4Ojoq+eNlFTrw5F3GsrS0ZOAhIiKiElFcy2i4aJmIiIhUj4GHiIiIVI+Bh4iIiFSPgYeIiIhUj4GHiIiIVO+NCzzJycnQaDQ4fPhwaQ9FcerUKTRu3BjGxsaoV69egW1at26NESNGlOi4iIiI1KLEA09oaCg0Gg2mTp2qU/7777+/sU9wHjduHMzMzJCQkICtW7cW2CYyMhITJkwo4ZGVnq1bt6Jp06awsLCAnZ0dxowZg+zsbKV+x44d6NSpE+zt7WFmZoZ69eohIiKiFEdMRERlWamc4TE2Nsa0adNw+/bt0tj9K5GVlfXC2549exbNmzeHk5MTypcvX2AbGxubYnv4Ull35MgRdOjQAe3atUNcXBxWrVqFdevW4fPPP1fa/P333/Dy8sKaNWtw9OhR9O3bF71790ZUVFQpjpyIiMqqUgk8vr6+sLOzw5QpU57aJjw8PN/lnX//+99wdnZW3oeGhiIwMBCTJ09GpUqVYG1tjfHjxyM7OxujR4+GjY0NqlSpgiVLluTr/9SpU2jatCmMjY1Rp04d/PXXXzr1x48fR/v27WFubo5KlSqhV69euHHjhlLfunVrDB06FCNGjECFChXg5+dX4HHk5uZi/PjxqFKlCoyMjFCvXj38+eefSr1Go0FsbCzGjx8PjUaD8PDwAvv55yUtZ2dnTJw4Eb1794a5uTmcnJywbt06XL9+HZ06dYK5uTm8vLxw8OBBZZubN28iODgYlStXhqmpKTw9PbFixQqd/WRkZKBnz54wMzODvb09Zs+enW/fDx8+xKefforKlSvDzMwMjRo1wo4dO5T68+fPIyAgAOXKlYOZmRlq166NDRs2FHhcBVm1ahW8vLzw9ddfo0aNGmjVqhWmT5+OefPmISMjAwDwr3/9CxMmTEDTpk1RvXp1DB8+HO3atUNkZGSh90NERG+OUgk8Wq0WkydPxty5c3Hp0qWX6mvbtm24cuUKdu7ciVmzZmHcuHHo2LEjypUrh3379mHQoEEYOHBgvv2MHj0ao0aNQlxcHJo0aYKAgADcvHkTAHDnzh288847qF+/Pg4ePIg///wTqamp6Nq1q04fS5cuhaGhIfbs2YOFCxcWOL45c+Zg5syZ+Pbbb3H06FH4+fnhvffeQ2JiIgAgJSUFtWvXxqhRo5CSkoJPP/200Mc+e/ZsNGvWDHFxcfD390evXr3Qu3dvhISE4NChQ6hevTp69+4NEQEAPHjwAN7e3vjjjz9w/PhxDBgwAL169cL+/fuVPkeOHIk9e/Zg3bp1iI6Oxq5du3Do0CGd/Q4dOhQxMTFYuXIljh49iqCgILRr1045prCwMDx8+BA7d+7EsWPHMG3aNJibmyvbOzs7PzXYAY8DlbGxsU6ZiYkJHjx4gNjY2Kdul5aWBhsbm0J/fkRE9AaRQkpLSxMAkpaWVthNCtSnTx/p1KmTiIg0btxY+vXrJyIia9eulSeHM27cOKlbt67OtrNnzxYnJyedvpycnCQnJ0cpq1mzprRo0UJ5n52dLWZmZrJixQoREUlKShIAMnXqVKXNo0ePpEqVKjJt2jQREZkwYYK0bdtWZ98XL14UAJKQkCAiIq1atZL69es/93gdHBxk0qRJOmVvvfWWDBkyRHlft25dGTdu3DP7adWqlQwfPlx57+TkJCEhIcr7lJQUASBfffWVUhYTEyMAJCUl5an9+vv7y6hRo0REJD09XQwMDGT16tVK/Z07d8TU1FTZ9/nz50Wr1crly5d1+mnTpo2MHTtWREQ8PT0lPDz8qft85513ZO7cuU+t37Rpk+jp6cny5cslOztbLl26JC1atBAAsnz58gK3WbVqlRgaGsrx48ef2i8REb0+iit35Cn0d2m9CtOmTcM777xTpLMa/1S7dm2dr42vVKkS6tSpo7zXarUoX748rl27prNdkyZNlD/r6+vDx8cH8fHxAB6vIdm+fbvOWYk8Z8+ehZubGwDA29v7mWNLT0/HlStX0KxZM53yZs2a4ciRI4U8wqfz8vJS/lypUiUAgKenZ76ya9euwc7ODjk5OZg8eTJ+/fVXXL58GVlZWXj48CFMTU0BAOfOncOjR4/QsGFDpQ8rKyvUrFlTeX/s2DHk5OQon0Gehw8fKuuPhg0bhsGDB2Pz5s3w9fVFly5ddMb6tIXZedq2bYsZM2Zg0KBB6NWrF4yMjPDVV19h165dOnOdZ/v27ejbty9++ukn1K5d+9kfGhERvZFK9bb0li1bws/PD2PHjs1Xp6enp1yKyfPo0aN87QwMDHTeazSaAstyc3MLPa67d+8iICAAhw8f1nklJiaiZcuWSjszM7NC9/kqPHmceXe4FVSWd+wzZszAnDlzMGbMGGzfvh2HDx+Gn59fkRZc3717F1qtFrGxsTqfTXx8PObMmQMA+PDDD3Hu3Dn06tULx44dg4+PD+bOnVukYxs5ciTu3LmDCxcu4MaNG+jUqRMAoFq1ajrt/vrrLwQEBGD27Nno3bt3kfZBRERvjlJ/Ds/UqVOxfv16xMTE6JTb2tri6tWrOqGnOJ+ds3fvXuXP2dnZiI2NhYeHBwCgQYMGOHHiBJydnVGjRg2dV1FCjqWlJRwcHLBnzx6d8j179qBWrVrFcyBFsGfPHnTq1AkhISGoW7cuqlWrhtOnTyv11apVg4GBAQ4cOKCUpaWl6bSpX78+cnJycO3atXyfjZ2dndLO0dERgwYNQmRkJEaNGoWffvqpyOPVaDRwcHCAiYkJVqxYAUdHRzRo0ECp37FjB/z9/TFt2jQMGDCgyP0TEdGbo9QDj6enJ3r27InvvvtOp7x169a4fv06pk+fjrNnz2LevHnYuHFjse133rx5WLt2LU6dOoWwsDDcvn0b/fr1A/B40e2tW7cQHByMAwcO4OzZs9i0aRP69u2LnJycIu1n9OjRmDZtGlatWoWEhAR8/vnnOHz4MIYPH15sx1JYrq6uiI6Oxt9//434+HgMHDgQqampSr2FhQX69OmD0aNHY/v27Thx4gT69+8PPT095WyRm5sbevbsid69eyMyMhJJSUnYv38/pkyZgj/++AMAMGLECGzatAlJSUk4dOgQtm/froRJAGjTpg2+//77Z451xowZOHbsGE6cOIEJEyZg6tSp+O6776DVagE8vozl7++PYcOGoUuXLrh69SquXr2KW7duFffHRkREKlDqgQcAxo8fn++Sk4eHB+bPn4958+ahbt262L9//0ut9fmnqVOnYurUqahbty52796NdevWoUKFCgCgnJXJyclB27Zt4enpiREjRsDa2rrANSTPMmzYMIwcORKjRo2Cp6cn/vzzT6xbtw6urq7FdiyF9eWXX6JBgwbw8/ND69atYWdnh8DAQJ02s2bNQpMmTdCxY0f4+vqiWbNm8PDw0LlrasmSJejduzdGjRqFmjVrIjAwEAcOHEDVqlUBADk5OQgLC4OHhwfatWsHNzc3zJ8/X9n+7NmzOrf4F2Tjxo1o0aIFfHx88Mcff+B///ufzliXLl2KzMxMTJkyBfb29sqrc+fOL/9BERGR6mjknwtlniI9PR1WVlZIS0uDpaXlqx4XlRH37t1D5cqVMXPmTPTv37+0h0NERG+I4s4dpXqXFpU9cXFxOHXqFBo2bIi0tDSMHz8eAJRFw0RERK8jBh7K59tvv0VCQgIMDQ3h7e2NXbt2KZf7iIiIXkcMPKSjfv36z3yaMRER0euoTCxaJiIiInqVGHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj19Et7AERE9HSJiYnIyMgo7WEQFRsLCwu4urqW+H4ZeIiIyqjExES4ubmV9jBIZezMNRjobYgfYrNw9a6UyhhOnz5d4qGHgYeIqIzKO7OzbNkyeHh4lPJoSC1M7pyGx86B6Pb1z7hvXbKBOj4+HiEhIaVy1pKBh4iojPPw8ECDBg1KexikFlf0gJ2Ah7s74FCvtEdTYrhomYiIiFSPgYeIiIhUj4GHiIiIVI+Bh4iIiFSPgYeIiIhUj4GHiIiIVI+Bh4iIiFSPgYeIiIhUj4GHiIiIVI+Bh4iIiFSPgYeIiIhUj4GHXlhmZiYOHTqEzMzM0h4KERG9RuLj40v83w4GHnphp06dgre3N06dOlXaQyEiotdISEhIif/bwcBDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqqdfnJ1lZWVh/vz5OHv2LKpXr44hQ4bA0NAQAJCTk4Ndu3YhJSUF9vb2aNGiBbRabXHu/oWU1XERERFR8Sm2wPPZZ59h9uzZyM7OVspGjx6NTz75BI0bN8aoUaOQnJys1Dk7O2PmzJno3LlzcQ2hyCIjI8vkuIiIiKh4Fcslrc8++wwzZsxA+fLl8dNPPyElJQU//fQTypcvjxkzZqBLly7w9PRETEwMMjIyEBMTA09PT3zwwQeIjIwsjiEUWWRkJD744IMyNy4iIiIqfhoRkcI0TE9Ph5WVFdLS0mBpaamUZ2VlwczMDOXLl8elS5egr/9/J40ePnwIU1NTiAgyMzNhbGys1OXm5iIwMBDHjx9HYmJiiV5GysnJQY0aNeDp6Ynff/8denr/l/tKc1yvm0OHDsHb2xuxsbFo0KBBaQ+HSHX4d4xeiSuHgR9bAQP+Ahzqleiu836mATz35/ppueNFvfQlrfnz5yM7OxsTJ07UCTsAEBMTg9zcXADAwoULMWLECKVOT08PY8eORdOmTbFr1y60bt36ZYdSaLt27UJycjJWrFihE3ZKe1yvm/v37wMA4uPjS3kkROqU93cr7+8a0evuyZ/lkv65funAc/bsWQBAx44d89WlpKTka/ekOnXq5GtXEvL2l7f/fyqtcb1u8tY+hYSElO5AiFQuOTkZzZo1K+1hEL20J9fMlvTP9UsHnurVqwMAoqKi8OGHH+rU2dvb52v3pOPHj+drVxLy9nf8+HE0bty4zIzrdePs7AwAWLZsGTw8PEp3MEQqFB8fj5CQEOXvGtHr7smf5ZL+uX7pwDNkyBCMHj0aX375JUJDQ3UuazVp0gR6enoQEQwaNEhnu9zcXEyZMgUuLi5o0aLFyw6jSFq0aAFnZ2dMnjy5wDU8pTWu142JiQkAwMPDg+sLiF6hvL9rRK+7J3+WS/rn+qXv0jI0NMQnn3yC1NRUVKlSBT/++COuXLmCH3/8EU5OTsjNzYWIoGvXrjp3QwUGBiIqKgrffvttiS8M1mq1mDlzJqKiohAYGFhmxkVERESvRrE8h2f69OkAgNmzZ2PgwIH/17m+PkaPHq08h6dp06ZKnYuLC3777bdSe95N586d8dtvv5W5cREREVHxK7YHD06fPh0TJ0586pOWO3XqVOaeaNy5c+cyOS4iIiIqXsX61RKGhoY6t54/SavVlslbvMvquIiIiKj48MtDiYiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9Rh46IW5u7sjNjYW7u7upT0UIiJ6jSxbtqzE/+0o1q+WoDeLqakpGjRoUNrDICKi14yHhwdMTU1LdJ88w0NERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHLw8lIiqjMjMzAQCHDh0q5ZGQmpjcOQ0PAPGnTuH+1dwS3Xd8fHyJ7u9JDDxERGXUqVOnAAAfffRRKY+E1MTOXIOB3ob4YWYPXL0rpTIGCwuLEt8nAw8RURkVGBgIAHB3d4epqWnpDoZU571S2q+FhQVcXV1LfL8aESlUvEtPT4eVlRXS0tJgaWn5qsdFREREb7Dizh1ctExERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKrHwENERESqx8BDREREqsfAQ0RERKqnX9iGIgIASE9Pf2WDISIiIgL+L2/k5Y+XVejAk5GRAQBwdHQslh0TERERPU9GRgasrKxeuh+NFDI65ebm4sqVK7CwsIBGo3lqu/T0dDg6OuLixYuwtLR86QFS8eL8lH2co7KN81O2cX7KvsLOkYggIyMDDg4O0NN7+RU4hT7Do6enhypVqhS6Y0tLS/6wlWGcn7KPc1S2cX7KNs5P2VeYOSqOMzt5uGiZiIiIVI+Bh4iIiFSv2AOPkZERxo0bByMjo+LumooB56fs4xyVbZyfso3zU/aV1hwVetEyERER0euKl7SIiIhI9Rh4iIiISPUYeIiIiEj1GHiIiIhI9V4o8MybNw/Ozs4wNjZGo0aNsH//fqVu5MiRsLGxgaOjIyIiInS2W716NQICAl5uxKSYMmUK3nrrLVhYWKBixYoIDAxEQkKCTpsHDx4gLCwM5cuXh7m5Obp06YLU1FSl/tatWwgICIC5uTnq16+PuLg4ne3DwsIwc+bMEjketZs6dSo0Gg1GjBihlHF+St/ly5cREhKC8uXLw8TEBJ6enjh48KBSLyL4+uuvYW9vDxMTE/j6+iIxMVGpf/jwIXr16gVLS0u4ublhy5YtOv3PmDEDH3/8cYkdj5rk5OTgq6++gouLC0xMTFC9enVMmDBB57uVOD8lZ+fOnQgICICDgwM0Gg1+//13nfrnzQXw+Hdaz549YWlpCWtra/Tv3x93795V6pOTk9GyZUuYmZmhZcuWSE5O1tm+Y8eOWLNmzYsdgBTRypUrxdDQUBYvXiwnTpyQjz76SKytrSU1NVXWrVsnlSpVkgMHDsjy5cvF2NhYrl+/LiIid+7cEVdXVzl//nxR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", + "text/plain": [ + "
" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# fliers\n", "# if the distribution is very skewed to one side,\n", @@ -1053,9 +1174,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value nearest index label\n", + "0 whislo 0.24 0.24 44 1\n", + "1 q1 0.65 0.65 58 1\n", + "2 mean 0.79 0.78 29 1\n", + "3 med 0.94 0.93 63 1\n", + "4 q3 1.00 1.00 22 1\n", + "5 whishi 1.00 1.00 0 1\n" + ] + } + ], "source": [ "# `None` is the default policy, so the fliers are not returned\n", "print(pd.DataFrame.from_records(boxplot_stats(mock, labels, flier_policy=None)))" @@ -1063,9 +1198,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "with option 'low'\n", + " statistic value nearest index label\n", + "0 flierlo 0.00 0.00 65 1\n", + "1 flierlo 0.00 0.00 67 1\n", + "2 flierlo 0.01 0.01 71 1\n", + "3 flierlo 0.09 0.09 64 1\n", + "4 whislo 0.24 0.24 44 1\n", + "5 q1 0.65 0.65 58 1\n", + "6 mean 0.79 0.78 29 1\n", + "7 med 0.94 0.93 63 1\n", + "8 q3 1.00 1.00 22 1\n", + "9 whishi 1.00 1.00 0 1\n", + "with option 'both'\n", + " statistic value nearest index label\n", + "0 flierlo 0.00 0.00 65 1\n", + "1 flierlo 0.00 0.00 67 1\n", + "2 flierlo 0.01 0.01 71 1\n", + "3 flierlo 0.09 0.09 64 1\n", + "4 whislo 0.24 0.24 44 1\n", + "5 q1 0.65 0.65 58 1\n", + "6 mean 0.79 0.78 29 1\n", + "7 med 0.94 0.93 63 1\n", + "8 q3 1.00 1.00 22 1\n", + "9 whishi 1.00 1.00 0 1\n" + ] + } + ], "source": [ "# one can choose to include only high or low fliers, or both\n", "# since there are only low fliers...\n", @@ -1080,9 +1246,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "with option 'high'\n", + " statistic value nearest index label\n", + "0 whislo 0.24 0.24 44 1\n", + "1 q1 0.65 0.65 58 1\n", + "2 mean 0.79 0.78 29 1\n", + "3 med 0.94 0.93 63 1\n", + "4 q3 1.00 1.00 22 1\n", + "5 whishi 1.00 1.00 0 1\n" + ] + } + ], "source": [ "# and 'high' will return no fliers (same as `flier_policy=None` in this case)\n", "print(\"with option 'high'\")\n", @@ -1098,9 +1279,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "stats for the maximum anomaly score in the anomaly maps\n", + " statistic value nearest index label\n", + "0 whislo 0.46 0.46 65 1\n", + "1 q1 0.63 0.63 48 1\n", + "2 med 0.70 0.71 10 1\n", + "3 mean 0.73 0.73 118 1\n", + "4 q3 0.81 0.81 115 1\n", + "5 whishi 1.00 1.00 22 1\n" + ] + } + ], "source": [ "# other applications\n", "# since the function is agnostic to the meaning of the values\n", @@ -1119,9 +1315,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value nearest index label\n", + "0 whislo 0.42 0.42 90 0\n", + "1 q1 0.43 0.43 80 0\n", + "2 med 0.45 0.45 105 0\n", + "3 mean 0.46 0.46 89 0\n", + "4 q3 0.48 0.48 75 0\n", + "5 whishi 0.52 0.52 95 0\n" + ] + } + ], "source": [ "# we can also use the `only_label` argument to select only the\n", "# samples from the normal class\n", @@ -1131,9 +1341,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " statistic value nearest index label\n", + "0 whislo 0.42 0.42 90 0\n", + "1 q1 0.52 0.52 95 0\n", + "2 med 0.65 0.65 17 1\n", + "3 mean 0.66 0.66 45 1\n", + "4 q3 0.77 0.77 108 1\n", + "5 whishi 1.00 1.00 22 1\n" + ] + } + ], "source": [ "# or we can consider data from both classes (`None` option)\n", "print(pd.DataFrame.from_records(boxplot_stats(max_anom_score_per_image, labels, only_label=None)))\n", diff --git a/notebooks/700_metrics/701c_aupimo_advanced_ii.ipynb b/notebooks/700_metrics/701c_aupimo_advanced_ii.ipynb index 6c76c411e8..524c4b0941 100644 --- a/notebooks/700_metrics/701c_aupimo_advanced_ii.ipynb +++ b/notebooks/700_metrics/701c_aupimo_advanced_ii.ipynb @@ -188,9 +188,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Metric `AUPIMO` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n" + ] + } + ], "source": [ "aupimo = AUPIMO(\n", " # with `False` all the values are returned in a dataclass\n", @@ -229,9 +237,31 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MEAN\n", + "aupimo_result.aupimos[labels == 1].mean().item()=0.742841961578308\n", + "OTHER STATISTICS\n", + "DescribeResult(nobs=92, minmax=(0.0, 1.0), mean=0.742841961578308, variance=0.08757792704451818, skewness=-0.9285678601866053, kurtosis=-0.3299211772047079)\n" + ] + }, + { + "data": { + "image/png": "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KlXqqhdPnz17VpKuWXauuLI8LS3tmut8++23qlSpkv7+97/bxnx8fDR48OAb5g0ICND58+e1YsWKG657LREREXkuRZI0ePBguyMuw4YNU+nSpfXtt9/mO0NefPvttwoJCVHv3r1tY+7u7nrqqad07tw5rV271m79Xr162UqRJNuRvYK85gso7ihGgItkZ2dr3rx5at26tfbv36+9e/dq7969uueee5ScnKyVK1c6vM2/nrYJDw/XihUr9P3332vdunU6duyYlixZogoVKuR5m4888ohSU1O1dOlSxcbGqnPnzlctP1fGrhSka8lLgTp48KBq1KiR6/Pc6JSWJD355JO6/fbb1bFjR1WpUkUDBgzQsmXLbvi+/xUREeHQ+n99rIGvr68qVapU6LfcHzx4UDVr1sx1p9yVU28HDx60Gw8LC7N7faUk/fV6KOBWxqk0wEVWrVqlo0ePat68eZo3b16u5bGxsWrfvr2ky7fOS7LdHfVX6enpdutdUaZMGUVGRt5UzkqVKqlVq1Z65513tH79en311VdXXc/f31+VKlXSr7/+et3t/frrr7rtttvk5+d3U7mupWLFitq6dauWL1+upUuXaunSpYqJidHjjz+e66Lka/H29i6UbFdTEEcG8+pqpxaly3feAbiMI0aAi8TGxqpixYqaP39+rp/evXvr66+/thWhoKAg+fj4KDEx8arbSkxMlI+Pj0NHghzx6KOP6scff5Sfn586dep0zfU6d+6s/fv3a926dVdd/uOPP+rAgQM3vJ6latWq+uOPP3L9C/tan/+vPDw81KVLF02bNk1//PGHhgwZok8//VR79+6VlPvI2s3as2eP3etz587p6NGjdnfLlStXTikpKXbrXbx4UUePHrUbcyRb1apVtWfPnlzPcdq9e7dtOQDHUIwAF8jIyNCCBQvUuXNn/f3vf8/1M2LECJ09e1aLFi2SdPm/9Nu3b6/FixcrKSnJbltJSUlavHix2rdvf80jAjfr73//u8aNG6dp06Zd9zk6Y8aMkbe3t4YMGaJTp07ZLTt9+rSGDh0qHx8fjRkz5rr769Spk44cOWL3VO0rjwG4kb/u183NTQ0aNJAk2+3+ZcqUkaRcRSW/Zs2aZfdcqOnTp+vSpUvq2LGjbax69er64Ycfcr3vr0eMHMnWqVMnHTt2TJ9//rlt7NKlS5oyZYp8fX3VsmXL/Hwc4JbGqTTABa7clXWtO5aaNWtme9hjr169JEmvv/66mjVrprvvvluDBw9WeHi4Dhw4oFmzZslisej1118vtLz+/v5XfQbPX9WsWVOffPKJ+vTpo/r16+d68vXJkyc1d+5cVa9e/brbGTRokD788EM9/vjjSkhIUKVKlfSf//wnT3fSPfHEEzp9+rTatGmjKlWq6ODBg5oyZYruvPNO27U3d955p0qVKqU333xTqamp8vT0VJs2ba76CIK8uHjxotq2bauePXsqMTFR06ZN0/333283v0888YSGDh2q7t27q127dtq2bZuWL1+e6yifI9kGDx6smTNnql+/fkpISFB4eLi+/PJLrV+/Xu+9994NL4QHcBUGgNN16dLFeHl5mfPnz19znX79+hl3d3dz8uRJ29iuXbtMr169TMWKFU3p0qVNxYoVzSOPPGJ27dqV6/0tW7Y09erVu2GWvn37mjJlyjj83tWrVxtJZv78+bmW/frrr6Z3796mUqVKxt3d3YSEhJjevXub7du33zDPFQcPHjQPPvig8fHxMRUqVDCjRo0yy5YtM5LM6tWr7fJXrVrV9vrLL7807du3NxUrVjQeHh4mLCzMDBkyxBw9etRu+x999JGpVq2aKVWqlN02q1ataqKioq6aqWrVqqZv37621zExMUaSWbt2rRk8eLApV66c8fX1NX369DGnTp2ye292drZ5/vnnTYUKFYyPj4/p0KGD2bt3b65tXi9by5YtTcuWLe3WTU5ONv379zcVKlQwHh4epn79+iYmJsZunf379xtJ5u233871mSSZcePGXfXzArciizFcdQcAACBxjREAAIANxQgAAMCKYgQAAGBFMQIAALCiGAEAAFhRjAAAAKxK/AMec3JydOTIEZUtW7bAvwYAAAAUDmOMzp49q8qVK+f6ouTCVOKL0ZEjRxQaGurqGAAAIB8OHTqkKlWqOG1/Jb4YXXkk/v79+1W+fHkXp7m1ZWVl6bvvvlP79u3l7u7u6ji3NOaiaGE+ig7moug4ffq0IiIinP7VNiW+GF05fVa2bFn5+fm5OM2tLSsrSz4+PvLz8+MvHBdjLooW5qPoYC6KjitfzOzsy2C4+BoAAMCKYgQAAGBFMQIAALCiGAEAAFhRjAAAAKwoRgAAAFYUIwAAACuKEQAAgBXFCAAAwIpiBAAAYEUxAgAAsKIY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CoeLkcVi0QsvvKAxY8Zo7969OnfunOrWrStfX9/CyAcAAOA0DhejKzw8PFS2bFmVLVuWUgQAAEoEh68xunTpkl566SX5+/srPDxc4eHh8vf314svvqisrKzCyAgAAOAUDh8xGjlypBYsWKC33npLzZs3lyTFx8dr/PjxOnXqlKZPn17gIQEAAJzB4WIUFxenefPmqWPHjraxBg0aKDQ0VL1796YYAQCAYsvhU2menp4KDw/PNR4RESEPD4+CyAQAAOASDhejESNG6NVXX7V9R5okZWZm6rXXXtOIESMKNBwAAIAz5elUWrdu3exef//996pSpYoaNmwoSdq2bZsuXryotm3bFnxCAAAAJ8lTMfL397d73b17d7vXoaGhBZcIAADARfJUjGJiYgo7BwAAgMs5fI0RAABASeXw7fqnTp3Syy+/rNWrV+v48ePKycmxW3769OkCCwcAAOBMDhejxx57THv37tXAgQMVHBwsi8VSGLkAAACczuFi9OOPP2rdunW2O9IAAABKCoevMapdu7YyMjIKIwsAAIBLOVyMpk2bphdeeEFr167VqVOnlJaWZvcDAABQXDl8Ki0gIEBpaWlq06aN3bgxRhaLRdnZ2QUWDgAAwJkcLkZ9+vSRu7u74uLiuPgaAACUKA4Xox07duiXX35RrVq1CiMPAACAyzh8jVHjxo116NChwsgCAADgUg4fMRo5cqRGjRqlMWPGqH79+nJ3d7db3qBBgwILBwAA4EwOF6NevXpJkgYMGGAbs1gsXHwNAACKPYeL0f79+wsjBwAAgMs5fI1R1apVr/vjiEmTJqlJkyYqW7asKlasqK5duyoxMdFunQsXLmj48OEKDAyUr6+vunfvruTkZEdjAwAA3JDDR4w+/fTT6y5//PHH87yttWvXavjw4WrSpIkuXbqkf/7zn2rfvr127typMmXKSJKeeeYZffPNN5o/f778/f01YsQIdevWTevXr3c0OgAAwHU5XIxGjRpl9zorK0vp6eny8PCQj4+PQ8Vo2bJldq/nzJmjihUrKiEhQS1atFBqaqpmz56tuLg42wMlY2JiVKdOHf38889q1qyZo/EBAACuyeFidObMmVxje/bs0bBhwzRmzJibCpOamipJKl++vCQpISFBWVlZioyMtK1Tu3ZthYWFKT4+/qrFKDMzU5mZmbbXV76mJCsrS1lZWTeV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NHXqVIWHh8vLy0v33HOPNm7caFs2evRolS9fXqGhoYqNjbV73/z589WlSxdnxy0RJk2apCZNmqhs2bKqWLGiunbtqsTERLt1Lly4oOHDhyswMFC+vr7q3r273VPMT58+rS5dusjX11d33XWXfvnlF7v3Dx8+XO+8845TPk9J8sYbb8hisejpp5+2jTEXznP48GFFR0crMDBQ3t7eql+/vjZv3mxbbozRyy+/rEqVKsnb21uRkZHas2ePbXlmZqYee+wx+fn56fbbb9f3339vt/23335bI0eOdNrnKa6ys7P10ksvKSIiQt7e3qpevbpeffVVu+/dYi4Kzw8//KAuXbqocuXKslgsWrhwod3yG/3upct/L/Xp00d+fn4KCAjQwIEDde7cOdvyAwcOqEWLFipTpoxatGihAwcO2L2/c+fO+uqrrxwP79QvICkE8+bNMx4eHubjjz82v/32mxk0aJAJCAgwycnJZtGiRSY4ONhs2rTJxMXFGS8vL3PixAljjDEpKSmmZs2a5uDBgy7+BMVThw4dTExMjNmxY4fZunWr6dSpkwkLCzPnzp2zrTN06FATGhpqVq5caTZv3myaNWtm7r33Xtvy0aNHm5YtW5rExETz9NNPm0aNGtmWxcfHm0aNGplLly459XMVdxs3bjTh4eGmQYMGZtSoUbZx5sI5Tp8+bapWrWr69etnNmzYYPbt22eWL19u9u7da1vnjTfeMP7+/mbhwoVm27Zt5sEHHzQREREmIyPDGGPMBx98YOrUqWN27Nhh3n77bRMUFGRycnKMMcbs27fP1KxZ06Smprrk8xUnr732mgkMDDRLliwx+/fvN/Pnzze+vr7m/ffft63DXBSeb7/91rzwwgtmwYIFRpL5+uuv7Zbf6HdvjDEPPPCAadiwofn555/Njz/+aGrUqGF69+5tW96tWzfzyCOPmN9//9307NnTdO/e3bZs3rx5pkuXLvnKXuyLUdOmTc3w4cNtr7Ozs03lypXNpEmTzJtvvml69eplW1axYkWzceNGY4wxgwcPNpMnT3Z63pLq+PHjRpJZu3atMeZy8XR3dzfz58+3rbNr1y4jycTHxxtjjOnYsaOZPn26McaYnTt3Gh8fH2OMMRcvXjQNGzY0mzZtcvKnKN7Onj1ratasaVasWGFatmxpK0bMhfM8//zz5v7777/m8pycHBMSEmLefvtt21hKSorx9PQ0c+fONcYYM2zYMPP8888bY4xJT083kszx48eNMZf/g2TBggWF+AlKjqioKDNgwAC7sW7dupk+ffoYY5gLZ/prMcrL737nzp1Gkt3fPUuXLjUWi8UcPnzYGGNMnTp1zNKlS40xl4tY3bp1jTHGnDlzxtSoUcMkJSXlK2+xPpV28eJFJSQkKDIy0jbm5uamyMhIxcfHq2HDhtq8ebPOnDmjhIQEZWRkqEaNGlq3bp22bNmip556yoXpS5bU1FRJsn3ZX0JCgrKysuzmpnbt2goLC1N8fLwkqWHDhlq1apUuXbqk5cuXq0GDBpKkt956S61atVLjxo2d/CmKt+HDhysqKsrudy4xF860aNEiNW7cWD169FDFihV111136aOPPrIt379/v44dO2Y3F/7+/rrnnnvs5mLdunXKyMjQ8uXLValSJVWoUEGxsbHy8vLSww8/7PTPVRzde++9WrlypX7//XdJ0rZt27Ru3Tp17NhREnPhSnn53cfHxysgIMDu757IyEi5ublpw4YNki7Pz/fff6+cnBx99913tr+3xowZo+HDhys0NDR/AfNVp4qIw4cPG0nmp59+shsfM2aMadq0qTHGmHHjxpnq1aubO+64wyxYsMBkZmaaO+64w2zevNlMmTLF3H777ebee+81O3bscMVHKBGys7NNVFSUue+++2xjsbGxxsPDI9e6TZo0Mc8995wx5vJ/IfTu3duEhYWZFi1amN9++838/vvvpmbNmubkyZNmyJAhJiIiwvTo0cOkpKQ47fMUR3PnzjV33HGH7TD0/x4xYi6cx9PT03h6epqxY8eaLVu2mJkzZxovLy8zZ84cY4wx69evN5LMkSNH7N7Xo0cP07NnT2PM5aN0Tz75pAkPDzeNGzc2P/74ozl16pSpVq2aSUpKMi+88IKpXr26ad++vfnzzz+d/hmLi+zsbPP8888bi8ViSpcubSwWi3n99ddty5kL59Ffjhjl5Xf/2muvmdtvvz3XtoKCgsy0adOMMcb8+eefJioqyoSGhpqoqCjz559/mrVr15rGjRubU6dOmR49epiIiAgzZMgQk5mZmee8xeIrQW7G+PHjNX78eNvrCRMmKDIyUu7u7po4caK2b9+uJUuW6PHHH1dCQoLrghZjw4cP144dO7Ru3TqH3ufv76+4uDi7sTZt2ujtt99WbGys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PClJSk1N1QsvvKCpU6fm2k758uUVFBSU598JgKKDYgTgus6dO6fPP/9cw4YNU1RUlObMmXNT2wsICFBISIjuuOMOTZ8+XRkZGVqxYsU117/77rsVGhqqBQsW2MYWLFigsLAw3XXXXXbrDh8+XB4eHvruu+/UsmVLhYWFqWPHjvr+++91+PBhvfDCCw5l3bVrl1q1aqXGjRurd+/e8vPz0/79+yVJzz33nIYNG5arnAEo3ihGAK7riy++UO3atVWrVi1FR0fr448/VkF9xaK3t7ck6eLFi9ddb8CAAYqJibG9/vjjj9W/f3+7dU6fPq3ly5frySeftG33ipCQEPXp00eff/65Q9kbNmyozZs368yZM0pISFBGRoZq1KihdevWacuWLXrqqafyvC0AxQPFCMB1zZ49W9HR0ZKkBx54QKmpqVq7du1Nbzc9PV0vvviiSpUqpZYtW1533ejoaK1bt04HDx7UwYMHtX79elumK/bs2SNjjOrUqXPVbdSpU0dnzpzRiRMn8pyxQ4cOio6OVpMmTdSvXz998sknKlOmjIYNG6YZM2Zo+vTpqlWrlu677z799ttved4ugKKrtKsDACi6EhMTtXHjRn399deSLl+D06tXL82ePVutWrXK1zZ79+6tUqVKKSMjQ0FBQZo9e7YaNGhw3fcEBQXZTuMZYxQVFaUKFSpcdd2COpp1xfjx4zV+/Hjb6wkTJigyMlLu7u6aOHGitm/friVLlujxxx9XQkJCge4bgPNRjABc0+zZs3Xp0iVVrlzZNmaMkaenpz788EP5+/vLz89P0uWLkQMCAuzen5KSIn9/f7uxd999V5GRkfL393foAuUBAwZoxIgRknTVC55r1Kghi8WiXbt26eGHH861fNeuXSpXrtxNXRS9e/duffbZZ/rll1/08ccfq0WLFgoKClLPnj01YMAAnT17VmXLls339gG4HqfSAFzVpUuX9Omnn+qdd97R1q1bbT/btm1T5cqVNXfuXElSzZo15ebmlutoyb59+5Samqrbb7/dbjwkJEQ1atRwuKA88MADunjxorKystShQ4dcywMDA9WuXTtNmzbN7g42STp27JhiY2PVq1cvWSwWh/Z7hTFGQ4YM0eTJk+Xr66vs7GxlZWVJku1/s7Oz87VtAEUHR4wAXNWSJUt05swZDRw4MNdRn+7du2v27NkaOnSoypYtqyeeeELPPvusSpcurfr16+vQoUN6/vnn1axZM917770FkqdUqVLatWuX7c9X8+GHH+ree+9Vhw4dNHHiREVEROi3337TmDFjdNttt+m1117L9/7//e9/KygoyPbcovvuu0/jx4/Xzz//rKVLl6pu3bq5jpgBKH44YgTgqmbPnm075fVX3bt31+bNm/Xrr79Kkt5//3317dtXzz//vOrVq6d+/fqpQYMGWrx4cb6P0FyNn5+f7dTd1dSsWVObN29WtWrV1LNnT1WvXl2DBw9W69atFR8fr/Lly+drv8nJyXrttdf0wQcf2MaaNm2qZ599VlFRUfriiy/s7poDUHxZTEFfqQgAxdD48eO1cOHCAvsKjwMHDigiIkK//PKL7rzzzgLZJoDCxxEjALDavn27fH19NW3atJvaTseOHVWvXr0CSgXAmThiBAC6/IDIK18ZEhQUdNVTiHl1+PBh2wXgYWFh8vDwKJCMAAofxQgAAMCKU2kAAABWFCMAAAArihEAAIAVxQgAAMCKYgQAAGBFMQIAALCiGAEAAFhRjAAAAKwoRgAAAFb/D60PVy7Nlq5qAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# the normal images have `nan` values because\n", "# recall is not defined for them so we ignore them\n", @@ -321,9 +351,21 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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RERERERERo0dYyIiIiIiIjJq7BgTERERERGRUWPHmIiIiIiIiIwaO8ZERERERERk1NgxJiIiIiIiIqPGjjEREREREREZNXaMiYiIiIiIyKixY0xERERERERGjR1jIiIiIiIiMmrsGBMREREREZFRY8eYiIiIiIiIjBo7xkRERERERGTU2DEmIiIiIiIio8aOMRERERERERk1doyJiIiIiIjIqLFjTEREREREREaNHWMqlZRKJerUqYNFixaVdChUQNOnT0fTpk1LOgwiyevSpQtGjBhR0mGQATRr1gxTp04t6TCIiIwSO8YGsGHDBshkMvzzzz8lHUqxi42NxahRo1ChQgVYWVmhcuXKeP/999XabN++HYGBgfDy8oKlpSUqVqyIvn374sqVK3o/z6ZNmxAdHY0xY8aold+6dQvBwcGoWLEibGxsULNmTcyfPx+pqalq7eRyOebNm4cqVarA0tISVapUwcKFC5GVlaXW7tGjR+jatSscHBzg7++PXbt2acTy22+/wc3NDYmJiXrHn23q1KmQyWQYMGCA1vojR45AJpNh69atWuvHjBkDmUymVla5cmXIZDLVj5ubG1q1aoXt27ertWvbti3q1KmjdduOHTtqfb5169ap9qvt9/n48ePo1asX3N3dYWlpicqVK2PUqFF48OCBRtvx48fj4sWL2Llzp9bnotLHGHJddHQ05s2bhyZNmsDZ2RnlypVD27ZtceDAAY22Bw8exLBhw1C9enXY2NigSpUqGD58OJ48eaL38x0/fhz79+/HtGnT1MoXLVqEHj16wN3dHTKZDHPnztW5j0ePHqF///5wcnKCg4MDevbsibt372pt+/3336NWrVqwsrJCtWrV8NVXX2mN6Y033oC9vT3atm2L69eva7QZO3YsAgMD9X6dOTVp0gQymQxr1qzRWj937lzIZDI8f/5ca32dOnXQtm1b1eN79+6p5URTU1NUqlQJvXr1woULF9S2lclkan9Xcm67cOFCrc/3zjvvQCaTwc7OTqNOCIGff/4ZrVu3hpOTE2xsbFC3bl3Mnz8fKSkpGu2nTZuGVatWISYmRutzERFR8WHHmIpMdHQ0GjdujL179+KDDz7A6tWrMXz4cDx79kyt3eXLl+Hs7Ixx48Zh9erV+PDDD3H+/Hk0adIEFy9e1Ou5li9fjuDgYDg6Oqo9f5MmTRAZGYkxY8YgNDQUzZs3x5w5czBw4EC17d99913MmzcP7du3x8qVK9G6dWvMnj0b//vf/9TaDR48GHfv3sXSpUvxxhtvoF+/frh3756qPj09HZMnT8bChQvVYtGHEAKbNm1C5cqVsWvXLrx8+TJf2+cmICAAP//8M37++WdMnjwZjx8/Ru/evbF27do8t7WyssLhw4e1npiFhYXByspK63ZfffUVWrVqhcuXL+Ojjz7C6tWr0bdvX2zevBn16tXDiRMn1Np7eHigZ8+eWLFiRcFeJFEJ+P3337F06VJUrVoVCxcuxOzZs/Hy5Ut06tQJ69evV2s7bdo0HDlyBL169cKXX36J4OBg/Prrr2jQoIHeHZ/ly5ejQ4cOqFq1qlr5rFmzcObMGTRo0CDX7ZOTk9GuXTscPXoUH3/8MebNm4fz58+jTZs2iIuLU2v7zTffYPjw4ahduza++uorNG/eHGPHjsXSpUtVbRITE9GzZ094eXlh+fLlSE9PR58+faBQKFRt/v33X6xbtw5ffPGFXq8xp1u3buHMmTOoXLkywsLC8r19bgYOHIiff/4ZP/zwA0JCQnDo0CE0a9ZMo3OsjZWVFTZt2qRRnpKSgt9//11rXlQoFAgODsagQYMAvOrQh4aGIiAgAPPmzUOzZs0QGxurtk3Pnj3h4OCA1atXF+xFEhFRwQkqduvXrxcAxJkzZ0o6lGIVFBQkfH19xfPnz/O9bUxMjDAzMxOjRo3Ks+25c+cEAHHgwAG18kWLFgkA4sqVK2rlgwYNEgBEfHy8EEKI06dPCwBi9uzZau0mTZokZDKZuHjxohBCiNTUVCGTycTRo0eFEEIolUrh6+sr1q5dq9pmwYIFIiAgQCgUiny/5kOHDgkA4tChQ8Lc3Fxs2LBBo83hw4cFALFlyxat+xg9erR4/WPs4+Mjunbtqlb25MkTYWtrK6pXr64qa9Omjahdu7bGth06dBAODg4iNDRUrS46OlqYmJiIPn36aPw+//3338LExES0atVKpKSkqG13+/Zt4e7uLjw9PVXHINvWrVuFTCYTd+7c0fr6qHQxhlx35coV8ezZM7Wy9PR0UbNmTVGxYkW18qNHj2rkhqNHjwoAYubMmXk+V2xsrDAzMxPfffedRl1UVJQQQohnz54JAGLOnDla97F06VIBQJw+fVpVdu3aNWFqaipmzJihKktNTRWurq4aueOdd94Rtra2qs/u3r17hY2NjUhLS1PFAUBcv35dtU3Hjh3FRx99lOfr0+aTTz4Rbm5uYtu2bUImk6leZ05z5swRADSOQ7batWuLNm3aqB5nx7h8+XK1djt37hQAxMiRI1VlAMTo0aM1tu3du7cAIC5cuKC2j7CwMGFubi66d+8ubG1t1eoWL14sAIjJkydrxLhz505hYmIi3nrrLY26MWPGCB8fH6FUKrW+PiIiKh68YlxChgwZAjs7Ozx48ADdunWDnZ0dKlSogFWrVgF4dVW1ffv2sLW1hY+PD8LDw9W2j4+Px+TJk1G3bl3Y2dnBwcEBQUFBWq+43r9/Hz169ICtrS3c3NwwYcIE/Pnnn5DJZDhy5Iha21OnTuGtt96Co6MjbGxs0KZNGxw/fjzP13P9+nXs3bsXU6ZMgaurK9LT0yGXy/V+P9zc3GBjY4OEhIQ82+7YsQMWFhZo3bq1WnlSUhIAwN3dXa3c09MTJiYmsLCwAAD89ddfAIDg4GC1dsHBwRBCYPPmzQBeXQ0WQsDZ2RnAqyF2Tk5OqmHZjx49wqeffoqVK1fCxCT/H6WwsDD4+/ujXbt26NixY5FfHcnJw8MDtWrVQlRUVJ5trays0Lt3b43fuU2bNsHZ2Vnr8MgFCxZAJpPhxx9/hI2NjVqdn58fli1bhidPnuCbb75Rq8sesv3777/n9yVRKVHWcl3t2rVRrlw5tTJLS0t06dIFDx8+VBv50bp1a43c0Lp1a7i4uODatWt5Ptfu3buRlZWl9daGypUr57k9AGzduhWNGzdG48aNVWU1a9ZEhw4d8Ouvv6rKDh8+jLi4OI1RM6NHj0ZKSgp2794NAEhLS4OVlZXqCqmLiwsAqPLijh07cP78ecybN0+v+F4XHh6Ovn37olu3bnB0dNT4fShK7du3BwC98mLz5s3h6+urEU9YWBjeeust1fuQLS0tDcuXL0f16tWxZMkSjf11794dgwcPxr59+xAZGalW16lTJ9y/f1+vK9lERFR02DEuQQqFAkFBQfD29sayZctQuXJljBkzBhs2bMBbb72FRo0aYenSpbC3t8egQYPU/njfvXsXO3bsQLdu3fD5559jypQpuHz5Mtq0aYPHjx+r2qWkpKB9+/Y4cOAAxo4di5kzZ+LEiRMa96sBwKFDh9C6dWskJSVhzpw5WLx4MRISEtC+fXucPn0619eSfX+du7s7OnToAGtra1hbWyMoKEht6HFOCQkJePbsGS5fvozhw4cjKSkJHTp0yPN9O3HiBOrUqQNzc3O18ux7yt5//31cuHAB0dHR2Lx5M9asWYOxY8fC1tYWAJCRkQEAsLa2Vts+u0N39uxZAICzszP8/PywePFiREVFISwsDBcuXECTJk0AvLo/OCgoSKODro+MjAxs27ZNNcR74MCBOHToULHdVyaXyxEdHQ1XV1e92oeEhOD06dO4c+eOqiz7hPX19z01NRUHDx5Eq1at4Ovrq3V/AwYMgKWlJf744w+1ckdHR/j5+enVIaHSqyzlOl1iYmJgY2Oj8cXQ65KTk5GcnKzRudbmxIkTcHV1hY+PT4FiUiqVuHTpEho1aqRR16RJE9y5c0fVkT9//jwAaLRt2LAhTExMVPUNGjRAYmIiPvvsM9y/fx9z5syBo6MjatSogYyMDEyaNAnz5s1TfaGYH6dOncLt27cxcOBAWFhYoHfv3sX6hWF2ftM3Lw4cOBC//PILhBAAgOfPn2P//v0ICQnRaPv333/jxYsXCAkJgZmZmdb9ZQ+xfj0vNmzYEACYF4mIDK2Er1gbBW3DCwcPHiwAiMWLF6vKXrx4IaytrYVMJhO//PKLqvz69esaQ+XS09M1huhFRUUJS0tLMX/+fFXZZ599JgCIHTt2qMrS0tJEzZo1BQBx+PBhIcSrYcLVqlUTgYGBasO3UlNTha+vr+jUqVOur3Hs2LECgHB1dRVvvfWW2Lx5s1i+fLmws7MTfn5+GsNrhRCiRo0aAoAAIOzs7MSsWbP0GpJcsWJF0adPH611CxYsENbW1qr9QsuQxW3btgkA4ueff1YrX7t2rQAg6tSpoyo7ePCgcHZ2Vu1r/PjxQgghjh8/LqytrcW9e/fyjFebrVu3CgDi1q1bQgghkpKShJWVlfjiiy/U2hV0KHXnzp3Fs2fPxLNnz8TFixdFcHCwAKA2vFHXUOquXbuKrKws4eHhIRYsWCCEEOLq1asCgDh69KjG7/OFCxcEADFu3LhcX3O9evWEi4uLRnnnzp1FrVq1ct2WSgdjyHXa3Lp1S1hZWYn33nsvz7YLFiwQAMTBgwfzbNuyZUvRsGHDXNvkNpQ6uy7n+5Rt1apVakOgR48eLUxNTbU+R/ny5UVwcLDq8fLly4WpqakAIKytrUV4eLgQ4tXtLHXq1BFZWVl5vjZtxowZI7y9vVXHZf/+/QKAOH/+vFq7gg6lnjdvnnj27JmIiYkRR44cEQ0aNBAAxLZt21RtoWMo9fLly8WVK1cEAPHXX38JIV69h3Z2diIlJUUMHjxYbSh1aGioACC2b9+u8/XGx8erhmm/zsLCQnz44Yc6tyUioqLHK8YlbPjw4ar/Ozk5oUaNGrC1tUX//v1V5TVq1ICTk5PaLKKWlpaqIXoKhQJxcXGws7NDjRo1cO7cOVW7ffv2oUKFCujRo4eqzMrKSmPpjwsXLuDWrVsICQlBXFwcnj9/jufPnyMlJQUdOnTAsWPHoFQqdb6O5ORkAK+G7O7evRv9+/fH5MmTsW7dOty5c0frcLj169dj3759WL16NWrVqoW0tDS1CVx0iYuL03k1onLlymjdujW+/fZbbNu2DcOGDcPixYvx9ddfq9p06dIFPj4+mDx5Mn777Tfcv38fv/76K2bOnAkzMzOkpaWp2rZv3x4PHjxAZGQkHjx4gC+++AJKpRJjx47FpEmT4OPjgzVr1qBmzZqoUaOGXpNbAa+G3zVq1Eg1oY69vT26du1aZFdH9u/fj/Lly6N8+fKoX78+tmzZgvfee09tEp3cmJqaon///qrJZsLCwuDt7Y1WrVpptM2+4mRvb5/rPu3t7VXD3XNydnbWObsslR1lJde9LjU1Ff369YO1tTU+/fTTXNseO3YM8+bNQ//+/VXDeHOTW67TR3Yus7S01KjLHgqd3SYtLU11u4m2tjnz4uTJk/Ho0SOcPHkSjx49wsCBA/H48WMsWbIEoaGhyMrKwkcffYRKlSqhSZMmel35zMrKwubNmzFgwADVTPvt27eHm5tbkeXFOXPmoHz58vDw8EDbtm1x584dLF26FL1799Zr+9q1a6NevXqqvBgeHo6ePXtqHSWgT17MrmNeJCKSBu3je8ggrKysUL58ebUyR0dHVKxYUWMJHkdHR7x48UL1WKlUYuXKlVi9ejWioqLUOpQ5h4Xdv38ffn5+Gvt7fYbTW7duAXg1C7MuiYmJOk/Ssocl9+/fX+2eun79+uG9997DiRMn1E6MgVf3bGULDg5GrVq1AECvWYrFf0PZcvrll18wcuRI3Lx5ExUrVgQA9O7dG0qlEtOmTcPAgQPh6uoKKysrVee9T58+AF6dOC5btgyLFi3SWHLDzs5Obb3d9evXIyYmBtOnT8eBAwcwZcoUbNy4ETKZDCEhIahRowbatWunM/aEhATs2bMHY8aMwe3bt1XlLVq0wLZt23Dz5k1Ur149z/cgN02bNsXChQshk8lgY2ODWrVqwcnJKV/7CAkJwZdffomLFy8iPDwcwcHBGr9HwP+f3OU1q/bLly+1niQKIbTul8qOspTrcsqedfjq1avYu3cvvLy8dLa9fv06evXqhTp16uC7777Lc9/ZtOU6fWXn5ezbR3JKT09Xa2NtbY3MzEyt+0lPT9e49cTd3V1tPodp06ahQ4cO6NChA2bNmoWDBw9i8+bNOHz4MLp27Yp79+7lmoP279+PZ8+eoUmTJmp5sV27dti0aROWLl2ar7kctOWUkSNHol+/fjAxMYGTkxNq166t9UuD3ISEhOCzzz7DhAkTcOLECXz88cda2+mTF3PrPDMvEhEZHjvGJcjU1DRf5TlPkBYvXozZs2dj2LBhWLBgAVxcXGBiYoLx48fn62pHtuxtli9fjoCAAK1ttK3RmC37hPD1ia9MTU3h6uqqdqKrjbOzM9q3b4+wsLA8O8a69rd69Wo0aNBA1SnO1qNHD2zYsAHnz59XTWJTu3ZtXLlyBVevXsWLFy/g7+8Pa2trTJgwAW3atNH53ElJSZg5cyZWrFgBW1tbbNq0CX379sXbb78NAOjbty/CwsJy7Rhv2bIFGRkZ+Oyzz/DZZ59p1IeFhakmrnn9qs7rUlNTtS4TUq5cOZ1rEeuradOm8PPzw/jx4xEVFaX1PjrgVcfDzMwMly5d0rmvjIwM3LhxQ+u9ji9evNDrfksqvcpSrstpxIgR+OOPPxAWFpbrFeDo6Gh07twZjo6O2LNnT56jK7Lpkztz4+LiAktLS63rJmeXZeduT09PKBQKPH36FG5ubqp2mZmZiIuLy7XTHxkZia1bt6rWot+0aRNmz56N5s2bo3nz5vjmm2/wxx9/4N1339W5j+yrwjlHEOR09OhRVV4taF6sVq1aofPiwIEDMWPGDIwYMQKurq7o3Lmz1nbZX/ReunRJ9ffhddk509/fX6MuISGBeZGIyMDYMS6ltm7dinbt2uH7779XK3/9j6mPjw+uXr2q8e1zzm/kgVczBwOAg4NDgU4csicLefTokVp5ZmYmnj9/rnG1SJu0tDQkJibm2a5mzZpaZxGNjY3VepUne3bsrKwstXKZTIbatWurHu/ZswdKpTLX1z9//nz4+vrinXfeAQA8fvxYbR1RLy+vPGcSDQsLQ506dTBnzhyNum+++Qbh4eGqjnH2pDs3btzQuq8bN24UeGIefQwcOBALFy5ErVq1dHYibG1t0a5dOxw6dAj379/XGs+vv/6KjIwMdOvWTaMuKioK9evXL+rQqYyQWq7LNmXKFKxfvx6hoaEa66TnFBcXh86dOyMjIwMHDx6Ep6en3s9Rs2ZNbNu2rcAxmpiYoG7duvjnn3806k6dOoUqVaqoOunZn+9//vkHXbp0UbX7559/oFQqdX7+hRAYO3Ysxo0bp3pvHz9+rNaR9vLy0vjbkFP2WsADBgxA3759NerHjh2r9oVjzrzo7e2t1jY1NVX1RURxqFSpElq0aIEjR47gww8/1DmxVsuWLeHk5ITw8HDMnDlT65dAP/30EwBo5MVHjx4hMzNT1bkmIiLD4D3GpZSpqanGELstW7ZonHwEBgbi0aNH2Llzp6osPT0d69atU2vXsGFD+Pn5YcWKFar7hXN69uxZrvG0bdtWdS9Y9hA9ANiwYQMUCgU6deqkKnv69KnG9vfu3cPBgwe1XlF8XfPmzXHlyhWN4YHVq1fH+fPncfPmTbXyTZs2wcTEBPXq1dO5z7S0NMyePRuenp46T3Jv3ryJr7/+GitXrlSdeLu7u+P69euqNteuXYOHh4fO54mOjsaxY8fQv39/9O3bV+Nn6NChuH37Nk6dOgXg1VWcgIAAbNy4UWMpq7NnzyIyMhJBQUE6n6+whg8fjjlz5mi9sp3TrFmzIITAkCFDNK7iREVFYerUqfD09MSoUaPU6hITE3Hnzh28+eabRR47lQ1Sy3XAq6vNK1aswMcff4xx48bpbJeSkoIuXbrg0aNH2LNnD6pVq5bnvnNq3rw5Xrx4oXbPdX717dsXZ86cUesc37hxA4cOHUK/fv1UZe3bt4eLiwvWrFmjtv2aNWtgY2ODrl27at3/hg0bEB0djZkzZ6rKcuZFuVyO27dv55oXt2/fjpSUFIwePVprXuzWrRu2bdumyvkdOnSAhYUF1qxZozFq4Ntvv0VWVlax5sWFCxdizpw5+Oijj3S2sbGxweTJk3Hjxg219ybb7t27sWHDBgQGBqJZs2ZqddkrIzAvEhEZFq8Yl1LdunXD/PnzMXToULz55pu4fPkywsLCUKVKFbV2o0aNwtdff42BAwdi3Lhx8PT0RFhYmGqYWXYHz8TEBN999x2CgoJQu3ZtDB06FBUqVMCjR49w+PBhODg4YNeuXTrjsbS0xPLlyzF48GC0bt0a7733Hh48eICVK1eiVatWapOb1K1bFx06dEBAQACcnZ1x69YtfP/995DL5XlOXgMAPXv2xIIFC3D06FG1qwJTpkzB3r170apVK4wZMwaurq74448/sHfvXgwfPlztCkb//v3h5eUFf39/JCUl4YcffsDdu3exe/duncMcJ0yYgAEDBqiWawJenXT27NlTdZ/Zrl27NJbeyCk8PBxCCLUJgnLq0qULzMzMEBYWprqv+fPPP0dgYCACAgIwZMgQeHl54dq1a/j222/h6emJGTNm5PmeFZSPjw/mzp2bZ7vWrVtjxYoVmDhxIurVq4chQ4bA09MT169fx7p166BUKrFnzx6NK/oHDhyAEAI9e/YspldApZ3Uct327dsxdepUVKtWDbVq1cLGjRvV6jt16qS6peSdd97B6dOnMWzYMFy7dk1t7WI7OzudQ2yzde3aFWZmZjhw4ABGjhypVvfzzz/j/v37qvWDjx07hoULFwIA3nvvPdVV1f/9739Yt24dunbtismTJ8Pc3Byff/453N3dMWnSJNX+rK2tsWDBAowePRr9+vVDYGAg/vrrL2zcuBGLFi3SWKcXeHWP7Mcff4zFixer5c2+ffti/vz5UCqVOH78ONLT09WuQr8uLCwMrq6uOjuCPXr0wLp167B792707t0bbm5u+OSTTzBr1iy0bt0aPXr0gI2NDU6cOIFNmzahc+fO6N69e67vbWG0adMm11tusk2fPh3nz5/H0qVLcfLkSfTp0wfW1tb4+++/sXHjRtSqVQs//vijxnYRERGoVKmS2mgkIiIygJKYCtvY6FrCJOfSDtm0LaEjxP8vo5MtPT1dTJo0SXh6egpra2vRokULcfLkSdGmTRu1ZSqEEOLu3buia9euwtraWpQvX15MmjRJtWRRZGSkWtvz58+L3r17C1dXV2FpaSl8fHxE//799VpaRAghNm3aJOrXry8sLS2Fu7u7GDNmjEhKSlJrM2fOHNGoUSPh7OwszMzMhJeXlwgODhaXLl3S6zmEeLX0z/vvv69RfurUKREUFCQ8PDyEubm5qF69uli0aJGQy+Vq7ZYuXSpq1qwprKyshLOzs+jRo4fGkiA57d69W9jZ2YnHjx9r1C1ZskR4eXkJT09PsXTp0lzjrlu3rqhUqVKubdq2bSvc3NzUYo6MjBTdunVTvWcVKlQQw4cPFw8fPtTY/vXfFV1yW64pN9p+n7MdO3ZM9OzZU5QrV06Ym5uLSpUqiREjRuhc1mrAgAGiZcuWecZKpYMx5LrspYJ0/WQvC5X9WnS18/HxyfV5svXo0UN06NBBo7xNmzZ6xSCEENHR0aJv377CwcFB2NnZiW7duqmWinvdt99+K2rUqCEsLCyEn5+f+OKLL9SWtcppypQpolGjRhr1ycnJYtCgQcLJyUnUrFlT7Nu3T+fri42NFWZmZrkudZWamipsbGxEr1691Mo3btwomjVrJmxtbYWlpaWoWbOmmDdvnkhPT1drl3PJpbwgl+WacqPr91yhUIj169eLFi1aCAcHB2FlZSVq164t5s2bJ5KTk7W29/T0FLNmzcozViIiKloyIQox5SWVWqGhoZgwYQIePnyIChUqlHQ4+fbzzz9j9OjRePDgQb5nWyZpiImJga+vL3755RdeMaZiU9pz3V9//YW2bdvi+vXr+R6KTaXPjh07EBISgjt37uTrfnQiIio8doyNQFpamtpSG+np6WjQoAEUCoXG/bilhVKpRL169TBw4ECt92+R9E2fPh2HDh3C6dOnSzoUKiPKYq4DgKCgIFSsWFHjfmkqe5o3b45WrVph2bJlJR0KEZHRYcfYCAQFBaFSpUoICAhAYmIiNm7ciH///RdhYWE6l+AhIiptmOuIiIiooDj5lhEIDAzEd999h7CwMCgUCvj7++OXX37BgAEDSjo0IqIiw1xHREREBcUrxkRERERERGTUuI4xERERERERGTUOpcariZweP34Me3t71VqXRFR2CCHw8uVLeHl5wcSE3wfmxPxHVPYxBxIR5Y0dYwCPHz+Gt7d3SYdBRMUsOjoaFStWLOkwJIX5j8h4MAcSEelWoh3jY8eOYfny5Th79iyePHmC7du34+2331bVCyEwZ84crFu3DgkJCWjRogXWrFmjtpZjfHw8PvroI+zatQsmJibo06cPVq5cCTs7O73jsLe3B/DqD4aDgwPkcjn279+Pzp07w9zcvMheb1GRx8ux/+R+dE7oDHNLCcaXIcd+p/3o3LwzzF0kGJ/Uj6/E4wOkH+Pr8SUlJcHb21v1WZcKKeTA1/MfUAqOL3NgoUj++DK+QtEWn1RzIBGRlJRoxzglJQX169fHsGHD0Lt3b436ZcuW4csvv8SPP/4IX19fzJ49G4GBgbh69SqsrKwAAO+88w6ePHmCiIgIyOVyDB06FCNHjkR4eLjecWQPH3RwcFB1jG1sbODg4CDZP3o2NjZwkDnA3FaC8aXIYWNtAwd7B5g7FCy+jCwFbj9NhlL56vGtpy9x91kKLM1M8N3fUfB2sYajtTmO344rYJQOmHExsoDbGoLU4wOkH+Or+O592lVVIrWhwlLIga/nPwCSyIFyhRKXHibi2csMjTrFyyxcSbbFkYS7+DPxKTwsrCAXSsTJM0sgUh3ul47Ph3QxvsJ5Fd+S3nUxsEklVanUciARkZSUaMc4KCgIQUFBWuuEEAgNDcWsWbPQs2dPAMBPP/0Ed3d37NixA8HBwbh27Rr27duHM2fOoFGjRgCAr776Cl26dMGKFSvg5eWldd8ZGRnIyPj/k62kpCQAr04Gs3+yH0uRPOu/+CAHJDinuBz/xZclx3//RfSLVBy+8Rzmppp/lF+mZ+HLQ3eQkaWEqYkMCmXeLyrxkTSPDUlPzs+01JREDswr/2X/P+e/BaFUClyLeYmYpHSdbXZdisHuyzGqx2Ymr/JDlh45ADAF8BQAEJOp+zmIjJlCoZB0DiQikhLJ3mMcFRWFmJgYdOzYUVXm6OiIpk2b4uTJkwgODsbJkyfh5OSkOiEEgI4dO8LExASnTp1Cr169tO57yZIlmDdvnkb5/v37YWNjo3ocERFRhK+o6EVYR0iyYwzrV//M/f0AzjwzQdRL/b+h1qdTTJQfe/bsQWpqakmHkW/FlQN15b+ZP0bA0tomR4kMh348oHr0OFWGxykyVLD9/8/o6WevJvExN1H/3MqVBbsqpV+HmIj0dfnyZdg/vVQqcyARkaFJtmMcE/PqKoK7u7taubu7u6ouJiYGbm5uavVmZmZwcXFRtdFmxowZmDhxoupx9r03nTt3Vg2ljoiIQKdOnaQ5lDpejojICHRK6wRzG2nFJ4TAF3dvYU3svZIOhQgA0KVLF9VV0dKkuHKgrvy3J9oUJpamecb1KFWz01vQjjARFa+6deuiS6OKpTIH5mbWrFmwsrJSzbA9ePBgPHjwANu3b4eTkxOEEOjTpw9q1qypaqtUKuHr64t33nmnSGfmvnTpEtauXYvFixfDycmpyPabm59++gm3bt1Cz5491b4YPXbsGGxsbNTK8uv+/fs4e/as1tt7isOlS5ewbds2VKxYESNGjMi17cmTJ1XHGACqVKmC4OBgrW2joqKwadMmPHnyBMuXL1fdflQU4uLiMH/+fLi7uyMrKwstWrRAhw4dCrQvXe939jwBr9u4cSMCAwNRvnz5Aj2fNtm/T5aWlrCzs8OQIUPy/F0+efIk6tSpU+h5C86cOYPk5GS0a9dOLRZr61dX2dq1a4fq1atrfb9zi/vnn39G586dNc6h8iLZjnFxsrS0hKWlpUa5ubm5Wkf49ceS8d9RM4c5zGXSiG9f3BN8cP1cSYeBSi42ebYRQiA1NRU2NjaSvN9K6vEB0o8xZ3yS/RyXEF35r6yxEIB1CXXYZTLA1FoJGysbyLTcPlLSStPnl/HlX874HGwsy2wOnDx5slpn58GDB2jatCn69OmDx48fY+3atZg/f76qrYWFBVauXIlz584VquP4umvXrqFy5cq4fv06mjVrVmT7zUv//v1Rt25dtbLWrVsXer8+Pj7w8fEp9H70Va9ePVhZWeHo0aN6tc8+xnnx9fXFxx9/jFmzZhU2RK08PT0xffp0pKenY8mSJahfvz7KlSuX7/3oer8jIiK0dozffffdAsWbl+zfp507d2LPnj0ICQnJtX1kZCR8fHwK3TE+cuQIxo4dqzWWbHFxcVrf79zibtmyJQ4cOIB33nknX/FItmPs4eEBAIiNjYWnp6eqPDY2FgEBAao2T58+VdsuKysL8fHxqu2p+ESlpaDduSPF/jxBdTxgYiJDQmomUjIU6NeoIhRKgVqeDvBwePVH0cPRCuam+n0DLJfLsWfPHnTp0kqSJwtSjw+Qfow54yutjDUHWpmbwMXGAgCgEAKxSRloWbUc/L0cVG0UaQpEPYzCy/vmeC4T8JWboqrcBDZCBhMApijZzorMTKBCi2R0adkK5q7S/nxI/fPL+PJP6vEZgpeXFzIzM6HMnsETgImJCXx9ffF/7d15XJTV/sDxz8yw7w4Kgoq7Iiqi4m5muZSE19K2e13LTG9qLqkpamYadrWuZum9aIvaz6W8lpVLqbnlFS23XNg0cU8QkB1kYOb3BzHXYR1glAf4vl8vXjrPPHOe73Oe4TDfOec55+7du0B+r7O/vz8RERH4+vqa9DyuW7eOgIAAY1tbmpiYGIYMGcLJkyfp3r07iYmJfPbZZ8ycOROA3bt3Y29vT9++ffnxxx85fvw4DRs2JCIigvfff99i5xwWFkZsbCxPPvkkffv2BfJ79U6fPk12djbJyclMmDChxPl3CmI9duyYSe/tjh07uHz5Mmlpafj4+HDjxg1mzZpFUlIS69atIzc3Fzs7O0aMGEG9evVISkrik08+wWAw4OzsjI+PD8HBwdy6dYstW7Zw7949vLy8GDlyJBpN2aOUzPH9999z7tw5VCoVAQEBJc7dAaDX61m3bh23bt0C4IUXXqBly5ZkZmayceNGEhMTsbW1ZcyYMdSpU6fMY9vZ2dGoUSMSExNxc3Pjiy++4ObNmzg4ODBmzBi0Wi3JycmsXbsWnU6HWq3m9ddfx8HBodj6PnXqFD/88ANZWVmEhobi6urKxIkTSU9PZ+XKldy5c4eZM2car+PChQt58803sbOz4/fff2f//v2MGzeuwvXdvHlzDh48CMCZM2fYvXs3KpUKDw8PRowYQVpaGmFhYdy5c4e1a9dibW3Na6+9hpubG6dOnWLPnj3k5ubSo0ePMnvR//jjDxwdHcv1Zf399V1S3ABNmjRh/fr16PX6co0QUWxi3LRpU+rXr89PP/1kbJhSU1M5fvw4f//73wHo0aMHycnJnDx5ks6dOwOwf/9+9Ho93bp1q6rQa7TsvDx8j/1QqTJmDGxVbBKbcS+XR1rVI7BxHUV+Cy/Ew1Qd20APZ9M/bgbgTto9/Bu6EthYW+xrDBhoWteRpzs2wMXOvA/xukQdu478zs2L1hhypa0QojZ6//33UavV2NvbM23aNJPnfv/9dxwdHU0+EOt0Oq5du8azzz5r3Obr68uwYcNYsGAB6enpxmXu7t69S1ZWVpkxJCUlYWtrS5s2bfjqq68wGAy4u7uTm5tLWloazs7OnDt3jnHjxpGYmMgvv/zCnDlzuHbtGidOnLBQTeQbP348O3bsKLI9NTWVWbNmceTIEY4cOcLzzz9fYhmDBg2iefPmRXpve/fuzcWLF2nZsiW2trb88ccfuLu7M3nyZOzs7Lhw4QI7d+5kzJgx7Ny5kz59+tC9e3dWrlxpLGPTpk289NJLuLu7s23bNk6ePEnXrl3LfZ7Hjx8nOjoagIEDBxIYGMgjjzzC4MGDMRgMvP/++wQGBpY41PjGjRskJyczb9488vLyjJNR7tq1i44dOxIYGMi5c+fYtWuXWb2NaWlpXL16lWeffZYTJ06g0WiYN28eR48eZefOnYwcOZITJ07Qpk0bgoODyczMxMbGpsT67tSpE506dWLmzJmEhIQYtzs5ORESEsLy5ctNju/n50dkZCQdO3bk7Nmz+Pv7AxWv76ioKDp16gTkD1V/8803UavVbN++nV9//ZVevXoZ43jhhReMCXpqair79+/njTfeQKPR8MEHH9CxY0e02uL/9kP+cPfi1lX/6quv+P777wEYN26cye/x/fVdUtyQPwN/wW1lpX0ZVFiVJsbp6elcunTJ+Dg2NpYzZ86g1Wrx8fFh6tSpLF68mJYtWxqXKvH29jau89mmTRuefPJJxo0bx7///W90Oh2TJk3ixRdfLFclCPPoDYYKJ8VbJ/SgYyM3rMzs1RWiNlBSGzgvuA32jvlDovLy8rhw/jxt27Uz+YZZrzeQkZNLx0Z10Kj/l5C29HCijqNNJWpCCCHKp/BQavhf0mRvb8+oUaOM299//30SExN59NFHTdrGFi1aoNFo0Gq1pKWlGRPjwol2SaKiomjZsiXW1tZotVpu3rxJw4YNad++PefPn8fPzw+DwUCdOnU4ffo0LVq0wNramubNmz+03vxmzZqhVqvx9PQkJiamQmU4OjoafxwcHMjOzkav17NlyxZu375Nbm4urq6uQP49swUrKfj6+pKTk0NWVhbXr18nLCwMgJycHBwdHSsUS3FDqS9dusS+ffvQ6/UkJiaSnJxcYmKs1Wq5e/cuX3/9Nb6+vvj5+QH5Pf9RUVHs2bMHvV5fakIH+b2doaGhqNVqgoODcXNz49q1a8by2rVrx4EDBwBo1KgRmzdvxsrKinbt2hWbDFZUhw4dOHbsGB07duTChQs88cQTFarvr776io0bN+Lh4WH8jJGSksJnn31GZmYm6enp9O7du8TXx8bGEh8fz7JlywDIysoiISGh1HpMTU01/s7dr7ih1MXVd0lxF3B2diYlJaX6JMYnTpww3mwNGCeEGT16NOvWrWPWrFlkZGTw6quvkpycTO/evfnhhx9MGsKNGzcyadIk+vXrh1qtZtiwYSbfUAnLMBgMNDu6q1yv8bGzYc/cx7GztsxQGSFqGiW1gS928TFZx3hXwjmCujaqtUMxhRDVT0n3n86YMYOsrCz+8Y9/EBgYaExMCnqiVCoVBkP5Z8WPiori0qVLnD17loyMDKKiomjYsCEdOnRg9+7d5OXlGXvwqkrBl5uFz3Ht2rXcuXOH9u3bM3jw4FLLKBjFV/CvXq/nwIED1KtXj7FjxxIbG8v27dtLLcPNzc2kB9RSdDod27ZtY86cObi4uPDxxx+bnGfhEYhOTk7MnTuXiIgIduzYQVxcHI899hgqlYqJEyeaNXwa/nePsTlat27NlClTOHfuHP/617+YMGECjRo1Mv8kS9GiRQs2b95MXFwcLi4uODg4kJWVVe76fv755/H19WX16tX8/PPP9O3bl61btxIUFISvry979uwhJyenxNerVCr8/f3LdQ+0tbW12UvJlVTfxcVdQKfTlfszTJV23/Xt2xeDwVDkZ926dUB+Jb/zzjvcvn2b7Oxs9u3bR6tWrUzK0Gq1bNq0ibS0NOM3G8V9+yAqp2k5kuKXMm34sEcui1s2kqRYiFJIGyiEEA9HnTp1GDhwIPv37y9z33Xr1nHmzJlS9zEYDFy8eJEFCxawYMECXn31VaKiooD8HsL4+HhOnTplnCTIx8eHS5cuodPp+P3334skBAsXLiQ5OblC51YR48aNIyQkpMykuCTZ2dnGJPLkyZPG7Y0bNyYyMhLAWB/29vbY2dkZe6zT0tKK3CNaUQX37To6OpKcnMzly5dNnndwcCAlJcX4OD09HYPBQKdOnejZs6cxjpYtWxIeHm4s88aNG+WOxcfHx3juFy5cwMfHB8gfcu/q6kqfPn1o3rw5SUlJZZalUqnIzc0tc7+Ce+e//fZb45cwFa1va2trhg4dyoEDB9Dr9cZrnJubW+T3wc7OjoyMDOPjxo0bEx0dTVpaGgA3b94sM+n19PQkISGhzLjKG3eBhISEcs+3oth7jIUyrP/jCgsuXyhzvyEZNrTS/fmtpJWsRSqEEEIIZenVqxdvv/12mctXmXOP8Y0bN9BqtcaJg5o0acK1a9eMvVStW7fm/PnzxmGc7u7udO3alSVLluDj41NkNt+4uDjy8vIqdF43b95k/fr1pKamolarOXr0KBMmTCh3OUuXLiUjI4P09HRCQ0MJCgoqcd9HHnmEtWvX8vPPP5t8YfvUU0/xySefcOjQIVxcXLCyyk81Ro8ezebNm8nKykKj0TB8+HDc3d3Lf7KFODg40KVLFxYtWoRWq6VJkyYmzw8YMIDVq1dTt25dJk+eTEpKCuvXrwfyE6oxY8YY4964cSOLFy/GYDDQv3//cg95DgwMJDIyksWLFxsn3wK4ePEie/bsMU5iVTDcurj6LphTpHfv3rz33nt4enoybtw4wsPDOXDggHHSK61Wy+TJk4H8mb3XrFnDc889Z4ylovXdqFEj6tWrx9mzZxk0aBCrV6/G0dHRZBJQyP9d2rx5M46Ojrzyyiu4uroydOhQVq5cicFgwNHRkddee63UY7Vo0aLY++Ir4v64AwICSE9Px8bGptwdBSpDRcaO1DCpqam4urqSkpJiXMc4f0bHIEUOI8yfeGYXQVlBWDs+mPhSc3X4H99T5n4zk+2LbFNZGWgwIJ066a3pM9z3QYRXKYq/vgqPD5QfY+H4Cv+Oi/8prm4Uf33/bANv7nVS5ORbBW1gUO8ghc9KrdDrK/FVSnHxSRuoDNnZ2djZ2ZGQkMCaNWsqPLR4w4YNdOzYschyTUqQk5ODlZUVarWaDRs24O/vX+bs3jExMRw6dKjMdYxFzbNp0yZ69epl8SXCDh8+jEajoVevXuV6nfQYiyL0BoNZSfH0ZMstli6EEEIIUZN99dVXXLt2DbVaXWRW3fKws7Pj66+/5t69exZdk9kSbt26xRdffIFaraZBgwZl3mN99uxZtm/fTvPmzR9ShEJJBg0axO3bty1erq2tbYV+NyQxFiaWXY1i1Y3fy9xvUopdla8VKoQQQghRXdw/U3ZllLbkUlVr0qQJ8+fPN3t/f3//Kp+gTFSdOnXqmD3hWXlUdMlKWTtHGI2N+NWspPjvKXbYGyQpFkIIIYSobjZs2MDcuXPZtm2b2a85fPiwxddergqHDh3inXfe4b333qt0WXq9ng8//LDIJFnLly83e3KxmJgYNmzYYLItPj7eeB+0eLikx7iWMxgMXMhIJfi3I2XuO0kSYiGEEEKIam3UqFGEh4dz69Yts1/Tp0+fBxjRw/Poo4/Srl071q5dW+myzp49S7NmzYwTjFmKh4cH6enpJCUllbmesrAsSYxrsT2Jt3k16mTZOwKvJ9thK0OnhRBCCCGA/GV41q1bR2ZmJg0aNGDkyJFYWVkxb948/P39iYiIwNfXlxdffLHEMsLDwzl9+jTZ2dkkJyczYcIEvL29SywbYObMmfTs2ZMLFy7g5eWFp6cnly9fJi0tDR8fH27cuMGsWbOMZeTm5mJnZ8eIESOoV69euc8zLCyM2NhYnnzySeM6scuXL8fW1ha1Wk1WVhYeHh4MHz6cM2fOsHv3buMMzCNGjMDGxobIyEi++uorXF1dycnJ4emnn6ZVq1acOnWKPXv2kJubS48ePejXrx96vZ5169YZE/cXXniBli1blhhfdHQ0//nPf9Dr9XTv3p0BAwaQmJjI6tWr8fDw4Pr16wwePLjU4bWLFy/m9ddfx8XFhVu3bvHVV18xderUUuvlxIkTDBgwoMh2BwcHk/WTN2zYgMFg4NatW1hZWTFlyhRsbGyA/HWm7eyKztnTtm1bTp8+Tb9+/UqNQViWDKWupbLy8sxKiv3vaZghSbEQQgghhImdO3fSs2dP5s2bh0qlMhlq7Ovry/z58zl//jzp6emllpOamsrUqVPp378/R44cKbPszMxMGjVqxLx58/jrX/8K5C/v06JFC9q2bUvz5s35448/cHJyYvLkycyZM4eBAweyc+fOCp3n+PHj6d27d5HtI0eOJCEhgVdeeYX4+HgAmjVrxptvvsns2bPRarX8+uuvAHz55ZdMnDiR8ePHc+fOHeN579+/nzfeeIOQkBBOnTpFUlISN27cIDk5mXnz5jFnzhwaNGhQanybNm3i1VdfZfbs2Rw9etS4Nm5CQgJ//etfmTRpEvv27Su1jMDAQE6dOgXkr8vcpUuXMuvlypUrxcY2fvz4Ij29jo6OzJkzB61WS0REhHF78+bNi71nvFGjRkXWZBYPniTGtVSbYz+Uuc+LaTY8kWWDSpJiIYQQQggTV69eNa5J265dO65du2Z8rkWLFmg0GrRaLWlpaaWW06xZM9RqNZ6ensY1lksrW6PR0LlzZyC/dxLyE6+CHwcHB7Kzs9Hr9WzcuJF3332X//znPyQnJ1vs3AGcnJxwcHAwWSs2JSWFlStXEhoayi+//EJKSgoZGRmoVCrq1q2Lvb29ca3h2NhY4uPjWbZsGe+99x6pqakkJCSg1Wq5e/cuX3/9NdHR0cZzLE5GRgZqtZp69ephbW1Nq1atuHHjBpA/JNnFxQVPT09SUlJKPZcuXbpw8mR+h9HZs2fp2LFjmedfsDSVOVq0aAFgViwAzs7OZu0nLEuGUtcy17MzeeTkgTL3ezrdhkZ5mocQkRBCCCFEzaJW5/c9qVQqDAZDqftqNBqz94X8pWjuH6pb8Nr7/9Xr9Rw4cIB69eoxduxYYmNj2b59e5H9K0OlUhl/CmzdupWgoCB8fX3Zs2cPOTk5pb7e39+fESNGFHlu7ty5REREsGPHDuLi4njsscfKHV956tXd3R21Ws1vv/1GvXr1Sk3GK6IgFsCsa6zT6RS5TnpNJz3GtcTxlESa/HdnmUlx3ywrpifb0TJXkmIhhBBCiJI0btyYyMhIACIiIvDx8VFU2dnZ2calcAp6Qws4ODg8kB7JgmPm5uZy5swZIL8322AwkJCQQFZWFleuXAHyzzE6OtrYo37z5k10Oh3p6ekYDAY6depEz549S53h+f6ydTodFy9epGHDhqXG6ODgQFpaGnq93mR7ly5d2Lx5s9nr37q7u1u8F77AnTt38PLyKrJ94cKFD+yYQnqMa4W/R51kd2LZi2fPTLZ/CNEIIYQQQlR/Tz31FOvWrWPv3r00aNDA7ITqYZX9yCOPsHbtWn7++WdatWpl8lybNm3Yt28fixcvJjg4mICAgGLLuHnzJuvXryc1NRW1Ws3Ro0eZMGFCicccNGgQq1evxtHR0SSxe+GFF1i1ahVubm54eHhgZWWFq6srQ4cOZeXKlRgMBhwdHXnttddISUkxLldkbW3NmDFjSj3PF198kbCwMPR6PT169KBu3bqlJtP29vZ07NiRRYsWERAQwJAhQwAICAhg27ZttGvXrtTjFWjbti2XLl2y6HUvcOnSJdq2bVtke1xcHHl5eRY/nsinMpjTn1/Dpaam4urqSkpKCi4uLuh0Onbt2kVQUJAihzHoEnXsOrKLoKwgrB2LxpdnMHA8JZGozDTeiY0opoSiXkm1pY7eMgMIVFYGGgxIp056a/oM97VImZak+Our8PhA+TEWjq/w77j4n+LqRvHX98828OZeJwy5ypsDoaANDOodhLW7AutP6ddX4quU4uKTNlBUtezsbOzs7MjNzWXJkiVMnToVZ2fnqg7LxNmzZzl16lSZiXiBpKQktm7dyvjx4y0aR15eHitWrGDatGnGIfni4ZAe4xogWZfDsdQk0nJ1AMy8dLZcr3863cZiSbEQQgghhBD3++WXXzh06BCQP4O20pLib7/9ljNnzpTaG16YVqulU6dO5ObmWnQt4+TkZIKDgyUprgKSGFdzX/xxhfmXL1TotcEZ1rTRyVtACCGEEEI8OH369KFPnz5VHUaJhgwZYhxSXR7mLOtUXu7u7ri7u1u8XFE2yYqqkbM3kvn5YgLpKTlcuq5mys09FSpnSIYNrXQyuZYQQgghhBBCgMJnpc7Ly2P+/Pk0bdoUe3t7mjdvzqJFi0ymOTcYDLz11lt4eXlhb29P//79uXjxYhVGbRm5eXrWHr7MK+t/ZdRnv9Bk9k7+8vF/WfZjNP86FsvemxW7dCPSbCUpFqKaqM1toBBCCCHEw6ToHuN//OMf/Otf/2L9+vW0bduWEydO8NJLL+Hq6srrr78OwNKlS1m5ciXr16+nadOmzJ8/nyeeeIKIiAjs7Oyq+AwqbtGOCNaHX7VIWX2yrPDIU+OTq0aD8iaqEUIUrza3gUIIIYQQD5OiE+OjR48yZMgQnnrqKQCaNGnC5s2b+eWXX4D8npIVK1Ywb948430BGzZswNPTk+3bt/Piiy9WWezlpcvT8/6eaA5G3SFLl8e1pMwKleOVq6KZTkOuClz1KvxzNKgkGRaiWqpNbaAQQgghRFVSdGLcs2dP1qxZQ0xMDK1ateK3337jyJEj/POf/wQgNjaW27dv079/f+NrXF1d6datG+Hh4SV+KLx37x737t0zPk5NTQXylzgo+Cl4bEmFV8YyGODQxQROX0vmX4djK13+s1nWNMsrNEzaCuDhrsil0uQfz0CexevQEh7U9bUUpccHyo+xcHxKjbMsD6INLKv9K/j//f8qje7PGfgL2hqlKYhLl6sDBVah4q+vxFcpxcWn1FiFEEJJFJ0Yz549m9TUVHx9fdFoNOTl5fHuu+8yfPhwAG7fvg2Ap6enyes8PT2NzxVnyZIlLFy4sMj2PXv24ODgYHy8d+/eMmPMM8DtTMg1QE6ein03VWTnqbBW/+8D26VUFQYL99oOaKDH28GA3gA+TgY87AFyLXqMykp2usSuXZeqOowSmXN9q5LS4wPlx1gQX2ZmxUZgVLUH0Qaa2/6B8q+v9+MZVR1CqfYeU3b9Kf36SnyVc3981bUNFEKIh0nRifFXX33Fxo0b2bRpE23btuXMmTNMnToVb29vRo8eXeFy58yZw/Tp042PU1NTadSoEQMHDsTFxQWdTsfevXsZMGAA1tbWJZbz240Uxn1xiruZxX0Ta9lEuGuTOoQ+3RZrjYq6eRr2Hd/Hrf2OGPJU6ICbFj1a5ag0Brwfz8AtvQU9n29V1eEUYe71rSpKjw+UH2Ph+Ap6RaubB9EGltX+QTW4vkk69h7ba2wDlaagDRzQfQDWWgXWn9Kvr8RXKcXFV13bQCGEeJgUnRjPnDmT2bNnG4cDtm/fnqtXr7JkyRJGjx5N/fr1AYiLi8PLy8v4uri4OAICAkos19bWFltb2yLbra2tTf7IFX4MkJKlQ5enB2DKl2dLSIotx85aTd9WHix9zh8Xu/xYdIn5xzTkqTDkKu9DYQEVGkV+aChQ3PVVEqXHB8qPsSA+JcdYmgfRBprb/pW0TRH+/Mul9DbQ2kqh9fcnxV7fP0l8lXN/fEqOUwghlELRiXFmZiZqtemyRBqNBr0+PzFt2rQp9evX56effjJ+CExNTeX48eP8/e9/L/fxDsfcwdEpm9y8XC7cVeEQcwcrTX4VxSZk8M6OiMqdkJmsNSr+Nbwz/f08y95ZCFFjPew2UAghhBCitlJ0Yjx48GDeffddfHx8aNu2LadPn+af//wnL7/8MgAqlYqpU6eyePFiWrZsaVyqxNvbm6effrrcx3tt4ynUtgX32GlYE3XacidznwZu9lhr/tfLEZ92j4Z17Hm9X0vsrDR09HHD3aloj44QonZ52G2gEEIIIURtpejE+KOPPmL+/Pm89tprxMfH4+3tzfjx43nrrbeM+8yaNYuMjAxeffVVkpOT6d27Nz/88EOVrd85uIM3eXo9j7SsxyMt65o85+Zgg5OtoqtcCKEg1bENFEIIIYSojhSdpTk7O7NixQpWrFhR4j4qlYp33nmHd9555+EFVoIp/VoybYDyJpsSQlRP1a0NFEIIIYSorhSdGCtdRx83AOytNfRtXY9Xejer2oCEEEIIIWqwtWvXcufOHZKSkrC3t8fe3p5HH30UtVrNN998g5ubGwaDgWHDhuHr68u8efOws7NDr9fTtGlThg8fXmTuBnMkJibyzjvv0KRJE6ZNm2by3PLly4tsK6//+7//44knnqBevXqVKsdcq1at4tKlS8ycORNvb+8S9yupvnv16vXAYgsPDy/2WlbE4cOHcXBwIDAw0LgtMTGRK1eu0Llz5yL7W+JaFlaR9+CePXsYOHBgpY+9adMmHn30URo0aGCx3x29Xs9HH33EpEmT0Gg0lY5RSSQxvs/wbj7YOjiRp9dz9coVGjdpgqbQG9fOWkOfVnXp2bxuCaUIIYQQQogHYdy4cQBs2LCBjh070r59eyA/merWrRvDhg3j1q1b/Pvf/zaOpJkxYwY2NjZ8+OGHnDp1yiRJKg8vL69ikyZLJFIjRoyodBnlMXHiRJYvX17mfiXV94NW0rUsrz59+hTZlpiYyKlTp4pNjC2dFBco73tw7969lU6M09LSuHPnDg0aNAAs97ujVqvx9fXl1KlTdOnSpVIxKo0kxveZE9TGuI7xrl2XCQrylSUOhBBCCCGqEW9vb3Jycowz+AOo1WqaNm3K3bt3jdsOHjxIcnJyhScrjIiIYPv27dy9e5dly5YZt8+bNw9/f38iIiLw9fU1LrlXnPT0dFauXMmdO3dMem/nzZuHo6MjjRo14sqVK/Tr148ePXrw/fffc+7cOVQqFQEBAQwaNAiAH3/8kePHj9OwYUMiIiJ4//33Afj222+JiMhfVWXo0KG0bt26QudanB07dpCens61a9fIzMxk1KhRHDlyxJh07dixAycnJ/r27cutW7fYsmUL9+7dw8vLi5EjR5rV23j/tUxOTmbdunVkZmbSoEEDRo4ciZWVFdHR0WzduhWVSkX9+vUZO3YsAGFhYcTGxvLkk0/St29fALZv387p06dJT08nNDSU9u3bM3jw4GKvZWJiIp999hkzZ84EYPfu3djb29O3b19OnTrFnj17yM3NpUePHvTr16/Mcyn8HizuWp46dYoffviBrKwsQkNDcXV1ZeLEiUD5r+WpU6fw8/MrM66S6rukuCF/+chvv/22xiXG5R9LIoQQQgghhEL9/vvvODo6mgxX1el0XLt2jbZt2xq3paenk5qaWuHj+Pn5ERISUuxzvr6+zJ8/n/Pnz5Oenl5iGU5OToSEhODj42Oy3dbWlsmTJxMbG8u0adM4e/YsAI888gghISHMnj2b8+fPc+fOHRITE/nll1+YM2cOjz76KJmZmQCcPXuWzMxM5syZw6RJk9i6dWuFz7UkV65cYerUqbz11lt4eXmVuN+mTZsYPXo0c+bMwdnZmZMnT5pV/v3XcufOnfTs2ZN58+ahUqk4ceIEAD/99BPPPfccc+fO5fnnnze+dvz48fTu3dukvKeffprhw4fj6+tLSEgIgwcPBoq/lu7u7uTm5pKWlgbAuXPn6NChA6mpqezfv5833niDkJAQTp06RVJSUpnnUvg9WNy17NSpEyEhIdjb2xMSEmJMiityLWNjY2nUqFGZ+93P3N+d+vXrc/369XKVXR1Ij7EQQgghhKj2jh8/TnR0NPb29owaNcq4/f333ycxMZFHH33U5H7a4ODgBxZLixYt0Gg0aLVa0tLScHJyKtfrHR0djT8ODg5kZ2cDcOnSJfbt24derycxMZHk5GTS09Np0aIF1tbWNG/e3DjaMSYmhoiICEJDQwHIzMwkNzcXKyvLffwPCAjAxsYGAHt7+2L3ycrK4vr164SFhQGQk5ODo6NjqeUWdy2vXr3KkCFDAGjXrh2XL1+me/fuNG3alB07dnD79m0CAgIsdGb52rdvz/nz5/Hz88NgMFCnTh1+++034uPjjT3LWVlZJCQkoNVqSyynuPdgcdeypHvMK3ItU1NTy6znAuX93VGr1RgMBvLy8mrUfcaSGAshhBBCiGqv4D7JwmbMmEFWVhb/+Mc/CAwMpGHDhg88loIeN5VKhcFgACAqKoqvv/4agNdeew03N7cSX69SqUx+9Ho9Op2Obdu2MWfOHFxcXPj444+NZZckODiYbt26WeakilF4aUCVSmX8//3Dcd3c3ErsXS9OSdeyOIMGDaJ9+/acOXOGpUuXsnDhQosl/x06dGD37t3k5eXh7+8P5J+jv79/ue4LL/we9PT0fODX0tramtzcXLP2rcjvjsFgqFFJMchQaiGEEEIIUcPVqVOHgQMHsn//fuO2gwcPsn379ocWQ8Hw3ZCQkFKT4pLodDrUajWOjo4kJydz+fJlAHx8fLh06RI6nY7ff/8dnU4HQKtWrfjll1/Iy8sD8oc9P2guLi4kJycDcOPGDSC/J9nOzo6YmBggf1KoxMTEcpfduHFjIiMjgfz7uwuGnyckJNCwYUMGDRqESqUiJyen1HLs7OzIyMgw65iNGjUiPj6eU6dO0aFDB2Mc0dHRxiHWN2/eNNZ5ae5/D5Z0LQuoVCqTpLYi19LT05OEhASzztPcuAtkZmbi7OxcZN8NGzawY8eOSh+zqpj1dUqnTp3KVahKpeK7774zzoImhBDVmbSBQghR/fXq1Yu3336b1NRUXFxcKn2P8ZYtW7h8+bJxoqS2bdsah/qaKzw8nAMHDnDnzh3Wrl2LVqtl8uTJxe7r4OBAly5dWLRoEVqtliZNmgD598J27dqVJUuW4OPjY0xY/P39uXr1KkuWLCEvLw9fX1/jax6U7t278+mnn/L777+b3Kc6evRoNm/eTFZWFhqNhuHDh+Pu7l6usp966inWrVvH3r17adCggXFm5/379xMdHY3BYKBXr144ODhw8+ZN1q9fT2pqKmq1mqNHjzJhwgS0Wi0NGjRArVazdOlS/P39efLJJ0u9lq1bt+b8+fPGocSurq4MHTqUlStXYjAYcHR05LXXXjPrHAreg7m5ucVeywK9e/fmvffew9PTk3HjxlXoWrZr144TJ05YZIKswr87Fy9eLHZir7t379KxY8dKH6+qqAxl9duTPxzkjTfeMOv+CIPBwHvvvUdERATNmlWPdX1TU1NxdXUlJSXlvlmpdxEUFKTIWal1iTp2HdnFzb1OGHJVZb/gIVNZGWgwIJ066a3pM7xi6849SIq/vgqPD5QfY+H4Cv+Ol1dNbgOLqxvFX99q0gYG9Q7C2l2B9af06yvxVUpx8VW2DRT5MxSvXbuW2bNnV3UoxcrOzsbOzo6EhATWrFlj1rDl5cuX88ILL5S6jrGovgwGA8uXL2fy5MkWb6s+++wznnrqKTw9PY3b8vLyWLZsGW+++abJkPrqxOwB+DNnzsTDw8OsfT/44IMKBySEEEokbaAQQtReKpWK1NRUli9f/sDWuq2Mr776imvXrqFWq3n22WfL3H/VqlUkJCTUuHtExf+oVCr+8pe/cPfuXbM/v5hDr9fj5+dnkhQDaDQaxX5xZC6zEuPY2NgSZ0krTkREhHz7JISoMaQNFEKI2k2r1RpnBFai+2cSNkfBMkCiZmvRooXFy1Sr1XTv3t3i5SqBWYlx48aNy1VoedfMEkIIJZM2UAghhBCiZqvwXOa5ubmEhYVx8OBB8vLy6NWrFxMnTiwybbsQQtRE0gYKIYQwV3h4ON98841xNupnn32WVq1aWaTs2NhYNm/ezB9//MGyZcuMf4cOHTrEoUOHsLGxqfZDXIV4GCq8XNPrr7/ON998w2OPPcajjz7Kpk2beOmllywZmxBCKJa0gUIIIcqjW7duhISEMHToUDZv3myxcps2bUpISAiurq4m2x999FEZMi1EOZjdY/zNN9/wzDPPGB/v2bOH6Oho4037TzzxRI0dby6EENIGCiFE7ZSbm8sXX3zBzZs3cXBwYMyYMWi1WiB/ZucWLVpw7tw5dDodc+fOxcqq9I/XzZs35+7du8bH3377LREREQAMHTqU1q1bA/Ddd99x9uxZAJ555hnatm3L999/z7lz51CpVAQEBDBo0KAHccpC1EpmJ8afffYZ69evZ/Xq1Xh7e9OpUycmTJjAsGHD0Ol0rF271iLrZAkhhBJJGyiEELXTiRMn0Gg0zJs3j6NHj7Jz505GjhxpfD4jI4OQkBCysrJM1u4tSVRUlHGt17Nnz5KZmcmcOXNIS0vjww8/ZN68efz2229cv36dOXPmoFKpjIn0I488wuDBgzEYDLz//vsEBgaWa3JIIUTJzE6Mv//+e7788kv69u3L5MmTWbNmDYsWLWLu3LnG++vefvvtBxiqEEJUHWkDhRCidrp27Rp+fn4AtGvXjgMHDpg8X/ClqL29fanlHD9+nLNnz5KTk8OMGTMAiImJISIiwjjjdWZmJrm5uVy8eJGuXbsaRyW5u7sDcOnSJfbt24derycxMZHk5GRJjIWwkHLdY/zCCy/wyy+/cO7cOZ544glGjBjByZMnOXPmDKtWrXogv5g3b95kxIgRuLu7Y29vT/v27Tlx4oTxeYPBwFtvvYWXlxf29vb079+fixcvWjwOIYSQNlAIIURhZSXEBbp168aCBQvo2bMnX3/9tXF7cHAwISEhhISEEBoaahyKbTAYTF6v0+nYtm0br732GiEhITRt2tRkH5VKZYGzEaL2KvfkW25ubqxZs4Zly5YxatQoZs6cSXZ29oOIjbt379KrVy+sra3ZvXs3ERERfPDBB9SpU8e4z9KlS1m5ciX//ve/OX78OI6OjjzxxBMPLCYhRO0mbaAQQtQuPj4+REZGAnDhwgV8fHwqXJZarebJJ5/k8uXLJCQk0KpVK3755Rfy8vIAuHLlCgCtWrXi119/JS8vD71eT1JSEjqdDrVajaOjI8nJyVy+fNmkbAcHB1JSUopsS0tLQ6/Xm2y/cuUKH374YYXPQ4iayOyh1NeuXWPGjBlERkbi7+/P+++/z8mTJ3n33Xfp0KEDK1assPgEAP/4xz9o1KgRn3/+uXFb06ZNjf83GAysWLGCefPmMWTIEAA2bNiAp6cn27dv58UXXyy23Hv37nHv3j3j49TUVCD/m7iCn4LHSqTLzY9LpTGUsWfVKIjLQJ4i61Dx11fh8YHyYywcnyXirCltYFntX8H/7/9XaapLG6jL1YECq1Dx11fiq5Ti4lNqrNVFYGAgkZGRLF682Dj5VmVYW1vTt29fDhw4wHPPPcfVq1dZsmQJeXl5+Pr60qRJE/z9/bly5QpLlixBpVLx9NNP07ZtW7p06cKiRYvQarU0adLEpNwBAwawevVq6taty+TJk4H83uyOHTuyaNEiAgICjH8rcnJyuHPnTqXOQ4iaRmUoPE6jBH379qV+/fqMGTOGH3/8kd9//53vvvsOgMjISMaPH0/9+vX56quvLBacn58fTzzxBDdu3ODQoUM0aNCA1157jXHjxgFw+fJlmjdvzunTpwkICDC+7tFHHyUgIKDEb8LefvttFi5cWGT7pk2bcHBwsFj8QghlyMzM5G9/+xspKSm4uLhUqIya0gZK+ydE7WOJNlAIIWo6sxNjJycnfvvtN5o3b47BYKBp06bG4R4F1qxZw6uvvmqx4AoWKJ8+fTrPPfccv/76K1OmTOHf//43o0eP5ujRo/Tq1Ytbt27h5eVlfN3zzz+PSqXiyy+/LLbc4npMGjVqREJCAi4uLuh0Ovbu3cuAAQOwtra22PlYii5Jx95je7m13xFDnvLuJ1FpDHg/noFbegt6Pm+ZxestSfHXV+HxgfJjLBxfamoqdevWrdSHwprSBpbV/kE1uL7VpA0c0H0A1loF1p/Sr6/EVynFxWeJNlAIIWo6s4dSd+7cmbfeeovRo0ezb98+2rdvX2QfS34gBNDr9QQGBhpn6uvYsSPnz583fiisKFtbW2xtbYtst7a2NvkjV/ixYvx51Qx5Kgy5yvtQWECFRpn19yfFXt8/KT0+UH6MBfFZIsaa0gaa2/6VtE0RqkkbaG2l0Pr7k2Kv758kvsq5Pz4lxymEEEph9uRbGzZs4N69e0ybNo2bN28SFhb2IOMCwMvLyzg9foE2bdpw7do1AOrXrw9AXFycyT5xcXHG54QQwhKkDRRCCCGEqLnM7jFu3Lgx//nPfx5kLEX06tWL6Ohok20xMTE0btwYyJ+Epn79+vz000/G++tSU1M5fvw4f//73x9qrEKImk3aQCGEEEKImsusHuOCWUvNlZaWVqFgCps2bRrHjh0jNDSUS5cusWnTJtasWcPEiROB/PXapk6dyuLFi/nuu+84d+4co0aNwtvbm6efftoiMQghhLSBQgghhBA1m1mJcZ06dYiPjze70AYNGhRZW60iunTpwjfffMPmzZtp164dixYtYsWKFQwfPty4z6xZs5g8eTKvvvoqXbp0IT09nR9++ME4aY0QQlSWtIFCCCGEEDWbWUOpDQYDn3zyCU5OTmYVasn18oKDgwkODi7xeZVKxTvvvMM777xjsWMKIcT9pA0UQgghhKjZzEqMfXx8WLt2rdmF1q9fX2ZAFELUGNIGCiGEEELUbGYlxoXX6hRCiNpE2kAhhBBCiJrN7OWahBBCCCGEEEKImkgSYyGEEEIIIYQQtZokxkIIIYQQQgghajVJjIUQQgghhBBC1GqSGAshhBBCCCGEqNUslhh//fXX+Pv7W6o4IYSoVqQNFEKIBy89PZ3Q0FBmzJjB/Pnz2bBhQ5mviYmJeeirC4SHh5OWllZk++HDhzlx4sRDjeVB+r//+z/u3LlTodfGxsYSGhrK5MmTyc7OrnDZ8+bNK/b1AHv27KlQbPe7evUqX3/9dZn7JSYm8t5771X6eBV18OBBduzYUWXHrwnKlRiHhYXx7LPP8re//Y3jx48DsH//fjp27MjIkSPp1avXAwlSCCGUQNpAIYSoWk5OToSEhODv78/zzz/PqFGjynxNVSTGx44dKzYx7tOnD4GBgQ81lgdpxIgR1KtXr0Kvbdq0KSEhIbi6ulq87AJ79+6t1OsBGjduzNChQytdjlA+s9YxBnjvvfd466238Pf3Jyoqim+//Za5c+fy0UcfMWXKFMaPH0+dOnUeZKxCCFFlpA0UQgjlCg8P5/Tp02RnZ5OcnMyECRPw9vbmww8/5I8//kCtVnP06FGCg4Px9/fn1q1bbNmyhXv37uHl5cXIkSPRaDT8+OOPHD9+nIYNGxIREcH7778PwI4dO0hPT+fatWtkZmYyatQoUlNT2b17NyqVCg8PD0aMGEFaWhphYWHcuXOHtWvXYm1tzWuvvYabmxthYWHExsby5JNP0rdvXwByc3P54osvuHnzJg4ODowZMwatVsuGDRswGAzcunULKysrpkyZgo2NTYnn/9FHH5GWlobBYCApKYkPPvig3GWXVCfFSU9PZ+XKldy5c4eZM2fi7e0NUO64y1N2UlISn3zyCQaDAWdnZ3x8fAgODgbgu+++IyIiAl9fX1588UVOnTrFDz/8QFZWFqGhobi6ujJx4sQSj7lhwwZ0Oh3x8fG4uLjwyiuvYGtry+7duzl27BgNGzZk3LhxQH7P8OrVq/Hw8OD69esMHjyYbt26mZR35MgRLl68yJgxY1CpVOU6/1WrVpGSkoJarSY4OJh27dqV+P5OTEzk008/xWAw4ObmRoMGDcpdNhT//q5fvz4bN24kMTERW1tbxowZQ506dfj+++85d+4cKpWKgIAABg0aVK7zUzKze4w///xz1q5dy4kTJ9i9ezdZWVkcPXqUS5cuMXv2bPlAKISo0aQNFEIIZUtNTWXq1Kn079+fI0eOADBlyhR69+7NwIEDjT3NAJs2bWL06NHMmTMHZ2dnTp48SWJiIr/88gtz5szh0UcfJTMz06T8K1euMHXqVN566y28vLxo1qwZb775JrNnz0ar1fLrr7/i7u5OSEgIPj4+jBs3jpCQENzc3AAYP348vXv3NinzxIkTaDQa5s2bR/fu3dm5c6fxOUdHR+bMmYNWqyUiIqLUc588eTIhISF06dKFPn36VKjs4uqkJAU99z4+PkWeK0/c5Sl7586d9OnThzfffJPc3FyT53x9fZk/fz7nz58nPT2dTp06ERISgr29PSEhIaUmxQXs7OyYM2cOnp6ehIeHAzBo0CCGDx9eZN+EhAT++te/MmnSJPbt22fy3JkzZ/jtt98YNWpUuZNigOHDhxMSEsLrr7/O1q1bjduLe3/v3LmTvn37MmvWrBKHk5tTNhR9f+/atYuOHTsye/Zs+vfvz65duwB45JFHCAkJYfbs2Zw/f77CQ+mVyOwe42vXrvH4448D+RVibW3NwoULcXR0fGDBCSGEUkgbKIQQytasWTPUajWenp7ExMSUuF9WVhbXr18nLCwMgJycHBwdHbG2tqZFixZYW1vTvHlzrK2tTV4XEBBg7P20t7cnISGBzz77jMzMTNLT04skvea4du0afn5+ALRr144DBw4Yn2vRogUAnp6epKSklFnW9evXOXfuHFOnTi132SXVSUWUN25zXb16lSFDhgD5iXBOTo7JMTUaDVqtlrS0NJycnMpdvq+vr/Hf06dPl7qvh4cHLi4uODs7m5xjYmIin3/+ORMnTiyxt70sBw8eNH6hkJSUZNxe3Pv72rVrPPPMM6hUKtq0aWNSJ+UpG4q+v2NiYoiKimLPnj3o9Xq0Wi0Aly5dYt++fej1ehITE0lOTq70kHelMDsxvnfvHnZ2dsbHNjY2xgoSQoiaTtpAIYRQtoJERKVSYTAYSt3Xzc2NkJAQk21lJUP3/w0A2Lp1K0FBQfj6+rJnz54yk5Lyuj+xKut8cnJy2LhxIy+//LJZCVlxZRdXJxVRnriBCvWqFqZWq41lmXPMyirpvWZlZcXYsWPZtm0bs2bNKndyHB0dzdWrV5k1a5ZxKHpZx7RE2VD0/a1SqZg4caLJiDidTse2bduYM2cOLi4ufPzxxw+lvh8WsxNjgPnz5+Pg4ADk/wIuXry4yA3z//znPy0XnRBCKIi0gUIIUf3Y29ubDIu2t7fHzs6OmJgYWrVqRVpaGjk5Ofj4+LBjxw50Oh3Xrl1Dp9OVWm52djZ16tQhNzeXM2fOGHtnIT/JyMjIKDM2Hx8fIiMjCQwM5MKFC8UOTTbHtm3b6N27Nx4eHhUqu6Q6cXd3r1A85eHg4EBKSkqRxKywxo0bExkZSbdu3YiKiqJZs2Zllq1SqcjNzcXKquyUJzo6ms6dOxMdHV3h6+Dq6oqvry/Nmzdn7969PPnkk0B+T/L8+fNZvXp1qa/Pzs7G2dkZKysrzp49W+Z7sHHjxkRFRREYGEhkZCTNmze3WNktW7YkPDycoKAgdDodcXFxaLVa1Go1jo6OJCcnc/ny5VLLqG7MToz79OlDdHS08XHPnj2LVIYlvvERQgglkjZQCCGqXsHETElJSVy8eJHTp0+XOTN1hw4dWLNmDREREQwaNIi2bdsyevRoNm/eTFZWFhqNhuHDh+Pj40PXrl1ZsmQJPj4+ODs7l1ruoEGDWL16NY6Ojnh5eZk816tXLzZv3oyjoyOvvPIK6enprF+/ntTUVONEYBMmTDAmNIsXLzZOkFURR44coUGDBhw+fBhbW1veeOONcpddXJ2UlBiHh4dz4MAB4yRjWq2WyZMnVyj2AQMGsHr1aurWrcvkyZNLLPupp57ik08+4dChQ7i4uJiV7Pbu3Zv33nsPT09P4+RZJcnMzGTJkiW4uroyePBgAJYuXUpGRoZxmbCgoCAaNWpU5nH/8pe/sGTJEjp27Iinpyd37941K9n28/Pj0KFDLFq0iObNm+Pi4lLq/kFBQXz66afs37+/zLlOylv2U089xcaNG1m8eDEGg4H+/fvTsGFDunTpwqJFi9BqtTRp0qTMc6pOVIaa1P9dQampqbi6upKSkoKLiws6nY5du3YRFBRU5P4SJdAl6th1ZBc39zphyFXeB3GVlYEGA9Kpk96aPsN9qzqcIhR/fRUeHyg/xsLxFf4dF/9TXN0o/vpWkzYwqHcQ1u4KrD+lX1+Jr1KKi0/aQPNlZ2djZ2dHQkICa9asscjQYmEZOTk5WFlZoVar2bBhA/7+/gQEBFik7A0bNtCxY0fat29vkfIK++GHH3B3d6dLly4PpHxhGeVaxzg1NZW9e/eyc+fOKpmB7L333kOlUhknFYD8BmzixIm4u7vj5OTEsGHDiIuLe+ixCSFqPmkDhRCiZvvqq69YvHgxa9as4dlnn63qcMR9bt26xbvvvsu7776LXq83zjBeHTz55JOSFFcDZg+lPnPmDEFBQdy+fRsAZ2dnvvrqK5544okHFtz9fv31V8LCwor8EkybNo2dO3eydetWXF1dmTRpEkOHDuW///3vQ4lLCFE7SBsohBA1X1nDskXVadKkCfPnz38gZct1F1COxPjNN9+kadOmbNu2DTs7OxYtWsSkSZO4ePHig4wPyL+fZPjw4axdu5bFixcbt6ekpPDpp5+yadMm4zIqn3/+OW3atOHYsWN079692PLu3bvHvXv3jI9TU1OB/OFHBT8Fj5VIl5sfl0qjzFHwBXEZyFNkHSr++io8PlB+jIXjs0ScNaUNLKv9K/j//f8qTXVpA3W5OlBgFSr++kp8lVJcfEqNVQghlMTse4zr1q3Lnj176NSpEwDJyclotVqSk5Mf+P0qo0ePRqvVsnz5cvr27UtAQAArVqxg//799OvXj7t37xoXT4f8GdqmTp3KtGnTii3v7bffZuHChUW2b9q0yTjjrBCi5sjMzORvf/tbpe6vqyltoLR/QtQ+lmgDa4KDBw+Snp5OcHCwxcqMiYnBxsbGZBKiefPmMW/evDJnWa5O9Ho9H330ERMnTjROepWZmcnMmTMZM2aMcZjw8uXLeeGFF/D29ubcuXPGydGysrLYsGEDt2/fRqPRMHbsWLy8vIiPj2f37t2MHj3a7FiWL19e4mf8qnTo0CEOHTqEjY0Ns2fPrupwRAWY3WOclJREw4YNjY/d3NxwdHQkMTHxgTayW7Zs4dSpU/z6669Fnrt9+zY2NjYmHwghf0HxguGOxZkzZw7Tp083Pk5NTaVRo0YMHDjQOPnW3r17GTBggDIn1kjSsffYXm7td8SQp8CJZzQGvB/PwC29BT2fb1XV4RSh+Our8PhA+TEWjq+gV7QyakobWFb7B9Xg+laTNnBA9wFYaxVYf0q/vhJfpRQXnyXaQFG8mJgYnJycatzsvIWdPXuWZs2amcwEHR0dbVxCqaz7Z7///nt8fX0ZP3486enp5OXlAeDh4UF6ejpJSUlotVqzYlFiUgzw6KOP0q5dO9auXVvVoYgKKtc6xhERESYftgwGA5GRkaSlpRm3WfJG+OvXrzNlyhT27t1r0W/dbG1tsbW1LbLd2tra5I9c4ceK8edVM+SpFDkjawEVGmXW358Ue33/pPT4QPkxFsRnqRhrQhtobvtX0jZFqCZtoLWVQuvvT4q9vn+S+Crn/viUHGd5JSYmsnbtWmOP3MyZM1m2bBnh4eGcPn2a7OxskpOTmTBhAt7e3iQmJvLpp59iMBhwc3OjQYMGQP5ETlu2bOHevXt4eXkxcuRINBoNMTEx7N27F5VKRWJiIj179qRfv37FxvLhhx/yxx9/GJdfCg4ONv4N+O6774iIiMDX15cXX3wRgFOnTrFnzx5yc3Pp0aNHieUW+O677zh79iwAzzzzDG3btjXpjb6/d7a4uG/evElgYCB+fn7odDoWLVrE22+/TXZ2Nhs3biQxMRFbW1vGjBlT5lI/J06cYMCAASbbIiMjGThwIN98800ZVy1/no5FixYB4OTkZPJc27ZtOX36dJn1ERERwfbt27l79y7Lli0zbp83bx7+/v5F6rs44eHhnDx5kqysLHQ6HS+//DL169c3mZV6x44dODk50bdvXyD/PdazZ08uXLiAl5cXTz/9NB9//DEeHh7Ex8czePBg42iy4mRmZpa7vkXVKFdi3K9fPwqPvA4ODkalUmEwGFCpVMZvgCzh5MmTxMfHm7zZ8vLyOHz4MB9//DE//vgjOTk5JCcnm/SYxMXFUb9+fYvFIYQQIG2gEEIoWWpqKrNmzeLIkSMcOXKE559/np07d9K3b1+6dOnCypUrjftu2rSJl156CXd3d7Zt28bJkyfp2rUrAJcuXSIkJIR69eqRmZlZ4vGmTJlSJIkq4Ovry7Bhw1iwYAHp6eno9Xr279/PG2+8gUaj4YMPPqBjx44l9pL+9ttvXL9+nTlz5qBSqbh7926Z51847piYGM6dO4efnx8xMTG0atUKtVrNrl276NixI4GBgZw7d45du3YxfPjwUsu+cuWK8UuFAjExMQwdOhRXV1f++OOPIms5F8jIyMDOzg6NRlPs840aNTLeGlQaPz8//Pz8mDlzZpHnCtd34eT7fnfv3iUkJIQLFy7w/fffm7W+caNGjXjmmWfIzMwkKyuLO3fuMGnSJKytrVm2bBkBAQGo1cUv9lOR+hZVw+zEODY29kHGUax+/fpx7tw5k20vvfQSvr6+vPnmmzRq1Ahra2t++uknhg0bBuQP67h27Ro9evR46PEKIWouaQOFEELZmjVrhlqtxtPTk5iYGACuXbvGM888g0qlok2bNuTk5JCVlcX169cJCwsD8tfHdXR0NJbTtGlT6tWrB1DhuRdatGiBRqNBq9WSlpZGfHw88fHxxp7OrKwsEhISSkyML168SNeuXY3JpLu7e5nHLBy3n58f3333HZA/FLpDhw5AfkIbFRXFnj170Ov1Zg1hLlhDuEBCQgIODg7Y2dnRqlUroqKiSkyMy+Ls7ExKSkqFXlugcH2XlhgX7Ovr68t//vOfMsvWaDR07twZyK/XrKwsPDw8jNfEycnJOO9IcSpS36JqmJ0Yr1+/nhkzZjzUyVmcnZ1p166dyTZHR0fc3d2N28eOHcv06dPRarW4uLgwefJkevToUeKM1EIIURHSBgohRNVTqf53+0ThEToFSWTBKJ7SuLm5ERISUuxz9vb2lYwSY+/h/SOK/P39GTFihNllFHcO95+/Xq83ea5w3DY2Nnh4eHDjxg1iYmKM6zKrVComTpxYqeG8kZGR3Llzh4ULF6LT6fD29uaxxx4z6RU2GAxYWVnh6OhIVlYWeXl5xfYa63S6Sg/3L1zf5irYt7R6tbW1NXm+vCxR3+LhKL7PvxgLFy4kPT39QcZSIcuXLyc4OJhhw4bRp08f6tevz9dff13VYQkhahhpA4UQouo5OTmRlpaGwWDg5s2bZe7fuHFjoqKijHNCQH4CaWdnZ+xVTktLIzExsULx2Nvblzrc+v44oqOjjXNS3Lx5s9RltFq1asWvv/5KXl4eer2epKQkAFxcXEhJSUGn0xEXF1fmcTt06MCuXbvw9vY2Jp8tW7YkPDwcyE9Kb9y4UWY57u7uJCcnGx9HRUXx0ksvsWDBAt5++22uXr1KXl4e9erV49atW0D+fdweHh5A/vwbR44cAfKHVt/fQ3znzp0K9zZXxKVLl8jLyyMqKgofHx8gv14Lzs+c+oiPjycpKYm0tDTS09ONtzM5ODiQlpZmklyXVt8HDx5k+/btljkxUWlm9xiX59uXB+ngwYMmj+3s7Fi1ahWrVq2qmoCEELWCtIFCCFH1bGxs6NixIytXrqRFixZl7h8UFMSnn37K/v37TXrsRo8ezebNm8nKykKj0TB8+HCzhisX1qFDB9asWUNERASDBg2ibdu2xe7n6urK0KFDWblyJQaDAUdHR1577bUSy/X39+fKlSssWbIElUrF008/jVar5fHHH+ezzz6jSZMmRVYkKE779u3ZuHEjI0eONG576qmn2LhxI4sXL8ZgMNC/f3+TVReK07ZtWy5dukRgYCB6vZ6LFy8ay7SyssLb25vY2FiefPJJ1q1bxw8//IBWq+Xll18GYMiQIWzYsIEDBw6g0Wh45ZVXcHV1BfIT1ZLq7X5btmzh8uXLZGVlERoaStu2bRkyZEiZryvMzc2NDz74gNzcXMaOHQtA9+7d+fTTT/n9999LvFf4fvXq1WPz5s0kJCQwdOhQ42vs7e3p2LEjixYtIiAggCFDhpRa3+np6TJrvIKYvY6xWq0mLi7OeO9CTZKamoqrq6txfT+dTseuXbsICgpS5EyOukQdu47s4uZeJ0XOyKqyMtBgQDp10lvTZ7hvVYdThOKvr8LjA+XHWDi+wr/jFVFT28Di6kbx17eatIFBvYOwdldg/Sn9+kp8lVJcfJZoA0XtlpSUxNatWxk/frxFy83Ly2PFihVMmzbNrIS0ssLDw7l165ZxXo6KKDwzuqg5yjUrdatWrcocY18w1EMIIWoaaQOFEELURlqtlk6dOpGbm2syCVdlJScnExwc/FCSYiHKUq539sKFC43DHoQQoraRNlAIIURt1aVLF4uX6e7uXqEh7BVliRUb3N3dpbe4hipXYvziiy8ab6IXQojaRtpAIYQQQoiayexxC5WZplwIIao7aQOFEEIIIWousxNjpczIKoQQVUHaQCGEEEKImsvsodSFF7sWQojaRNpAIYQQQoiaS6aAE0IIIYQQQghRq0liLIQQQgghhBCiVpPEWAghhBBCCCFErSaJsRBCCCGEEEKIWk0SYyGEEEIIIYQQtZokxkIIIYQQQgghajVJjIUQQgghhBBC1GqSGAshhBBCCCGEqNUkMRZCCCGEENXC2rVrCQ0NZcaMGcyfP5/Q0FD++9//Eh4ezrZt20p83fLlyx9ilJZT3eLesGEDc+fOLfZaXL16la+//toixzl48CA7duwo8fnExETee+89ixwrPDyctLS0B1J2dVDd3oOVoejEeMmSJXTp0gVnZ2c8PDx4+umniY6ONtknOzubiRMn4u7ujpOTE8OGDSMuLq6KIhZCCMuRNlAIIUyNGzeOkJAQ/P39ef755wkJCaFXr15lvm7atGkPITrLq25xjxo1iuDg4GKfa9y4MUOHDn3IEVXesWPHTBLj2qa6vQcrw6qqAyjNoUOHmDhxIl26dCE3N5eQkBAGDhxIREQEjo6OQP7F2rlzJ1u3bsXV1ZVJkyYxdOhQ/vvf/1Zx9EIIUTnSBgohhPni4uL45z//SXJyMhMmTMDb25uIiAi2b9/O3bt3WbZsmXHf6Ohotm7dikqlon79+owdO7bEcu/cucO6devIzc3Fzs6OESNGUK9ePSC/N61FixacO3cOnU7H3LlziY+PZ8uWLdy7dw8vLy9GjhyJRqNh1apVpKSkoFarCQ4Opl27diUe0xJxh4eHc/r0abKzs03qJCkpiXXr1pGZmUmDBg0YOXIkVlb5KcHMmTPp2bMnFy5cwMvLC09PTy5fvkxaWho+Pj7cuHGDWbNmGcsork6Ks3v3bo4dO0bDhg0ZN26ccftHH31EWloaBoOBpKQkPvjgAwC+/fZbIiIiABg6dCitW7cmMTGRTz/9FIPBgJubGw0aNCjxeAD37t3jX//6F/Hx8QwePJhOnTqxefNmWrduTadOndDr9SxcuJC5c+diY2NT5PWJiYmEhYVx584d1q5di7W1Na+99hoAOp2OsLAwrl+/zuDBg+nWrVuJcZemcH2PHTu22PdJadfyk08+wWAw4OzsjI+PD8HBwdy6davY92Bx9Ho969at49atWwC88MILtGzZssT34LfffsuFCxcAiI+PZ8aMGTRs2JBTp06xZ88ecnNz6dGjB/369Sv13JVI0YnxDz/8YPJ43bp1eHh4cPLkSfr06UNKSgqffvopmzZt4vHHHwfg888/p02bNhw7dozu3btXRdhCCGER0gYKIYT5UlNTmTVrFkeOHOHIkSM8//zz+Pn54efnx8yZM032/emnn3juuedo3bp1mb2BTk5OTJ48GTs7Oy5cuMDOnTsZM2aM8fmMjAxCQkLIyspCrVazadMmXnrpJdzd3dm2bRsnT56ka9euDB8+HDc3NzIzM/nHP/5RamJsibhLqpOdO3fSs2dPunfvzrp16zhx4oTx70VmZiaNGjXimWeeITMzk/3799O7d28uXrxIy5YtsbW15Y8//sDd3b3UOils0KBBNG/enEOHDplsnzx5MgB79uwhKysLgLNnz5KZmcmcOXNIS0vjww8/ZN68eezcuZO+ffvSpUsXVq5cWea537lzh0mTJmFtbc3SpUvp0KEDXbt2Zf/+/XTq1ImLFy/StGnTYpNiAHd3d0JCQli+fDkvvPAC3t7eQH7CnJCQwJQpU8jMzOTTTz+lW7duJcZdmsL1DZT4PinpWvbp04fu3bub1ElJ78Hi3Lhxg+TkZObNm0deXh737t0DSn4PDhkyhCFDhnD58mW+/fZbvL29SU1NZf/+/bzxxhtoNBo++OADOnbsiFarLfM6KYmiE+PCUlJSAIyVfPLkSXQ6Hf379zfu4+vri4+PD+Hh4SV+KLx3757xokP+Gw3yv/0p+Cl4rES63Py4VBpDFUdSvIK4DOQpsg4Vf30VHh8oP8bC8Sk1zvKyRBtYVvtX8P/7/1Wa6tIG6nJ1oMAqVPz1lfgqpbj4lBqrpTVr1gy1Wo2npycxMTGl7tu0aVN27NjB7du3CQgIKHVfvV7Pli1buH37Nrm5ubi6upo836VLFwDs7e3Jysri+vXrhIWFAZCTk2Mc4XPw4EFjb2JSUlJFTrFccUPxdXL16lWGDBkCQLt27bh8+bLx74VGo6Fz584AODg4AODo6Gj8cXBwIDs7u8w6KY/r169z7tw5pk6dCkBMTAwRERGEhoYC+cljbm4u165d45lnnkGlUtGmTRtycnJKLdfDwwN3d3cAnJ2dSUlJoXnz5mzatIns7GxOnjxpvHbl5eHhgYuLi7Hc0uIu6I0vTnH1XdL7pKxr6evrS05OTqnvweJotVru3r3L119/ja+vL35+fmWef3Z2Nl9++SWvvvoqarWa2NhY4uPjjT3LWVlZJCQkSGL8oOj1eqZOnUqvXr2M35zcvn0bGxsb3NzcTPb19PTk9u3bJZa1ZMkSFi5cWGT7nj17jG9KgL1791om+AfE+/GMqg6hVMlOl9i161JVh1EipV9fpccHyo+xIL6Cb2GrM0u1gea2f6D866v0NnDvMWXXn9Kvr8RXOffHVxPaQHMUDBVVqVQYDKV/cTZo0CDat2/PmTNnWLp0KQsXLiwxgTlw4AD16tVj7NixxMbGsn37dpPn7e3tTR67ubkREhJisi06OpqrV68ya9YsrKysmDJlSjnPrvxxQ/nqBMDW1haVSmWyreBxwb96vb7UOin8+tLk5OSwceNGXn75ZZOhvsHBwcbhyZYWEBDA6dOn+f3333nhhRcqVEZJ9VreuAvXd2nvk/Jcy+LegyVxcnJi7ty5REREsGPHDuLi4njsscdKfc2XX35J//79jV88qFQq/P39GTFihFnHVKpqkxhPnDiR8+fPc+TIkUqXNWfOHKZPn258nJqaSqNGjRg4cCAuLi7odDr27t3LgAEDsLa2rvTxLE2XpGPvsb3c2u+IIc/8xudhUWkMeD+egVt6C3o+36qqwylC8ddX4fGB8mMsHF9Br2h1Zqk2sKz2D6rB9a0mbeCA7gOw1iqw/pR+fSW+SikuvprQBlpaQkICDRs2xMvLi2PHjpGTk1NigpmdnY2npyeQP1KnNPb29tjZ2RETE0OrVq1IS0sjJyeH7OxsnJ2dsbKy4uzZsxXuxS9P3CVp3LgxkZGRdOvWjYiICFq1Kv9ntdLqxMHBwdiLWpZt27bRu3dvPDw8jNtatWrFoUOHCAwMRKPRcOXKFZo0aULjxo2JiooiMDCQyMhImjdvXmrZ8fHxJCUlYW1tTXp6uvFL5K5du7J8+XICAgJKvO/2fnZ2dmRklP1FbElxl0d53yf3X8uoqCiaNWtW4nuwIIktLD09HY1GQ6dOncjMzCy1cxHyr7derzfpbW/cuDFbt24lLS0NZ2dnbt68iYeHhyLbyNJUi8R40qRJ7Nixg8OHD9OwYUPj9vr165OTk0NycrJJj0lcXBz169cvsTxbW1tsbW2LbLe2tja5gIUfK8afV82Qp8KQq7wPhQVUaJRZf39S7PX9k9LjA+XHWBCfkmM0hyXbQHPbv5K2KUI1aQOtrRRaf39S7PX9k8RXOffHp+Q4H7QtW7Zw+fJlsrKyCA0NpW3btgwZMoT9+/cTHR2NwWCgV69eRUbM3O+RRx5h7dq1/Pzzz2YlkaNHj2bz5s1kZWWh0WgYPnw4fn5+HDp0iEWLFtG8eXPjF5EPMu6SPPXUU6xbt469e/fSoEEDAgMDy11GaXXSpk0b9u3bx+LFiwkODiYgIIClS5eSkZFBeno6oaGhBAUFERAQwJEjR2jQoAGHDx/G1taWN954A39/f65evcqSJUvIy8vD19eXJk2aEBQUxKeffsr+/fupU6dOmTHWq1ePzZs3k5CQwNChQ1Gr8xfj8fT0xMnJyTiEuSy9evVi8+bNODo68sorr5S4X0lxl0d53ydPPfUUn3zyCYcOHcLFxcX4JUlx78GSEuOUlBTWr18P5LcVBfeKl/QePHz4MCkpKcYh42PHjsXT05OhQ4eycuVKDAYDjo6OxonKqhOVwZxxFVXEYDAwefJkvvnmGw4ePEjLli1Nnk9JSTG+6YcNGwbkD0Hw9fUt9R7jwlJTU3F1dSUlJcXYY7xr1y6CgoIU+cdEl6hj15Fd3NzrpMgPhSorAw0GpFMnvTV9hvtWdThFKP76Kjw+UH6MheMr/DteXTyMNrC4ulH89a0mbWBQ7yCs3RVYf0q/vhJfpRQXX3VtA4V4ENLS0vjggw9YsGBBuYZ9K1HBiAG1Ws2GDRvw9/c3695zUTxF9xhPnDiRTZs28e233+Ls7Gzs2nd1dcXe3h5XV1fGjh3L9OnT0Wq1uLi4MHnyZHr06CGzsQohqj1pA4UQQgjLOXPmDNu2bTNO4lXd3bp1iy+++AK1Wk2DBg3w9/ev6pCqNUUnxv/6178A6Nu3r8n2zz//3NjNv3z5ctRqNcOGDePevXs88cQTrF69+iFHKoQQlidtoBBCCGE5AQEBNapHtUmTJsyfP7+qw6gxFJ0YmzPK287OjlWrVrFq1aqHEJEQQjw80gYKIYQQQjwc6qoOQAghhBBCiIctPDyctLQ04+PExETee++9cpURExPDlStXzN5/yZIlbNy40fh4x44dHDx4EMifkXjevHkAbNiwgfnz5xMaGsry5ctJTEwEICwsjLlz5zJr1ixCQ0PR6/Vs2LCBRYsWAfkzDE+cOJHw8HDy8vL44osvWLx4MatWrTJr2a6rV6/y9ddfm30+JVm+fHmlXp+YmMiUKVNMysnMzGTFihW89dZbbNy40awvjwvLysrin//8J6+//rqx3gusWrWKadOmcevWrUrFLqovSYyFEEIIIUStc+zYMZPEuCLKkxinpaVhMBi4dOmSWfs///zzhISE0LlzZ3bu3AnA+PHjjWvlhoSEGGdaNhgMJCYmcv78eeMySsePH0ej0TBv3jz8/PzYvXt3mcds3LgxQ4cONSu+0kybNq3SZXh5eZmUc/jwYVq1asU777xDSkoKMTEx5S5To9Hwl7/8hX79+hV5buLEifj4+FQqZlG9KXootRBCCCGEEPf76aefOHLkCBqNhh49etCvXz9yc3P54osvuHnzJg4ODowZMwatVlvs6xMTEwkLC+POnTusXbsWa2tr49IyOp2OsLAwrl+/zuDBg+nWrRt37txh3bp15ObmYmdnx4gRI6hXrx4ffvghf/zxB2q1mqNHjxIcHFzq5EfR0dG0adOG2NhY4uPjTdbuLU3Lli05ceJEqfu0a9eO8+fPc/XqVePySTExMca1Zjt06EBYWFipZezevZtjx47RsGFDxo0bZ9xeXH2XJCIigu3bt3P37l2WLVtm3D5v3jz8/f2JiIjA19eXF198sczzLiwyMtL4uo4dOxIREUHr1q3LVYaNjQ0tWrQgKiqq3McXNZ8kxkIIIYQQotr44YcfCA0Nxdra2tjje+LECWPv6NGjR9m5cycjR44s9vXu7u6EhISwfPlyXnjhBby9vYH8hDkhIYEpU6aQmZnJp59+Srdu3XBycmLy5MnY2dlx4cIFdu7cyZgxY5gyZQo7duzAycmpyCSJxYmMjKRTp05YW1sTFRVldmJ89uxZvLy8St2nWbNmnDhxArVajaOjI5C/TJezszMAzs7OpKamllrGoEGDaN68OYcOHTLZXlx9l8TPzw8/Pz9mzpxZ5DlfX1+GDRvGggULSE9Px8nJqdSyCivocd+wYQOdO3euUI+xEKWRodRCCCGEEKLaaNiwIf/3f//Hr7/+iq2tLQDXrl3Dz88PyO89vXbtWoXK9vDwwMXFBU9PT1JSUgDQ6/Vs3LiRd999l//85z8kJydXqOyYmBiaN29Oy5YtiYyMBCiyZND9j7/66itCQ0O5fv06wcHBpZat0WiA/ATZ0oqr74po0aIFGo0GrVZb4SHsLi4ujBo1qsIxCFEa6TEWQgghhBDVxqRJk7h06RJHjx7l9OnTvPrqqxYruyDBVKlUxsmdDhw4QL169Rg7diyxsbFs37693OXGxcWRmprKP/7xDwwGAxkZGej1euPxCh8f8u8xbt++vdnHePHFF7GxseH7778H8pPIggQ0PT0dFxeXcscNlqvvgvuh76/b8ig4HycnJ1JTUyt8PkKURHqMhRBCCCFEtWAwGEhOTqZ169YEBQWRkJAAgI+Pj7EX9sKFC2ZNomRnZ0dGRkaZ+2VnZ1OnTh0ATp48afKcvb29WbM9R0ZG8thjj7FgwQLefvttGjZsyNWrV6lXr55xFuRbt26ZPby6OE5OTtjY2Bgft2zZkrNnzwLw22+/Ge89Lo+S6rsq+Pr6cubMGQDOnDljHCEA+TOMV3Ym7JIcPHiwQl+GiOpHeoyFEEIIIUS1YDAY+Pzzz8nOzgZgyJAhAAQGBhIZGcnixYuNk2+VpVevXmzevBlHR0deeeWVEvd75JFHWLt2LT///HOR5LJDhw6sWbOGiIgIBg0aRNu2bYstIyoqij59+hgft2rVisjISJ588knOnTvH4sWLsbGxYfjw4aXGHBYWxrVr19DpdERHRzN79uwS9+3evTu///47ixcvxs3NjZdffrnUspcuXUpGRgbp6emEhoYSFBSEv79/sfVdki1btnD58mWysrIIDQ2lbdu2Zb7GXH369CEsLIyjR4/i6+trci2Sk5Np3LixWeUsWLCAtLQ0VCoVv/76a7H3Q98vPT29zPuzRc0gibEQQgghhKgW1Go1M2bMKLLdysqKl156qVxl+fv7F5lF+v5Es2BWZU9PT+P6woXVrVuXkJCQMo81YcIEk8eDBg0y/r+4JL6k+2jHjx9f5r7Dhg0rs5zizJo1q9jtxdV3SUqabXrx4sXG/1d0KScHB4cSX3v58mX++te/mlXOwoULy3Xcsu7vFjWHDKUWQgghhBBCKIZKpSI1NdXs4dETJ04scXkuc61atYqEhIQi932L2kN6jIUQQgghhBCKodVqCQ0NfajHnDhx4kM9nlAe6TEWQgghhBBCCFGrSWIshBBCCCGEEKJWk8RYCCGEEEIIIUStJomxEEIIIYQQQohaTRJjIYQQQgghhBC1miTGQgghhBBCCCFqtRqTGK9atYomTZpgZ2dHt27d+OWXX6o6JCGEeCik/RNCCCGEqJwakRh/+eWXTJ8+nQULFnDq1Ck6dOjAE088QXx8fFWHJoQQD5S0f0IIIYQQlWdV1QFYwj//+U/GjRvHSy+9BMC///1vdu7cyWeffcbs2bOL7H/v3j3u3btnfJySkgJAUlISOp0OnU5HZmYmiYmJWFtbP5yTKAfd3fz4snPBoFdVdThFqHINZGZmYp2ZQmJiYlWHU4Tir6/C4wPlx1g4vrS0NAAMBkMVR2Z5lm7/oBpc32rSBibeTcQaBdaf0q+vxFcpxcVXk9tAIYSwlGqfGOfk5HDy5EnmzJlj3KZWq+nfvz/h4eHFvmbJkiUsXLiwyPamTZs+sDhrnbA//321SqMQwkRaWhqurq5VHYbFSPunYGFl7yLEw1bT2kAhhLCkap8YJyQkkJeXh6enp8l2T09PoqKiin3NnDlzmD59uvGxXq8nKSkJd3d3VCoVqampNGrUiOvXr+Pi4vJA468Iia9yJL7KU3qMheMzGAykpaXh7e1d1aFZ1INo/6D6XV+lkfgqR+KrnOLiq6ltoBBCWFK1T4wrwtbWFltbW5Ntbm5uRfZzcXFR5B+9AhJf5Uh8laf0GO+PT3pJ8pnb/kH1ur5KJPFVjsRXOYXjkzZQCCFKV+0n36pbty4ajYa4uDiT7XFxcdSvX7+KohJCiAdP2j8hhBBCCMuo9omxjY0NnTt35qeffjJu0+v1/PTTT/To0aMKIxNCiAdL2j8hhBBCCMuoEUOpp0+fzujRowkMDKRr166sWLGCjIwM4yyt5WVra8uCBQuKDDdUComvciS+ylN6jEqPz5Is3f6B8utP4qscia9yJD4hhKiZVIYaMnf/xx9/zLJly7h9+zYBAQGsXLmSbt26VXVYQgjxwEn7J4QQQghROTUmMRZCCCGEEEIIISqi2t9jLIQQQgghhBBCVIYkxkIIIYQQQgghajVJjIUQQgghhBBC1GqSGAshhBBCCCGEqNUkMbaA2NhYHnvsMfz8/Gjfvj0ZGRlVHZKJJk2a4O/vT0BAAI899lhVh1OszMxMGjduzIwZM6o6FBPJyckEBgYSEBBAu3btWLt2bVWHZOL69ev07dsXPz8//P392bp1a1WHVMQzzzxDnTp1ePbZZx/4sQ4fPszgwYPx9vZGpVKxffv2B37M2k7av8qT9q9ipP0zJe2fEEJUTo1Yx7iqjRkzhsWLF/PII4+QlJSkyLUDjx49ipOTU1WHUaJ3332X7t27V3UYRTg7O3P48GEcHBzIyMigXbt2DB06FHd396oODQArKytWrFhBQEAAt2/fpnPnzgQFBeHo6FjVoRlNmTKFl19+mfXr1z/wY2VkZNChQwdefvllhg4d+sCPJ6T9swRp/ypG2j9T0v4JIUTlSGJcSRcuXMDa2ppHHnkEAK1WW8URVT8XL14kKiqKwYMHc/78+aoOx4RGo8HBwQGAe/fuYTAYUNIKZ15eXnh5eQFQv3596tatS1JSkqI+GPbt25eDBw8+lGMNGjSIQYMGPZRjCWn/LEHav4qT9s+UtH9CCFE5NX4otTlDi1atWkWTJk2ws7OjW7du/PLLL2aXf/HiRZycnBg8eDCdOnUiNDRUUfEBqFQqHn30Ubp06cLGjRsVF9+MGTNYsmRJuV7zMONLTk6mQ4cONGzYkJkzZ1K3bl1FxVfg5MmT5OXl0ahRI0XGJx4+af+k/ZP2TxnxCSGEUL4anxgXDC1atWpVsc9/+eWXTJ8+nQULFnDq1Ck6dOjAE088QXx8vHGfgvurCv/cunWL3Nxcfv75Z1avXk14eDh79+5l7969iokP4MiRI5w8eZLvvvuO0NBQzp49q5j4vv32W1q1akWrVq3Mjulhxgfg5ubGb7/9RmxsLJs2bSIuLk5R8QEkJSUxatQo1qxZY3ZsDzM+UTWk/ZP2T9q/qo9PCCFENWGoRQDDN998Y7Kta9euhokTJxof5+XlGby9vQ1Lliwxq8yjR48aBg4caHy8dOlSw9KlSxUTX2EzZswwfP7554qJb/bs2YaGDRsaGjdubHB3dze4uLgYFi5cqJj4Cvv73/9u2Lp1q6Liy87ONjzyyCOGDRs2VCiuBx2fwWAwHDhwwDBs2LBKxVdexZ1PbSbtn7R/0v49/PgMBmn/hBCiuqjxPcalycnJ4eTJk/Tv39+4Ta1W079/f8LDw80qo0uXLsTHx3P37l30ej2HDx+mTZs2iokvIyODtLQ0ANLT09m/fz9t27ZVTHxLlizh+vXrXLlyhffff59x48bx1ltvKSa+uLg4Y/2lpKRw+PBhWrdurZj4DAYDY8aM4fHHH2fkyJEWicuS8Qnlkvav6uOT9k/aPyGEEMpRqyffSkhIIC8vD09PT5Ptnp6eREVFmVWGlZUVoaGh9OnTB4PBwMCBAwkODlZMfHFxcTzzzDMA5OXlMW7cOLp06aKY+B4kS8R39epVXn31VeOkM5MnT6Z9+/aKie+///0vX375Jf7+/sb747744guLxGip69u/f39+++03MjIyaNiwIVu3bqVHjx6Vjk9UjrR/VR/fgyTtX9XHB9L+CSFEdVKrE2NLUfJMkM2aNeO3336r6jDMMmbMmKoOoYiuXbty5syZqg6jRL1790av11d1GKXat2/fQztWeno6ly5dMj6OjY3lzJkzaLVafHx8HloctYm0f5Yh7V/5SftnSto/IYSonFqdGNetWxeNRlNkMpG4uDjq169fRVH9j8RXORJf5Sg9vuKcOHGCxx57zPh4+vTpAIwePZp169ZVUVTKpPTrK/FVjsRXOUqPrzjS/gkhROXU6nuMbWxs6Ny5Mz/99JNxm16v56efflLEUCeJr3IkvspRenzF6du3r3HY5/0/8qGwKKVfX4mvciS+ylF6fMWR9k8IISqnxvcYlzW0aPr06YwePZrAwEC6du3KihUryMjI4KWXXpL4JD6Jr4rjE5Wj9Osr8Ul8Ep8QQgjFeNjTYD9sBw4cMABFfkaPHm3c56OPPjL4+PgYbGxsDF27djUcO3ZM4pP4JD4FxCcqR+nXV+KT+CQ+IYQQSqEyGAwGy6TYQgghhBBCCCFE9VOr7zEWQgghhBBCCCEkMRZCCCGEEEIIUatJYiyEEEIIIYQQolaTxFgIIYQQQgghRK0mibEQQgghhBBCiFpNEmMhhBBCCCGEELWaJMZCCCGEEEIIIWo1SYyFEEIIIYQQQtRqkhgLIYQQQgghhKjVJDEWQgghhBBCCFGrSWIsqqUxY8agUqmK/Fy6dMnkORsbG1q0aME777xDbm4uAAcPHjR5Tb169QgKCuLcuXNVfFZCCGEeaQOFEEIIy5LEWFRbTz75JH/88YfJT9OmTU2eu3jxIm+88QZvv/02y5YtM3l9dHQ0f/zxBz/++CP37t3jqaeeIicnpypORQghyk3aQCGEEMJyJDEW1ZatrS3169c3+dFoNCbPNW7cmL///e/079+f7777zuT1Hh4e1K9fn06dOjF16lSuX79OVFSU8fm+ffvy+uuvM2vWLLRaLfXr1+ftt99+mKcohBAlkjZQCCGEsBxJjEWtYG9vX2JPSEpKClu2bAHAxsbG5Ln169fj6OjI8ePHWbp0Ke+88w579+594PEKIYQlSRsohBBClE4SY1Ft7dixAycnJ+PPc889V2Qfg8HAvn37+PHHH3n88cdNnmvYsCFOTk64ubmxadMm/vKXv+Dr62uyj7+/PwsWLKBly5aMGjWKwMBAfvrppwd6XkIIYQ5pA4UQQgjLsarqAISoqMcee4x//etfxseOjo7G/xd8YNTpdOj1ev72t78VGQL4888/4+DgwLFjxwgNDeXf//53kWP4+/ubPPby8iI+Pt6yJyKEEBUgbaAQQghhOZIYi2rL0dGRFi1aFPtcwQdGGxsbvL29sbIq+lZv2rQpbm5utG7dmvj4eF544QUOHz5sso+1tbXJY5VKhV6vt9xJCCFEBUkbKIQQQliODKUWNVLBB0YfH59iPxAWNnHiRM6fP88333zzEKITQogHS9pAIYQQonwkMRYCcHBwYNy4cSxYsACDwVDV4QghxEMlbaAQQojaThJjIf40adIkIiMj2bp1a1WHIoQQD520gUIIIWozlUG+GhZCCCGEEEIIUYtJj7EQQgghhBBCiFpNEmMhhBBCCCGEELWaJMZCCCGEEEIIIWo1SYyFEEIIIYQQQtRqkhgLIYQQQgghhKjVJDEWQgghhBBCCFGrSWIshBBCCCGEEKJWk8RYCCGEEEIIIUStJomxEEIIIYQQQohaTRJjIYQQQgghhBC1miTGQgghhBBCCCFqtf8HeAnhbM1E9vUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "fig, axes = plt.subplots(2, 3, figsize=(10, 5), layout=\"tight\")\n", "\n", @@ -668,9 +710,63 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[0;31mInit signature:\u001b[0m\n", + "\u001b[0mAUPIMO\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m \u001b[0mnum_thresholds\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m300000\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m \u001b[0mfpr_bounds\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m1e-05\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0001\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m \u001b[0mreturn_average\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m \u001b[0mforce\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mDocstring:\u001b[0m \n", + "Area Under the Per-Image Overlap (PIMO) curve.\n", + "\n", + "This torchmetrics interface is a wrapper around the functional interface, which is a wrapper around the numpy code.\n", + "The tensors are converted to numpy arrays and then passed and validated in the numpy code.\n", + "The results are converted back to tensors and wrapped in an dataclass object.\n", + "\n", + "Scores are computed from the integration of the PIMO curves within the given FPR bounds, then normalized to [0, 1].\n", + "It can be thought of as the average TPR of the PIMO curves within the given FPR bounds.\n", + "\n", + "Details: `anomalib.metrics.per_image.pimo`.\n", + "\n", + "Notation:\n", + " N: number of images\n", + " H: image height\n", + " W: image width\n", + " K: number of thresholds\n", + "\n", + "Attributes:\n", + " anomaly_maps: floating point anomaly score maps of shape (N, H, W)\n", + " masks: binary (bool or int) ground truth masks of shape (N, H, W)\n", + "\n", + "Args:\n", + " num_thresholds: number of thresholds to compute (K)\n", + " fpr_bounds: lower and upper bounds of the FPR integration range\n", + " force: whether to force the computation despite bad conditions\n", + "\n", + "Returns:\n", + " tuple[PIMOResult, AUPIMOResult]: PIMO and AUPIMO results dataclass objects. See `PIMOResult` and `AUPIMOResult`.\n", + "\u001b[0;31mInit docstring:\u001b[0m\n", + "Area Under the Per-Image Overlap (PIMO) curve.\n", + "\n", + "Args:\n", + " num_thresholds: [passed to parent `PIMO`] number of thresholds used to compute the PIMO curve\n", + " fpr_bounds: lower and upper bounds of the FPR integration range\n", + " return_average: if True, return the average AUPIMO score; if False, return all the individual AUPIMO scores\n", + " force: if True, force the computation of the AUPIMO scores even in bad conditions (e.g. few points)\n", + "\u001b[0;31mFile:\u001b[0m ~/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages/anomalib/metrics/pimo/pimo.py\n", + "\u001b[0;31mType:\u001b[0m ABCMeta\n", + "\u001b[0;31mSubclasses:\u001b[0m " + ] + } + ], "source": [ "AUPIMO?" ] @@ -686,9 +782,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Metric `AUPIMO` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n" + ] + } + ], "source": [ "aupimo_custom = AUPIMO(\n", " # with `False` all the values are returned in a dataclass\n", @@ -704,9 +808,21 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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vYJaunRpAMDt27fTjcvR0REREREa5U+fPk13u7R69+6NpKQk7Nq1C4cOHUJkZKTa5GJFixaFra0tFAoFWrdurfXHxcVF1d7a2hq9e/fGhg0b8OzZM3Ts2BGzZs1CfHx8puIiIiLKDewYExERZYGNjQ1WrlyJ77//Hp07d9bZrlGjRmjdujU2bNigtsyR0jfffIP79+/jyy+/1Hn1FgDatGkDW1tbzJkzR6MzmXryrdKlS+P8+fNITExUlR04cADPnz/PzMtDxYoVUbVqVWzfvh3bt29HsWLF1K54Gxsbo3v37ti1a5fWznpoaKjq/+/evVOrMzMzQ6VKlSCEgFwuz1RcREREuYFDqYmIiLJI1xDitDZv3gwfHx907doVfn5+aNq0KRISEvD777/j1KlT6N27NyZNmpTuPuzs7PDjjz9iyJAhqFu3Lvz8/ODo6IgbN24gNjZWte7wkCFDsHPnTrRr1w69evXCo0ePsGXLFtUV58zo3bs3vvvuO1hYWGDw4MEa92HPnTsXJ0+eRP369TF06FBUqlQJ4eHhuHr1Ko4dO4bw8HAAKZ16Nzc3NG7cGK6urggKCsLPP/+Mjh07pntfNRERUV7hFWMiIqJcVqxYMVy8eBHfffcdrl27hrFjx+Kbb76BXC7Hxo0bsXXrVq33/6Y1ePBg7Nu3D3Z2dpg5cyYmT56Mq1evon379qo2bdu2xaJFi3D//n2MHTsW586dw4EDB+Dp6ZnpuHv37o3k5GTExsaqZqNOzdXVFRcvXsSgQYPw+++/q9YyDg8Px7x581Tthg8fjujoaCxevBgjRozAnj17MHr0aGzZsiXTMREREeUGmcjO4odEREREREREBRyvGBMREREREZFBY8eYiIiIiIiIDBo7xkRERERERGTQ2DEmIiIiIiIig8aOMRERERERERk0doyJiIiIiIjIoLFjTERERERERAaNHWMiIiIiIiIyaOwYExERERERkUFjx5iIiIiIiIgMGjvGREREREREZNDYMSYiIiIiIiKDxo4xERERERERGTR2jImIiIiIiMigsWNMREREREREBo0dYyIiIiIiIjJo7BgTERERERGRQWPHmIiIiIiIiAwaO8ZERERERERk0NgxJiIiIiIiIoPGjjEREREREREZNHaMiYiIiIiIyKCxY0xEREREREQGjR1jKpCio6Ph4uICf3///A6F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", + "text/plain": [ + "
" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "fig, axes = plt.subplots(2, 3, figsize=(10, 5), layout=\"tight\")\n", "\n", diff --git a/src/anomalib/models/components/base/export_mixin.py b/src/anomalib/models/components/base/export_mixin.py index dbcd6166de..baaf07ec95 100644 --- a/src/anomalib/models/components/base/export_mixin.py +++ b/src/anomalib/models/components/base/export_mixin.py @@ -125,7 +125,7 @@ def to_onnx( dynamic_axes = ( {"input": {0: "batch_size"}, "output": {0: "batch_size"}} if input_size - else {"input": {0: "batch_size", 2: "height", 3: "width"}, "output": {0: "batch_size"}} + else {"input": {0: "batch_size", 2: "height", 3: "weight"}, "output": {0: "batch_size"}} ) onnx_path = export_root / "model.onnx" # apply pass through the model to get the output names diff --git a/tools/tiled_ensemble/ens_config.yaml b/tools/tiled_ensemble/ens_config.yaml deleted file mode 100644 index 2490b22e9a..0000000000 --- a/tools/tiled_ensemble/ens_config.yaml +++ /dev/null @@ -1,43 +0,0 @@ -seed: 42 -accelerator: "gpu" -default_root_dir: "results" - -tiling: - tile_size: [128, 128] - stride: 128 - -normalization_stage: image # on what level we normalize, options: [tile, image, none] -thresholding: - method: F1AdaptiveThreshold # refer to documentation for thresholding methods - stage: image # stage at which we apply threshold, options: [tile, image] - -data: - class_path: anomalib.data.MVTec - init_args: - root: ./datasets/MVTec - category: bottle - train_batch_size: 32 - eval_batch_size: 32 - num_workers: 8 - task: segmentation - transform: null - train_transform: null - eval_transform: null - test_split_mode: from_dir - test_split_ratio: 0.2 - val_split_mode: same_as_test - val_split_ratio: 0.5 - image_size: [256, 256] - -SeamSmoothing: - apply: True # if this is applied, area around tile seams are is smoothed - sigma: 2 # sigma of gaussian filter used to smooth this area - width: 0.1 # width factor, multiplied by tile dimension gives the region width around seam which will be smoothed - -TrainModels: - model: - class_path: Padim - - metrics: - pixel: AUROC - image: AUROC diff --git a/tools/tiled_ensemble/eval.py b/tools/tiled_ensemble/eval.py deleted file mode 100644 index 58be27c25c..0000000000 --- a/tools/tiled_ensemble/eval.py +++ /dev/null @@ -1,28 +0,0 @@ -"""Run tiled ensemble prediction.""" - -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -from pathlib import Path - -from jsonargparse import ArgumentParser - -from anomalib.pipelines.tiled_ensemble import EvalTiledEnsemble - - -def get_parser() -> ArgumentParser: - """Create a new parser if none is provided.""" - parser = ArgumentParser() - parser.add_argument("--config", type=str | Path, help="Configuration file path.", required=True) - parser.add_argument("--root", type=str | Path, help="Weights file path.", required=True) - - return parser - - -if __name__ == "__main__": - args = get_parser().parse_args() - - print("Running tiled ensemble test pipeline.") - # pass the path to root dir with checkpoints - test_pipeline = EvalTiledEnsemble(args.root) - test_pipeline.run(args) diff --git a/tools/tiled_ensemble/train.py b/tools/tiled_ensemble/train.py deleted file mode 100644 index 8aed47ea0d..0000000000 --- a/tools/tiled_ensemble/train.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Run tiled ensemble training.""" - -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -from anomalib.pipelines.tiled_ensemble import EvalTiledEnsemble, TrainTiledEnsemble - -if __name__ == "__main__": - print("Running tiled ensemble train pipeline") - train_pipeline = TrainTiledEnsemble() - # run training - train_pipeline.run() - - print("Running tiled ensemble test pipeline.") - # pass the root dir from train run to load checkpoints - test_pipeline = EvalTiledEnsemble(train_pipeline.root_dir) - test_pipeline.run()