diff --git a/README.md b/README.md index 79388da..c8166e5 100644 --- a/README.md +++ b/README.md @@ -1,162 +1 @@ -# Plan2Scene - -Official repository of the paper: - -__Plan2Scene: Converting floorplans to 3D scenes__ - -[Madhawa Vidanapathirana](https://github.com/madhawav), [Qirui Wu](), [Yasutaka Furukawa](), [Angel X. Chang](https://github.com/angelxuanchang) -, [Manolis Savva](https://github.com/msavva) - -[[Paper](https://arxiv.org/abs/2106.05375), [Project Page](https://3dlg-hcvc.github.io/plan2scene/), [Google Colab Demo](https://colab.research.google.com/drive/1lDkbfIV0drR1o9D0WYzoWeRskB91nXHq?usp=sharing)] - -![Task Overview](docs/img/task-overview.png) -In the Plan2Scene task, we produce a textured 3D mesh of a residence from a floorplan and set of photos. - -## Dependencies -1) We use a conda environment initialized as [described here](./docs/md/conda_env_setup.md). -2) Setup the `command line library` of [Embark Studios texture-synthesis](https://github.com/EmbarkStudios/texture-synthesis#command-line-binary) project. - 1) You can download a pre-built binary [available here](https://github.com/EmbarkStudios/texture-synthesis/releases). Alternatively, you may build from the source. - 2) Download the seam mask [available here](https://github.com/EmbarkStudios/texture-synthesis/blob/main/imgs/masks/1_tile.jpg). - 3) Rename `./conf/plan2scene/seam_correct-example.json` to 'seam_correct.json' and update the paths to the texture synthesis command line library binary, and the seam mask. - -Use 'code/src' as the source root when running python scripts. -```bash -export PYTHONPATH=./code/src -``` - -## Data -1) Rent3D++ dataset - 1. Download and copy the [Rent3D++ dataset](https://forms.gle/mKAmnrzAm3LCK9ua6) to the `[PROJECT_ROOT]/data` directory. The data organization is [described here](docs/md/rent3dpp_data_organization.md). - 2. [Optional] We have provided 3D scenes pre-populated with CAD models of objects. - If you wish to re-populate these scenes using the _Object Placement_ approach we use, [follow the instructions here](docs/md/place_cad_models.md). - 3. To replicate our results, you should use the pre-extracted crops we provide. - These crops are provided with the Rent3D++ dataset and are copied to the `./data/processed/surface_crops` directory. - - [Optional] If you wish to extract new crops instead of using these provided crops, following [these instructions](./docs/md/extract_crops.md). - 4. Select ground truth reference crops and populate photo room assignment lists. - ```bash - # Select ground truth reference crops. - python code/scripts/plan2scene/preprocessing/generate_reference_crops.py ./data/processed/gt_reference/train ./data/input/photo_assignments/train train - python code/scripts/plan2scene/preprocessing/generate_reference_crops.py ./data/processed/gt_reference/val ./data/input/photo_assignments/val val - python code/scripts/plan2scene/preprocessing/generate_reference_crops.py ./data/processed/gt_reference/test ./data/input/photo_assignments/test test - - # We evaluate Plan2Scene by simulating photo un-observations. - # Generate photoroom.csv files considering different photo un-observation ratios. - python code/scripts/plan2scene/preprocessing/generate_unobserved_photo_assignments.py ./data/processed/photo_assignments/train ./data/input/photo_assignments/train ./data/input/unobserved_photos.json train - python code/scripts/plan2scene/preprocessing/generate_unobserved_photo_assignments.py ./data/processed/photo_assignments/val ./data/input/photo_assignments/val ./data/input/unobserved_photos.json val - python code/scripts/plan2scene/preprocessing/generate_unobserved_photo_assignments.py ./data/processed/photo_assignments/test ./data/input/photo_assignments/test ./data/input/unobserved_photos.json test - ``` -2) [Optional] Stationary Textures Dataset - We use one of the following datasets to train the texture synthesis model. - _Not required if you are using pre-trained models._ - - __Version 1__: We use this dataset in our CVPR paper. Details are available [here](./docs/md/stationary_textures_dataset_v1.md). - - __Version 2__: Updated textures dataset which provides improved results on the Rent3D++ dataset. Details are available [here](./docs/md/stationary_textures_dataset_v2.md). - -3) [Optional] [Substance Mapped Textures dataset](./docs/md/smt_dataset.md). _Only used by the retrieve baseline._ - -## Pretrained models -Pretrained models are available [here](./docs/md/pretrained_models.md). - -## Inference on Rent3D++ dataset -1) Download and pre-process the Rent3D++ dataset as described in the data section. -2) Setup a [pretrained model](./docs/md/pretrained_models.md) or train a new Plan2Scene network. -2) Synthesize textures for observed surfaces using the VGG textureness score. - ```bash - # For test data without simulating photo unobservations. (drop = 0.0) - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 - python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/test/drop_0.0 ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 - # Results are stored at ./data/processed/vgg_crop_select/test/drop_0.0 - ``` - -4) Propagate textures to unobserved surfaces using our texture propagation network. - ```bash - python code/scripts/plan2scene/texture_prop/gnn_texture_prop.py ./data/processed/gnn_prop/test/drop_0.0 ./data/processed/vgg_crop_select/test/drop_0.0 test GNN_PROP_CONF_PATH GNN_PROP_CHECKPOINT_PATH --keep-existing-predictions --drop 0.0 - ``` - To preview results, follow the instructions below. - -## Previewing outputs -1) Complete inference steps. -2) Correct seams of predicted textures and make them tileable. - ```bash - # For test data without simulating photo unobservations. - python code/scripts/plan2scene/postprocessing/seam_correct_textures.py ./data/processed/gnn_prop/test/drop_0.0/tileable_texture_crops ./data/processed/gnn_prop/test/drop_0.0/texture_crops test --drop 0.0 - ``` -3) Generate .scene.json files with embedded textures using [embed_textures.py](code/scripts/plan2scene/postprocessing/embed_textures.py). - A scene.json file describes the 3D geometry of a house. - It can be previewed via a browser using the 'scene-viewer' of [SmartScenesToolkit](https://github.com/smartscenes/sstk) (You will have to clone and build the SmartScenesToolkit). - ```bash - # For test data without simulating photo unobservations. - python code/scripts/plan2scene/postprocessing/embed_textures.py ./data/processed/gnn_prop/test/drop_0.0/archs ./data/processed/gnn_prop/test/drop_0.0/tileable_texture_crops test --drop 0.0 - # scene.json files are created in the ./data/processed/gnn_prop/test/drop_0.0/archs directory. - ``` -4) Render .scene.json files as .pngs using [render_house_jsons.py](code/scripts/plan2scene/render_house_jsons.py). - - Download and build the [SmartScenesToolkit](https://github.com/smartscenes/sstk). - - Rename `./conf/render-example.json` to `./conf/render.json` and update its fields to point to scene-toolkit. - - Run the following command to generate previews. - ```bash - CUDA_VISIBLE_DEVICES=0 python code/scripts/plan2scene/render_house_jsons.py ./data/processed/gnn_prop/test/drop_0.0/archs --scene-json - # A .png file is created for each .scene.json file in the ./data/processed/gnn_prop/test/drop_0.0/archs directory. - ``` -5) Generate qualitative result pages with previews using [preview_houses.py](code/scripts/plan2scene/preview_houses.py). - ```bash - python code/scripts/plan2scene/preview_houses.py ./data/processed/gnn_prop/test/drop_0.0/previews ./data/processed/gnn_prop/test/drop_0.0/archs ./data/input/photos test --textures-path ./data/processed/gnn_prop/test/drop_0.0/tileable_texture_crops 0.0 - # Open ./data/processed/gnn_prop/test/drop_0.0/previews/preview.html - ``` -## Test on Rent3D++ dataset -1) [Optional] Download a pre-trained model or train the substance classifier used by the Subs metric. - Training instructions are available [here](./docs/md/train_substance_classifier.md). - Pre-trained weights are available [here](./docs/md/pretrained_models.md). - Skip this step to omit the Subs metric. -2) Generate overall evaluation report at 60% photo unobservations. We used this setting in paper evaluations. - ```bash - # Synthesize textures for observed surfaces using the VGG textureness score. - # For the case: 60% (i.e. 0.6) of the photos unobserved. - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/test/drop_0.6 test --drop 0.6 - python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/test/drop_0.6 ./data/processed/texture_gen/test/drop_0.6 test --drop 0.6 - - # Propagate textures to un-observed surfaces using our GNN. - # For the case: 60% (i.e. 0.6) of the photos unobserved. - python code/scripts/plan2scene/texture_prop/gnn_texture_prop.py ./data/processed/gnn_prop/test/drop_0.6 ./data/processed/vgg_crop_select/test/drop_0.6 test GNN_PROP_CONF_PATH GNN_PROP_CHECKPOINT_PATH --keep-existing-predictions --drop 0.6 - - # Correct seams of texture crops and make them tileable. - # For test data where 60% of photos are unobserved. - python code/scripts/plan2scene/postprocessing/seam_correct_textures.py ./data/processed/gnn_prop/test/drop_0.6/tileable_texture_crops ./data/processed/gnn_prop/test/drop_0.6/texture_crops test --drop 0.6 - - # Generate overall results at 60% simulated photo unobservations. - python code/scripts/plan2scene/test.py ./data/processed/gnn_prop/test/drop_0.6/tileable_texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -3) Generate evaluation report for observed surfaces. No simulated unobservation of photos. We used this setting in paper evaluations. - ```bash - # Run inference on using drop=0.0. - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 - python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/test/drop_0.0 ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 - - # Correct seams of texture crops and make them tileable by running seam_correct_textures.py. - python code/scripts/plan2scene/postprocessing/seam_correct_textures.py ./data/processed/vgg_crop_select/test/drop_0.0/tileable_texture_crops ./data/processed/vgg_crop_select/test/drop_0.0/texture_crops test --drop 0.0 - - # Generate evaluation results for observed surfaces. - python code/scripts/plan2scene/test.py ./data/processed/vgg_crop_select/test/drop_0.0/tileable_texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -5) Generate evaluation report for unobserved surfaces at 60% photo unobservations. We used this setting in the paper evaluations. - ```bash - # It is assumed that the user has already generated the overall report at 0.6 drop fraction. - - # Generate results on unobserved surfaces at 60% simulated photo unobservations. - python code/scripts/plan2scene/test.py ./data/processed/gnn_prop/test/drop_0.6/tileable_texture_crops ./data/processed/gt_reference/test/texture_crops test --exclude-prior-predictions ./data/processed/vgg_crop_select/test/drop_0.6/texture_crops - ``` - - 6) Generate evaluation report on FID metric as described [here](./docs/md/compute_fid_metric.md). - -## Inference on custom data -If you have scanned images of floorplans, you can use [raster-to-vector](https://github.com/art-programmer/FloorplanTransformation) to convert those floorplan images to a vector format. Then, follow the [instructions here](./docs/md/plan2scene_on_r2v.md) to create textured 3D meshes of houses. - -If you have floorplan vectors in another format, you can convert them to the raster-to-vector __annotation format__. -Then, follow the same instructions as before to create textured 3D meshes of houses. -The R2V annotation format is explained with examples in the [data section of the raster-to-vector repository](https://github.com/art-programmer/FloorplanTransformation#data). - -## Training a new Plan2Scene network -Plan2Scene consists of two trainable components, 1) the texture synthesis stage and 2) the texture propagation stage. Each stage is trained separately. The training procedure is as follows. -1) Train the texture synthesis stage as described [here](./docs/md/train_texture_synth.md). -2) Train the texture propagation stage as described [here](./docs/md/train_texture_prop.md). - -## Baseline Models -The baseline models are [available here](./docs/md/baselines.md). +# Plan to Mesh diff --git a/code/src/plan2scene/texture_gen/__init__.py b/code/src/plan2scene/texture_gen/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/custom_ops/__init__.py b/code/src/plan2scene/texture_gen/custom_ops/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/custom_ops/noise.py b/code/src/plan2scene/texture_gen/custom_ops/noise.py deleted file mode 100644 index f736364..0000000 --- a/code/src/plan2scene/texture_gen/custom_ops/noise.py +++ /dev/null @@ -1,35 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/custom_ops/noise/noise.py - -from torch import nn -from torch.autograd import Function -import plan2scene.texture_gen.utils.neural_texture_helper as utils_nt -import noise_cuda -import torch -import numpy as np -from torch.autograd import gradcheck - - -class NoiseFunction(Function): - @staticmethod - def forward(ctx, position, seed): - ctx.save_for_backward(position, seed) - noise = noise_cuda.forward(position, seed) - return noise - - @staticmethod - def backward(ctx, grad_noise): - position, seed = ctx.saved_tensors - d_position_bilinear = noise_cuda.backward(position, seed) - - d_position = torch.stack([torch.zeros_like(d_position_bilinear), d_position_bilinear], dim=0) - - return grad_noise.unsqueeze(2) * d_position, None - - -class Noise(nn.Module): - def __init__(self): - super(Noise, self).__init__() - - def forward(self, position, seed): - noise = NoiseFunction.apply(position.contiguous(), seed.contiguous()) - return noise diff --git a/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/noise_cuda.cpp b/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/noise_cuda.cpp deleted file mode 100644 index a82f5a5..0000000 --- a/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/noise_cuda.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// Imported from neural texture: https://github.com/henzler/neuraltexture -#include -#include - -// C++ interface -// NOTE: AT_ASSERT has become AT_CHECK on master after 0.4. -#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor") -#define CHECK_CONTIGUOUS(x) AT_ASSERTM(x.is_contiguous(), #x " must be contiguous") -#define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x) - - -// ################### CUDA forward declarations ################### -torch::Tensor noise_cuda_forward(torch::Tensor position,torch::Tensor seed); - -torch::Tensor noise_forward(torch::Tensor position,torch::Tensor seed) { - CHECK_INPUT(position); - CHECK_INPUT(seed); - - return noise_cuda_forward(position, seed); -} - - -// ################### CUDA backward declarations ################### -torch::Tensor noise_cuda_backward(torch::Tensor position, torch::Tensor seed); - -torch::Tensor noise_backward(torch::Tensor position, torch::Tensor seed) { - CHECK_INPUT(position); - CHECK_INPUT(seed); - - return noise_cuda_backward(position, seed); -} - -PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { - m.def("forward", &noise_forward, "Noise forward (CUDA)"); - m.def("backward", &noise_backward, "Noise backward (CUDA)"); -} \ No newline at end of file diff --git a/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/noise_cuda_kernel.cu b/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/noise_cuda_kernel.cu deleted file mode 100644 index 7f61618..0000000 --- a/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/noise_cuda_kernel.cu +++ /dev/null @@ -1,262 +0,0 @@ -// Imported from neural texture: https://github.com/henzler/neuraltexture - -#include -#include -#include -#include - -const double PHI = 1.61803398874989484820459 * 00000.1; -const double PI = 3.14159265358979323846264 * 00000.1; -const double THETA = (3.14159265358979323846264 / 4.0) * 00000.1; -const double SQ2 = 1.41421356237309504880169 * 10000.0; - - -__device__ __forceinline__ int get_neighbour_offset(unsigned int i, unsigned int j) { - int neighbour_offset = (i >> j) & 1; - return neighbour_offset; -} - -template -__device__ __forceinline__ int d_floor(scalar_t a) { - return 0.0; -} - -// https://stackoverflow.com/questions/4200224/random-noise-functions-for-glsl -template -__device__ __forceinline__ scalar_t get_nearest_noise( - torch::TensorAccessor position, - scalar_t __restrict__ seed, - const int dim) { - - auto d = 0.0; - - for (int index_dim = 0; index_dim < dim; index_dim++) { - auto a = PHI; - - if (index_dim == 1) { - a = PI; - } - - if (index_dim == 2) { - a = THETA; - } - - auto p = position[index_dim]; - auto p_floor = floor(p); - auto b = p_floor * (seed + PHI) - a; - d += b * b; - } - - auto s = sqrt(d + 1.0e-8); - auto t = tan(s) * SQ2; - auto noise = t - floor(t); - - return noise; -} - -// ######################### Forward ############################# -template -__device__ __forceinline__ scalar_t get_bilinear_noise( - torch::TensorAccessor position, - scalar_t __restrict__ seed, - const int dim) { - - scalar_t noise = 0; - - // calculate bilinear noise - // reference to bilinear interpolation: - // https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/interpolation/bilinear-filtering - for(unsigned int j = 0; j < pow(2, dim); j++) { - - auto weight = 1.0; - - // calculate weights for interpolation - for (unsigned int i = 0; i < dim; i++) { - auto lambda = (position[i] - 0.5) - floor(position[i] - 0.5); - auto offset = get_neighbour_offset(j,i); - - if (offset == 0) { - weight = weight * (1 - lambda); - } - else { - weight = weight * lambda; - } - } - - for(unsigned int p = 0; p < dim; p++) { - auto offset = get_neighbour_offset(j,p); - position[p] += offset - 0.5; - } - - auto nearest_noise = get_nearest_noise(position, seed, dim); - - noise = noise + weight * nearest_noise; - - for(unsigned int q = 0; q < dim; q++) { - auto offset = get_neighbour_offset(j,q); - position[q] -= offset - 0.5; - } - } - - return noise; -} - -template -__global__ void noise_cuda_forward_kernel( - torch::PackedTensorAccessor position, - torch::PackedTensorAccessor nearest_noise, - torch::PackedTensorAccessor bilinear_noise, - const int batch_size, - const int dim, - torch::PackedTensorAccessor seed - ) { - - const int index = blockIdx.x * blockDim.x + threadIdx.x; - - if(index < batch_size) { - - auto current_position = position[index]; - auto current_seed = seed[index]; - - nearest_noise[index] = get_nearest_noise(current_position, current_seed, dim); - bilinear_noise[index] = get_bilinear_noise(current_position, current_seed, dim); - } -} - -torch::Tensor noise_cuda_forward( - torch::Tensor position, - torch::Tensor seed) { - - const auto batch_size = position.size(0); - const int dim = position.size(1); - - auto options = torch::TensorOptions().dtype(position.type().scalarType()).device(torch::kCUDA); - auto nearest_noise = torch::zeros({batch_size}, options); - auto bilinear_noise = torch::zeros({batch_size}, options); - - const int threads = 512; - const dim3 blocks((batch_size / threads)+1); - - AT_DISPATCH_FLOATING_TYPES(position.type(), "noise_cuda_forward_kernel", ([&] { - noise_cuda_forward_kernel<<>>( - position.packed_accessor(), - nearest_noise.packed_accessor(), - bilinear_noise.packed_accessor(), - batch_size, - dim, - seed.packed_accessor() - ); - })); - - return torch::stack({nearest_noise, bilinear_noise}, 0); -} - -// ######################### Backward ############################# - - -template -__global__ void noise_cuda_backward_kernel( - torch::PackedTensorAccessor position, - torch::PackedTensorAccessor seed, - torch::PackedTensorAccessor d_position, - const int batch_size, - const int dim - ) { - - const int index = blockIdx.x * blockDim.x + threadIdx.x; - - if(index < batch_size) { - - auto current_d_position = d_position[index]; - auto current_position = position[index]; - auto current_seed = seed[index]; - - for(unsigned int j = 0; j < pow(2, dim); j++) { - - scalar_t weight = 1.0; - scalar_t d_weight[] = {1,1,1}; - - for (unsigned int i = 0; i < dim; i++) { - auto offset = get_neighbour_offset(j,i); - - auto lambda = (current_position[i] - 0.5) - floor(current_position[i] - 0.5); - - if (offset == 0) { - weight = weight * (1 - lambda); - } - else { - weight = weight * lambda; - } - - // calculate gradients with respect to each dim - for(unsigned int p = 0; p < dim; p++) { - - auto pos = (current_position[p] - 0.5); - - if (offset == 0) { - if (p == i) { - d_weight[p] *= -1 + d_floor(pos); - } else { - d_weight[p] *= 1 - (pos - floor(pos)); - } - - } else { - if (p != i) { - d_weight[p] *= pos - floor(pos); - } - } - } - } - - for(unsigned int p = 0; p < dim; p++) { - auto offset = get_neighbour_offset(j,p); - current_position[p] += offset - 0.5; - } - - auto nearest_noise = get_nearest_noise(current_position, current_seed, dim); - - // gradients for nearest are always 0 - // product rule: (weight * nearest)` = weight * d_nearest + d_weight[i] * nearest - for (unsigned int i = 0; i < dim; i++) { - current_d_position[i] += d_weight[i] * nearest_noise; - } - - for(unsigned int q = 0; q < dim; q++) { - auto offset = get_neighbour_offset(j,q); - current_position[q] -= offset - 0.5; - } - } - } -} - - -torch::Tensor noise_cuda_backward(torch::Tensor position, torch::Tensor seed) { - const auto batch_size = position.size(0); - const int dim = position.size(1); - - const int threads = 512; - const dim3 blocks((batch_size / threads)+1); - - auto d_position = torch::zeros_like(position); - - AT_DISPATCH_FLOATING_TYPES(d_position.type(), "noise_cuda_backward_kernel", ([&] { - noise_cuda_backward_kernel<<>>( - position.packed_accessor(), - seed.packed_accessor(), - d_position.packed_accessor(), - batch_size, - dim - ); - })); - - return d_position; -} - - - - - - - - - diff --git a/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/setup.py b/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/setup.py deleted file mode 100644 index 31ab57f..0000000 --- a/code/src/plan2scene/texture_gen/custom_ops/noise_kernel/setup.py +++ /dev/null @@ -1,15 +0,0 @@ -# Imported from neural texture: https://github.com/henzler/neuraltexture -from setuptools import setup -from torch.utils.cpp_extension import BuildExtension, CUDAExtension - -setup( - name='noise_cuda', - ext_modules=[ - CUDAExtension('noise_cuda', [ - 'noise_cuda.cpp', - 'noise_cuda_kernel.cu', - ]), - ], - cmdclass={ - 'build_ext': BuildExtension - }) diff --git a/code/src/plan2scene/texture_gen/custom_transforms/__init__.py b/code/src/plan2scene/texture_gen/custom_transforms/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/custom_transforms/hsv_transforms.py b/code/src/plan2scene/texture_gen/custom_transforms/hsv_transforms.py deleted file mode 100644 index 2026d13..0000000 --- a/code/src/plan2scene/texture_gen/custom_transforms/hsv_transforms.py +++ /dev/null @@ -1,9 +0,0 @@ -class ToHSV(object): - """ - TorchVision transform module that converts an image to HSV format. - """ - def __init__(self): - pass - - def __call__(self, img): - return img.convert("HSV") diff --git a/code/src/plan2scene/texture_gen/custom_transforms/random_crop.py b/code/src/plan2scene/texture_gen/custom_transforms/random_crop.py deleted file mode 100644 index 2562bda..0000000 --- a/code/src/plan2scene/texture_gen/custom_transforms/random_crop.py +++ /dev/null @@ -1,87 +0,0 @@ -import numbers -from torchvision import transforms -from PIL import Image - - -class RandomCropAndDropAlpha(object): - """ - Torchvision transform module that takes a random (opaque) crop from an alpha masked image. - Returns the crop after dropping the alpha channel. - """ - - def __init__(self, size, iter_count: int): - """ - Initializes transform. - :param size: Size of the crop. - :param iter_count: Maximum number of attempts made to take an opaque crop. - """ - if isinstance(size, numbers.Number): - self.size = (int(size), int(size)) - else: - self.size = size - self.iter_count = iter_count - - def __call__(self, img: Image) -> Image.Image: - """ - Obtains a random opaque crop from an alpha masked image. - :param img: Image considered. - :return: Crop if success or None. - """ - if img.width < self.size[0] or img.height < self.size[1]: - return None - - if len(img.getextrema()) == 3: - # RGB - i, j, h, w = transforms.RandomCrop.get_params(img, self.size) - crop = img.crop((j, i, w + j, i + h)) - return crop - - for i in range(self.iter_count): - i, j, h, w = transforms.RandomCrop.get_params(img, self.size) - crop = img.crop((j, i, w + j, i + h)) - if crop.getextrema()[3][0] == 255: - return crop.convert("RGB") - - -class RandomResizedCropAndDropAlpha(object): - """ - Takes an opaque random resized crop and drop the alpha channel. - """ - - def __init__(self, size, iter_count, scale: tuple = (0.08, 1.0), ratio=(3. / 4., 4. / 3.)): - """ - Initialize transform. - :param size: Size of the output crop. - :param iter_count: Max number of attempts to make an opaque crop. - :param scale: Range of size of the origin size cropped. - :param ratio: Range of aspect ratio of the origin aspect ratio cropped. - """ - if isinstance(size, numbers.Number): - self.size = (int(size), int(size)) - else: - self.size = size - self.iter_count = iter_count - self.scale = scale - self.ratio = ratio - - def __call__(self, img): - """ - Takes an opaque random resized crop and drop the alpha channel. - :param img: Input image considered. - :return: RGB crop. - """ - if img.width < self.size[0] or img.height < self.size[1]: - return None - if len(img.getextrema()) == 3: - # RGB - i, j, h, w = transforms.RandomResizedCrop.get_params(img, self.scale, self.ratio) - crop = img.crop((j, i, w + j, i + h)) - crop = crop.resize(self.size) - return crop - - for i in range(self.iter_count): - i, j, h, w = transforms.RandomResizedCrop.get_params(img, self.scale, self.ratio) - crop = img.crop((j, i, w + j, i + h)) - crop = crop.resize(self.size) - if crop.getextrema()[3][0] == 255: - return crop.convert("RGB") diff --git a/code/src/plan2scene/texture_gen/nets/__init__.py b/code/src/plan2scene/texture_gen/nets/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/nets/core_layers.py b/code/src/plan2scene/texture_gen/nets/core_layers.py deleted file mode 100644 index fdbe33a..0000000 --- a/code/src/plan2scene/texture_gen/nets/core_layers.py +++ /dev/null @@ -1,34 +0,0 @@ -# Code adapted from https://github.com/madhawav/Rent3D-to-STK/blob/master/src/models/core_layers.py - -import torch -import functools - - -def normalization(type): - if type == 'batch2d': - return functools.partial(torch.nn.BatchNorm2d) - elif type == 'batch3d': - return functools.partial(torch.nn.BatchNorm3d) - elif type == 'inst2d': - return functools.partial(torch.nn.InstanceNorm2d) - elif type == 'inst3d': - return functools.partial(torch.nn.InstanceNorm3d) - elif type == 'spectral': - return torch.nn.utils.spectral_norm - elif type == 'none' or type is None: - return functools.partial(torch.nn.Identity) - else: - raise NotImplementedError('Normalization {} is not implemented'.format(type)) - - -def non_linearity(type): - if type == 'relu': - return functools.partial(torch.nn.ReLU) - elif type == 'lrelu': - return functools.partial(torch.nn.LeakyReLU, negative_slope=0.2) - elif type == 'elu': - return functools.partial(torch.nn.ELU) - elif type == 'none' or type is None: - return functools.partial(torch.nn.Identity) - else: - raise NotImplementedError('Nonlinearity {} is not implemented'.format(type)) \ No newline at end of file diff --git a/code/src/plan2scene/texture_gen/nets/core_modules/__init__.py b/code/src/plan2scene/texture_gen/nets/core_modules/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/nets/core_modules/standard_block.py b/code/src/plan2scene/texture_gen/nets/core_modules/standard_block.py deleted file mode 100644 index b93d9f7..0000000 --- a/code/src/plan2scene/texture_gen/nets/core_modules/standard_block.py +++ /dev/null @@ -1,83 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/models/core_modules/standard_block.py - -from torch import nn -import torch -from plan2scene.texture_gen.nets.core_layers import normalization, non_linearity - - -class StandardBlock(nn.Module): - def __init__(self, type, nf_in, nf_out, kernel_size, stride, padding, norm_type=None, activation_type=None, - dropout_ratio=0.0, bias=True, padding_mode='zeros'): - super().__init__() - - # shortcut if features have different size - self.n_features_in = nf_in - self.n_features_out = nf_out - - self.norm_type = norm_type - self.bias = bias - norm = normalization(norm_type) - activation = non_linearity(activation_type) - - if type == 'linear': - layer = torch.nn.Linear - dropout = torch.nn.Dropout - self.layer = layer(nf_in, nf_out, bias) - - elif type == 'conv_2d': - layer = torch.nn.Conv2d - dropout = torch.nn.Dropout2d - self.layer = layer(nf_in, nf_out, kernel_size, stride, padding, bias, padding_mode=padding_mode) - - elif type == 'conv_transpose_2d': - layer = torch.nn.ConvTranspose2d - dropout = torch.nn.Dropout2d - self.layer = layer(nf_in, nf_out, kernel_size=kernel_size, stride=stride, padding=padding, bias=bias, - padding_mode=padding_mode) - - elif type == 'conv_3d': - layer = torch.nn.Conv3d - dropout = torch.nn.Dropout3d - self.layer = layer(nf_in, nf_out, kernel_size, stride, padding, bias, padding_mode=padding_mode) - - elif type == 'conv_transpose_3d': - layer = torch.nn.ConvTranspose3d - dropout = torch.nn.Dropout3d - self.layer = layer(nf_in, nf_out, kernel_size, stride, padding, biaspadding_mode=padding_mode) - - else: - raise NotImplementedError - - self.activation = activation() - self.dropout = dropout(dropout_ratio) - - if self.norm_type == 'specular': - self.norm = norm(self.conv) - else: - self.norm = norm(nf_out) - - def forward(self, input, style=None): - - if self.norm_type == 'specular': - output = self.norm(input) - - elif self.norm_type == 'adain': - output = self.layer(input) - - output = self.norm(output, style) - else: - output = self.layer(input) - - # output = self.norm(output) - - output = self.activation(output) - output = self.dropout(output) - - return output - - -class Conv2dBlock(StandardBlock): - def __init__(self, nf_in, nf_out, kernel_size, stride, padding, norm_type=None, activation_type=None, - dropout_ratio=0.0, bias=True, padding_mode='zeros'): - super().__init__('conv_2d', nf_in, nf_out, kernel_size, stride, padding, norm_type, activation_type, - dropout_ratio, bias, padding_mode=padding_mode) diff --git a/code/src/plan2scene/texture_gen/nets/neural_texture/__init__.py b/code/src/plan2scene/texture_gen/nets/neural_texture/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/nets/neural_texture/encoder.py b/code/src/plan2scene/texture_gen/nets/neural_texture/encoder.py deleted file mode 100644 index 6910a48..0000000 --- a/code/src/plan2scene/texture_gen/nets/neural_texture/encoder.py +++ /dev/null @@ -1,186 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/models/neural_texture/encoder.py - -import torch -import torch.nn as nn - - -__all__ = ['ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101', - 'resnet152', 'resnext50_32x4d', 'resnext101_32x8d', - 'wide_resnet50_2', 'wide_resnet101_2'] - - -model_urls = { - 'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth', - 'resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth', - 'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth', - 'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth', - 'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth', - 'resnext50_32x4d': 'https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth', - 'resnext101_32x8d': 'https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth', - 'wide_resnet50_2': 'https://download.pytorch.org/models/wide_resnet50_2-95faca4d.pth', - 'wide_resnet101_2': 'https://download.pytorch.org/models/wide_resnet101_2-32ee1156.pth', -} - - -def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1): - """3x3 convolution with padding""" - return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride, - padding=dilation, groups=groups, bias=False, dilation=dilation) - - -def conv1x1(in_planes, out_planes, stride=1): - """1x1 convolution""" - return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False) - - -class BasicBlock(nn.Module): - expansion = 1 - - def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1, - base_width=64, dilation=1, norm_layer=None): - super(BasicBlock, self).__init__() - if norm_layer is None: - norm_layer = nn.InstanceNorm2d - if groups != 1 or base_width != 64: - raise ValueError('BasicBlock only supports groups=1 and base_width=64') - if dilation > 1: - raise NotImplementedError("Dilation > 1 not supported in BasicBlock") - # Both self.conv1 and self.downsample layers downsample the input when stride != 1 - self.conv1 = conv3x3(inplanes, planes, stride) - self.bn1 = norm_layer(planes) - self.relu = nn.ReLU(inplace=True) - self.conv2 = conv3x3(planes, planes) - self.bn2 = norm_layer(planes) - self.downsample = downsample - self.stride = stride - - def forward(self, x): - identity = x - - out = self.conv1(x) - out = self.bn1(out) - out = self.relu(out) - - out = self.conv2(out) - out = self.bn2(out) - - if self.downsample is not None: - identity = self.downsample(x) - - out += identity - out = self.relu(out) - - return out - - -class ResNet(nn.Module): - - def __init__(self, param, model_param): - - block = BasicBlock - layers = [2, 2, 2, 2] - z_size = model_param.z - bottleneck_size = model_param.bottleneck_size - # bottleneck_size = 8 - # bottleneck_size = model_param.z - - zero_init_residual = False, - groups = 1 - width_per_group = 64 - replace_stride_with_dilation = None - norm_layer = nn.InstanceNorm2d - - super(ResNet, self).__init__() - - self._norm_layer = norm_layer - - self.inplanes = 64 - self.dilation = 1 - if replace_stride_with_dilation is None: - # each element in the tuple indicates if we should replace - # the 2x2 stride with a dilated convolution instead - replace_stride_with_dilation = [False, False, False] - if len(replace_stride_with_dilation) != 3: - raise ValueError("replace_stride_with_dilation should be None " - "or a 3-element tuple, got {}".format(replace_stride_with_dilation)) - self.groups = groups - self.base_width = width_per_group - self.conv1 = nn.Conv2d(3, self.inplanes, kernel_size=7, stride=2, padding=3, - bias=False) - self.bn1 = norm_layer(self.inplanes) - self.relu = nn.ReLU(inplace=True) - self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) - self.layer1 = self._make_layer(block, 64, layers[0]) - self.layer2 = self._make_layer(block, 128, layers[1], stride=2, - dilate=replace_stride_with_dilation[0]) - self.layer3 = self._make_layer(block, 256, layers[2], stride=2, - dilate=replace_stride_with_dilation[1]) - self.layer4 = self._make_layer(block, 512, layers[3], stride=2, - dilate=replace_stride_with_dilation[2]) - self.avgpool = nn.AdaptiveAvgPool2d((1, 1)) - self.fc_bottleneck = nn.Linear(512 * block.expansion, bottleneck_size) - self.fc_final = nn.Linear(bottleneck_size, z_size) - # self.fc = nn.Linear(512 * block.expansion, z_size) - - for m in self.modules(): - if isinstance(m, nn.Conv2d): - nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') - elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)): - nn.init.constant_(m.weight, 1) - nn.init.constant_(m.bias, 0) - - # Zero-initialize the last BN in each residual branch, - # so that the residual branch starts with zeros, and each residual block behaves like an identity. - # This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677 - if zero_init_residual: - for m in self.modules(): - if isinstance(m, BasicBlock) and isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)): - nn.init.constant_(m.bn2.weight, 0) - # elif isinstance(m, Bottleneck) and isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)): - # nn.init.constant_(m.bn3.weight, 0) - - - def _make_layer(self, block, planes, blocks, stride=1, dilate=False): - norm_layer = self._norm_layer - downsample = None - previous_dilation = self.dilation - if dilate: - self.dilation *= stride - stride = 1 - if stride != 1 or self.inplanes != planes * block.expansion: - downsample = nn.Sequential( - conv1x1(self.inplanes, planes * block.expansion, stride), - norm_layer(planes * block.expansion), - ) - - layers = [] - layers.append(block(self.inplanes, planes, stride, downsample, self.groups, - self.base_width, previous_dilation, norm_layer)) - self.inplanes = planes * block.expansion - for _ in range(1, blocks): - layers.append(block(self.inplanes, planes, groups=self.groups, - base_width=self.base_width, dilation=self.dilation, - norm_layer=norm_layer)) - - return nn.Sequential(*layers) - - def forward(self, x): - x = self.conv1(x) - x = self.bn1(x) - x = self.relu(x) - x = self.maxpool(x) - - x = self.layer1(x) - x = self.layer2(x) - x = self.layer3(x) - x = self.layer4(x) - - x = self.avgpool(x) - x = torch.flatten(x, 1) - - x_bottleneck = self.fc_bottleneck(x) - x = self.fc_final(x_bottleneck) - # x = self.fc(x) - - return x, x_bottleneck - diff --git a/code/src/plan2scene/texture_gen/nets/neural_texture/mlp.py b/code/src/plan2scene/texture_gen/nets/neural_texture/mlp.py deleted file mode 100644 index aa20677..0000000 --- a/code/src/plan2scene/texture_gen/nets/neural_texture/mlp.py +++ /dev/null @@ -1,41 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/models/neural_texture/mlp.py - -import torch -from torch import nn -from plan2scene.texture_gen.nets.core_modules.standard_block import Conv2dBlock - - -class MLP(nn.Module): - def __init__(self, param, model_param): - - super(MLP, self).__init__() - self.param = param - self.n_featutres = model_param.n_max_features - self.encoding = model_param.encoding - self.noise = model_param.noise - - self.nf_out = model_param.shape_out[0][0] - self.nf_in = model_param.shape_in[0][0] - self.n_blocks = model_param.n_blocks - self.bias = model_param.bias - - self.first_conv = Conv2dBlock(self.nf_in, self.n_featutres, 1, 1, 0, None, model_param.non_linearity, model_param.dropout_ratio, bias=self.bias) - - self.res_blocks = nn.ModuleList() - - for idx in range(self.n_blocks): - block_i = Conv2dBlock(self.n_featutres, self.n_featutres, 1, 1, 0, None, model_param.non_linearity, model_param.dropout_ratio, bias=self.bias) - self.res_blocks.append(block_i) - - self.last_conv = Conv2dBlock(self.n_featutres, self.nf_out, 1, 1, 0, None, None, model_param.dropout_ratio, bias=self.bias) - - def forward(self, input): - - input_z = self.first_conv(input) - output = input_z - for idx, block in enumerate(self.res_blocks): - output = block(output) - - output = self.last_conv(output) - - return output \ No newline at end of file diff --git a/code/src/plan2scene/texture_gen/nets/neural_texture/texture_gen.py b/code/src/plan2scene/texture_gen/nets/neural_texture/texture_gen.py deleted file mode 100644 index 697cb3e..0000000 --- a/code/src/plan2scene/texture_gen/nets/neural_texture/texture_gen.py +++ /dev/null @@ -1,92 +0,0 @@ -import torch - -from plan2scene.texture_gen.custom_ops.noise import Noise -from plan2scene.texture_gen.nets.neural_texture.encoder import ResNet -from plan2scene.texture_gen.nets.neural_texture.mlp import MLP -import plan2scene.texture_gen.utils.neural_texture_helper as utils_nt -from torch import nn - - -class TextureGen(nn.Module): - """ - Modified Neural Texture Synthesis Module. - """ - - def __init__(self, param): - """ - Initializes module. - :param param: Parameters specified. - """ - super().__init__() - self.param = param - self.image_res = param.image.image_res - self.encoder = ResNet(param, param.system.arch.model_texture_encoder.model_params) - self.decoder = MLP(param, param.system.arch.model_texture_decoder.model_params) - self.substance_layer = None - if param.system.arch.model_substance_classifier.model_params.available: - self.substance_layer = nn.Linear( - in_features=param.system.arch.model_texture_encoder.model_params.bottleneck_size, - out_features=len(param.dataset.substances)) - - self.noise_sampler = Noise() - - def forward(self, image_gt: torch.Tensor, position: torch.Tensor, seed: torch.Tensor, weights_bottleneck: torch.Tensor = None) -> tuple: - """ - Forward pass. Uses weights_bottleneck if specified. Otherwise uses image_gt. - :param image_gt: Conditioned image. - :param position: Position field. - :param seed: Seed tensor. - :param weights_bottleneck: Optional. Bottleneck layer embeddings. - :return: tuple (synthesized texture, bottleneck embeddings, substance layer output) - """ - - if weights_bottleneck is None: - weights, weights_bottleneck = self.encoder(image_gt) - else: - assert image_gt is None - weights = self.encoder.fc_final(weights_bottleneck) - - weights = weights.unsqueeze(-1).unsqueeze(-1) - bs, _, w_h, w_w = weights.size() - _, _, h, w = position.size() - - transform_coeff, z_encoding = torch.split(weights, [self.param.texture.t, self.param.texture.e], dim=1) - - substance_output = None - if self.substance_layer is not None: - substance_output = self.substance_layer(weights_bottleneck) - - if z_encoding.shape[2] == 1: - z_encoding = z_encoding.view(bs, self.param.texture.e, 1, 1) - z_encoding = z_encoding.expand(bs, self.param.texture.e, self.image_res, self.image_res) - - position = position.unsqueeze(1).expand(bs, self.param.noise.octaves, self.param.dim, h, w) - position = position.permute(0, 1, 3, 4, 2) - - position = utils_nt.transform_coord(position, transform_coeff, self.param.dim) - - # multiply with 2**i to initiate octaves - octave_factor = torch.arange(0, self.param.noise.octaves, device=self.param.device) - octave_factor = octave_factor.reshape(1, self.param.noise.octaves, 1, 1, 1) - octave_factor = octave_factor.expand(1, self.param.noise.octaves, 1, 1, self.param.dim) - octave_factor = torch.pow(2, octave_factor) - position = position * octave_factor - - # position - position = position.unsqueeze(2).expand(bs, self.param.noise.octaves, self.param.texture.channels, h, w, - self.param.dim) - seed = seed.unsqueeze(-1).unsqueeze(-1).expand(bs, self.param.noise.octaves, self.param.texture.channels, h, w) - position = position.reshape(bs * self.param.noise.octaves * self.param.texture.channels * h * w, self.param.dim) - seed = seed.reshape(bs * self.param.noise.octaves * self.param.texture.channels * h * w) - - noise = self.noise_sampler(position, seed).to(self.param.device) - noise = noise.reshape(-1, bs, self.param.noise.octaves, self.param.texture.channels, h, w) - noise = noise.permute(1, 0, 2, 3, 4, 5) - noise = noise.reshape(bs, self.param.noise.octaves * self.param.texture.channels * 2, - self.param.image.image_res, self.param.image.image_res) - - input_mlp = torch.cat([z_encoding, noise], dim=1) - image_out = self.decoder(input_mlp) - image_out = torch.tanh(image_out) - - return image_out, weights_bottleneck, substance_output diff --git a/code/src/plan2scene/texture_gen/nets/vgg.py b/code/src/plan2scene/texture_gen/nets/vgg.py deleted file mode 100644 index cfef6dd..0000000 --- a/code/src/plan2scene/texture_gen/nets/vgg.py +++ /dev/null @@ -1,175 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/models/vgg/vgg.py - -import torch -import torch.nn as nn -from torchvision.models.utils import load_state_dict_from_url - -__all__ = [ - 'VGG', 'vgg11', 'vgg11_bn', 'vgg13', 'vgg13_bn', 'vgg16', 'vgg16_bn', - 'vgg19_bn', 'vgg19', -] - -model_urls = { - 'vgg11': 'https://download.pytorch.org/models/vgg11-bbd30ac9.pth', - 'vgg13': 'https://download.pytorch.org/models/vgg13-c768596a.pth', - 'vgg16': 'https://download.pytorch.org/models/vgg16-397923af.pth', - 'vgg19': 'https://download.pytorch.org/models/vgg19-dcbb9e9d.pth', - 'vgg11_bn': 'https://download.pytorch.org/models/vgg11_bn-6002323d.pth', - 'vgg13_bn': 'https://download.pytorch.org/models/vgg13_bn-abd245e5.pth', - 'vgg16_bn': 'https://download.pytorch.org/models/vgg16_bn-6c64b313.pth', - 'vgg19_bn': 'https://download.pytorch.org/models/vgg19_bn-c79401a0.pth', -} - - -class VGG(nn.Module): - - def __init__(self, features, num_classes=1000, init_weights=True): - super(VGG, self).__init__() - self.features = features - self.avgpool = nn.AdaptiveAvgPool2d((7, 7)) - self.classifier = nn.Sequential( - nn.Linear(512 * 7 * 7, 4096), - nn.ReLU(True), - nn.Dropout(), - nn.Linear(4096, 4096), - nn.ReLU(True), - nn.Dropout(), - nn.Linear(4096, num_classes), - ) - if init_weights: - self._initialize_weights() - - def forward(self, x): - x = self.features(x) - x = self.avgpool(x) - x = torch.flatten(x, 1) - x = self.classifier(x) - return x - - def _initialize_weights(self): - for m in self.modules(): - if isinstance(m, nn.Conv2d): - nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') - if m.bias is not None: - nn.init.constant_(m.bias, 0) - elif isinstance(m, nn.BatchNorm2d): - nn.init.constant_(m.weight, 1) - nn.init.constant_(m.bias, 0) - elif isinstance(m, nn.Linear): - nn.init.normal_(m.weight, 0, 0.01) - nn.init.constant_(m.bias, 0) - - -def make_layers(cfg, batch_norm=False): - layers = [] - in_channels = 3 - for v in cfg: - if v == 'M': - layers += [nn.MaxPool2d(kernel_size=2, stride=2)] - else: - conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=2, padding_mode='circular') - if batch_norm: - layers += [conv2d, nn.BatchNorm2d(v), nn.ReLU(inplace=True)] - else: - layers += [conv2d, nn.ReLU(inplace=True)] - in_channels = v - return nn.Sequential(*layers) - - -cfgs = { - 'A': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], - 'B': [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], - 'D': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'], - 'E': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M'], -} - - -def _vgg(arch, cfg, batch_norm, pretrained, progress, **kwargs): - if pretrained: - kwargs['init_weights'] = False - model = VGG(make_layers(cfgs[cfg], batch_norm=batch_norm), **kwargs) - if pretrained: - state_dict = load_state_dict_from_url(model_urls[arch], - progress=progress) - model.load_state_dict(state_dict) - return model - - -def vgg11(pretrained=False, progress=True, **kwargs): - r"""VGG 11-layer model (configuration "A") from - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg11', 'A', False, pretrained, progress, **kwargs) - - -def vgg11_bn(pretrained=False, progress=True, **kwargs): - r"""VGG 11-layer model (configuration "A") with batch normalization - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg11_bn', 'A', True, pretrained, progress, **kwargs) - - -def vgg13(pretrained=False, progress=True, **kwargs): - r"""VGG 13-layer model (configuration "B") - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg13', 'B', False, pretrained, progress, **kwargs) - - -def vgg13_bn(pretrained=False, progress=True, **kwargs): - r"""VGG 13-layer model (configuration "B") with batch normalization - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg13_bn', 'B', True, pretrained, progress, **kwargs) - - -def vgg16(pretrained=False, progress=True, **kwargs): - r"""VGG 16-layer model (configuration "D") - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg16', 'D', False, pretrained, progress, **kwargs) - - -def vgg16_bn(pretrained=False, progress=True, **kwargs): - r"""VGG 16-layer model (configuration "D") with batch normalization - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg16_bn', 'D', True, pretrained, progress, **kwargs) - - -def vgg19(pretrained=False, progress=True, **kwargs): - r"""VGG 19-layer model (configuration "E") - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg19', 'E', False, pretrained, progress, **kwargs) - - -def vgg19_bn(pretrained=False, progress=True, **kwargs): - r"""VGG 19-layer model (configuration 'E') with batch normalization - `"Very Deep Convolutional Networks For Large-Scale Image Recognition" `_ - Args: - pretrained (bool): If True, returns a model pre-trained on ImageNet - progress (bool): If True, displays a progress bar of the download to stderr - """ - return _vgg('vgg19_bn', 'E', True, pretrained, progress, **kwargs) diff --git a/code/src/plan2scene/texture_gen/predictor.py b/code/src/plan2scene/texture_gen/predictor.py deleted file mode 100644 index 2a9cea5..0000000 --- a/code/src/plan2scene/texture_gen/predictor.py +++ /dev/null @@ -1,324 +0,0 @@ -import os.path as osp -import os -import logging - -from plan2scene.common.color_description import ColorSpace, Color -from plan2scene.config_manager import ConfigManager -from plan2scene.texture_gen.nets.neural_texture.texture_gen import TextureGen -from plan2scene.texture_gen.predictor_result import TextureGenPredictorResult -from plan2scene.texture_gen.utils.hsv_utils import hsv_decompose_median, hsv_recombine_median, hsv_to_rgb, \ - rgb_decompose_median, rgb_recombine_median, rgb_to_hsv - -from torch import nn, Tensor -from torch import optim -import plan2scene.texture_gen.utils.neural_texture_helper as utils_nt -from plan2scene.texture_gen.utils.neural_texture_helper import get_loss_no_reduce -import torch -import plan2scene.texture_gen.utils.utils as util - -from plan2scene.texture_gen.custom_transforms.hsv_transforms import ToHSV -from torchvision import transforms as tfs - - -class TextureGenPredictor: - """ - Predicts textures using our modified neural texture synthesis approach. - """ - - def __init__(self, conf, rgb_median_emb: bool): - """ - Initializes predictor - :param conf: Model config used by neural texture synthesis. - :param rgb_median_emb: Should the color component of the median embedding be converted back to RGB? - """ - self.conf = conf - self.rgb_median_emb = rgb_median_emb - - # Modified neural texture network - self.net = TextureGen(conf).to(conf.device) - - # Load substance labels if supported - self.substances = None - if "substances" in conf.dataset and conf.system.arch.model_substance_classifier.model_params.available: - self.substances = conf.dataset.substances - - self.update_seed() - - self.vgg_features = utils_nt.VGGFeatures().to(conf.device) - self.gram_matrix = utils_nt.GramMatrix().to(conf.device) - self.criterion = nn.MSELoss(reduction="none") - - def load_checkpoint(self, checkpoint_path: str) -> None: - """ - Load saved checkpoint - :param checkpoint_path: Path to checkpoint - """ - ckpt = torch.load(checkpoint_path) - logging.info( - "Loading Checkpoint %s: %s" % (checkpoint_path, self.net.load_state_dict(ckpt["model_state_dict"]))) - - def get_position(self) -> Tensor: - """ - Return the position tensor - :return: position tensor - """ - sample_pos = utils_nt.get_position((self.conf.image.image_res, self.conf.image.image_res), self.conf.dim, - self.conf.device, self.conf.train.bs) - return sample_pos - - def predict_embs(self, sample_image_crops: list): - """ - Predict latent embeddings and VGG losses for the given crops using the encoder. - :param sample_image_crops: List of PIL Image crops - :return: Tuple (embeddings tensor, losses tensor) - """ - with torch.no_grad(): - unsigned_images = torch.cat([tfs.ToTensor()(a).unsqueeze(0) for a in sample_image_crops], dim=0) - unsigned_hsv_images = torch.cat([tfs.ToTensor()(ToHSV()(a)).unsqueeze(0) for a in sample_image_crops], - dim=0) - - # Predict using the network - predictor_result = self.predict(unsigned_images.to(self.conf.device), - unsigned_hsv_images.to(self.conf.device), - self.get_position(), combined_emb=None, train=False) - - # Compute loss between synthesized texture and conditioned image - losses = get_loss_no_reduce(util.unsigned_to_signed(unsigned_images).to(self.conf.device), predictor_result.image_out, - self.conf, self.vgg_features, self.gram_matrix, self.criterion) - return predictor_result.combined_emb.cpu(), losses.cpu() - - def predict_textures(self, combined_embs: Tensor, multiplier: int) -> tuple: - """ - Synthesize a texture given the latent embedding. - :param combined_embs: Latent embedding used to condition texture synthesis - :param multiplier: Multiplier on output size. We make multiple predictions and stitch. (E.g. if multiplier is 2, we stitch a 2x2 texture) - :return: Tuple of (Predicted textures as a list of PIL images, List of predicted substance labels, extra) - """ - assert isinstance(multiplier, int) - with torch.no_grad(): - if isinstance(combined_embs, list): - combined_embs = torch.cat([a for a in combined_embs], dim=0) - - # Identify substance prediction - predictor_result = self.predict(unsigned_images=None, unsigned_hsv_images=None, - sample_pos=self.get_position(), train=False, - combined_emb=combined_embs) - - substance_names = None - if predictor_result.substance_out is not None: - substance_out = predictor_result.substance_out.cpu() - _, substance_preds = substance_out.max(dim=1) - substance_names = [self.substances[a.item()] for a in substance_preds] - else: - # No substance prediction - substance_names = [None for a in range(combined_embs.shape[0])] - - # Generate a large texture by stitching multiple texture predictions - base_position_stripe = self.get_position() - y_stripe = [] - # Loop for stitching along y axis - for y in range(multiplier): - y_position_stripe = torch.cat( - [base_position_stripe[:, 0:1], base_position_stripe[:, 1:2] - 2.0 * y, base_position_stripe[:, 2:]], - dim=1) - x_stripe = [] - for x in range(multiplier): - # Loop for stitching along x axis - position_stripe = torch.cat( - [y_position_stripe[:, 0:0], y_position_stripe[:, 0:1] + 2.0 * x, y_position_stripe[:, 1:]], - dim=1) - - # Prediction of a texture crop - texture_pred_results = self.predict(unsigned_images=None, unsigned_hsv_images=None, - sample_pos=position_stripe, train=False, - combined_emb=combined_embs) - x_stripe.append(texture_pred_results.image_out.cpu()) - - x_stripe = torch.cat(x_stripe, dim=3) # Merge along x axis - y_stripe.append(x_stripe) - - y_stripe = torch.cat(y_stripe, dim=2) # Merge along y axis - y_stripe = util.signed_to_unsigned(y_stripe) - y_stripe = [tfs.ToPILImage()(a) for a in y_stripe] # Convert to PIL images - - return y_stripe, substance_names, predictor_result.extra - - def _compute_network_input(self, unsigned_images: Tensor, unsigned_hsv_images: Tensor, additional_params) -> tuple: - """ - Compute network input and base color - :param unsigned_images: Tensor of unsigned RGB images - :param unsigned_hsv_images: Tensor of unsigned HSV images - :param additional_params: Additional params to merge to latent embedding. This method may update this. - :return: Tuple (network input, base_color) - """ - assert int(self.conf.image.hsv_decomp) + int(self.conf.image.hsv) + int(self.conf.image.rgb_decomp) <= 1 - - if self.conf.image.hsv_decomp or self.conf.image.hsv: - # HSV_DECOMP: Convert input to HSV and separate median color. (Paper method) - # HSV: Convert input to HSV. (Ablation reported in paper) - - image_gt_decomposed, median_h, median_s, median_v = hsv_decompose_median( - unsigned_hsv_images.to(self.conf.device)) - base_color = Color(color_space=ColorSpace.HSV, components=[median_h, median_s, median_v]) - - if self.conf.image.hsv and not self.conf.image.hsv_decomp: - network_input = util.unsigned_to_signed(unsigned_hsv_images.to(self.conf.device)) - else: - if self.rgb_median_emb: # Should the color info of combined emb be in RGB? - rgb_median = hsv_to_rgb( - torch.cat([median_h.unsqueeze(1), median_s.unsqueeze(1), median_v.unsqueeze(1)], - dim=1).unsqueeze(2).unsqueeze(3)) - additional_params.extend( - [rgb_median[:, 0, 0, 0], rgb_median[:, 1, 0, 0], rgb_median[:, 2, 0, 0]]) - else: - additional_params.extend([median_h, median_s, median_v]) - network_input = image_gt_decomposed - elif self.conf.image.rgb_decomp: - # RGB_DECOMP: Keep network input in RGB. But separate median color. - - image_gt_decomposed, median_r, median_g, median_b = rgb_decompose_median( - unsigned_images.to(self.conf.device)) - additional_params.extend([median_r, median_g, median_b]) - base_color = Color(color_space=ColorSpace.RGB, components=[median_r, median_g, median_b]) - network_input = image_gt_decomposed - else: - # Use RGB tensor as the network input - base_color = None - network_input = util.unsigned_to_signed(unsigned_images).to(self.conf.device) - return network_input, base_color - - def _compute_network_emb(self, combined_emb: Tensor, additional_params: list) -> tuple: - """ - Compute network embedding given the combined embedding - :param combined_emb: Combined embedding including the network embedding and base color - :return: tuple (Network embedding, base_colour) - """ - if self.conf.image.hsv_decomp: - if self.rgb_median_emb: - hsv_median = rgb_to_hsv(combined_emb[:, -3:].unsqueeze(2).unsqueeze(3)) - median_h = hsv_median[:, 0, 0, 0] - median_s = hsv_median[:, 1, 0, 0] - median_v = hsv_median[:, 2, 0, 0] - additional_params.extend([combined_emb[:, -3], combined_emb[:, -2], combined_emb[:, -1]]) - else: - median_h = combined_emb[:, -3] - median_s = combined_emb[:, -2] - median_v = combined_emb[:, -1] - additional_params.extend([median_h, median_s, median_v]) - embedding = combined_emb[:, :-3] - base_color = Color(color_space=ColorSpace.HSV, components=[median_h, median_s, median_v]) - elif self.conf.image.hsv: - embedding = combined_emb[:, :] - base_color = None - elif self.conf.image.rgb_decomp: - median_r = combined_emb[:, -3] - median_g = combined_emb[:, -2] - median_b = combined_emb[:, -1] - additional_params.extend([median_r, median_g, median_b]) - embedding = combined_emb[:, :-3] - base_color = Color(color_space=ColorSpace.RGB, components=[median_r, median_g, median_b]) - else: - # RGB - embedding = combined_emb[:, :] - base_color = None - return embedding, base_color - - def _compute_image_from_net_output(self, network_out: Tensor, base_color: Color) -> Tensor: - """ - Compute output image given the network output and the base colour - :param network_out: Output from the network - :param base_colour: Base colour - :return: Output image as a signed tensor - """ - if self.conf.image.hsv_decomp or self.conf.image.hsv: - assert base_color.color_space == ColorSpace.HSV - median_h, median_s, median_v = base_color.components - if self.conf.image.hsv and not self.conf.image.hsv_decomp: - image_out = util.signed_to_unsigned(network_out) - else: - image_out = hsv_recombine_median(network_out, median_h, median_s, median_v) - image_out = hsv_to_rgb(image_out) # Differentiable HSV to RGB layer - image_out = util.unsigned_to_signed(image_out) - elif self.conf.image.rgb_decomp: - assert base_color.color_space == ColorSpace.RGB - median_r, median_g, median_b = base_color.components - image_out = rgb_recombine_median(network_out, median_r, median_g, median_b) - image_out = util.unsigned_to_signed(image_out) - else: - image_out = network_out - return image_out - - def predict(self, unsigned_images: Tensor, unsigned_hsv_images: Tensor, sample_pos: Tensor, train: bool, - combined_emb: Tensor = None) -> TextureGenPredictorResult: - """ - Predict textures and embeddings given input crops. - :param unsigned_images: Input crops in unsigned RGB - :param unsigned_hsv_images: Input crops in unsigned HSV - :param sample_pos: Position tensor - :param train: Is train mode? - :param combined_emb: If provided, we skip the encoder and directly pass the embedding to the decoder. - :return: Predictor results - """ - if train: - self.net.train() - else: - self.net.eval() - - # Additional params gets concatenated to the latent embedding given by the encoder - additional_params = [] - - if combined_emb is None: - # Predict using the image input. Use encoder. - network_input, base_color = self._compute_network_input(unsigned_images, unsigned_hsv_images, additional_params) - network_out, network_emb, substance_out = self.net(network_input, sample_pos.to(self.conf.device), - self.seed) - else: - # Predict using the combined_emb. Skip encoder. - network_input = None - combined_emb = combined_emb.to(self.conf.device) - network_emb, base_color = self._compute_network_emb(combined_emb, additional_params) - - network_out, network_emb, substance_out = self.net(None, sample_pos.to(self.conf.device), self.seed, - weights_bottleneck=network_emb) - - # Compute network output - image_out = self._compute_image_from_net_output(network_out, base_color) - - extra = { - "network_input": network_input, - "network_output": network_out, - "network_emb": network_emb, - "base_color": base_color - } - - # Compute combined_emb - combined_emb = network_emb - if len(additional_params) > 0: - additional_params_emb = torch.cat([a.unsqueeze(1) for a in additional_params], dim=1) - combined_emb = torch.cat([combined_emb, additional_params_emb], dim=1) - return TextureGenPredictorResult(image_out=image_out, combined_emb=combined_emb, substance_out=substance_out, extra=extra) - - def update_seed(self) -> None: - """ - Update seed used to synthesize textures - """ - self.seed = torch.rand((self.conf.train.bs, self.conf.noise.octaves, self.conf.texture.channels), - device=self.conf.device) - - def save_checkpoint(self, opt: optim.Adam, epoch: int, stats: dict, save_path) -> None: - """ - Save model checkpoint - :param opt: optimizer - :param epoch: epoch - :param stats: Stats dictionary - :param save_path: Save path - """ - if not osp.exists(osp.dirname(save_path)): - os.makedirs(osp.dirname(save_path)) - payload = { - "model_state_dict": self.net.state_dict(), - "epoch": epoch, - "stats": stats, - "optimizer_state_dict": opt.state_dict() - } - torch.save(payload, save_path) diff --git a/code/src/plan2scene/texture_gen/predictor_result.py b/code/src/plan2scene/texture_gen/predictor_result.py deleted file mode 100644 index baf4d2f..0000000 --- a/code/src/plan2scene/texture_gen/predictor_result.py +++ /dev/null @@ -1,38 +0,0 @@ -from torch import Tensor - - -class TextureGenPredictorResult: - """ - Results returned from predict call of TextureGen predictor. - """ - - def __init__(self, image_out: Tensor, combined_emb: Tensor, substance_out: Tensor, extra: dict): - self._image_out = image_out - self._combined_emb = combined_emb - self._substance_out = substance_out - self._extra = extra - - @property - def image_out(self) -> Tensor: - """ - Texture prediction - """ - return self._image_out - - @property - def combined_emb(self) -> Tensor: - """ - Latent embedding from encoder - """ - return self._combined_emb - - @property - def substance_out(self) -> Tensor: - """ - Substance prediction - """ - return self._substance_out - - @property - def extra(self) -> dict: - return self._extra diff --git a/code/src/plan2scene/texture_gen/trainer/__init__.py b/code/src/plan2scene/texture_gen/trainer/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/trainer/abstract_trainer.py b/code/src/plan2scene/texture_gen/trainer/abstract_trainer.py deleted file mode 100644 index 15dea26..0000000 --- a/code/src/plan2scene/texture_gen/trainer/abstract_trainer.py +++ /dev/null @@ -1,180 +0,0 @@ -from torch.utils.tensorboard import SummaryWriter - -from plan2scene.common.trainer.epoch_summary import EpochSummary -import logging -import abc - -from plan2scene.common.trainer.save_reason import SaveReason - - -class AbstractTrainer(abc.ABC): - """ - Abstract trainer for modified neural texture synthesis approach. - """ - - def __init__(self, train_params: dict, output_path: str, summary_writer: SummaryWriter, save_model_interval: int): - """ - Initializes trainer. - :param train_params: Configuration of the model. - :param output_path: Directory to save outputs. - :param summary_writer: Summary writer. - :param save_model_interval: Checkpoint save interval. - """ - self._train_params = train_params - self._output_path = output_path - self._save_model_interval = save_model_interval - self._summary_writer = summary_writer - - self._predictor = None - self._train_dataset = None - self._train_dataloader = None - self._val_dataset = None - self._val_dataloader = None - self._optimizer = None - self._device = None - self._epoch_stats = {} - self._max_epoch = 0 - - self._best_checkpoint_metric_value = None - - pass - - @abc.abstractmethod - def _setup_predictor(self): - pass - - @abc.abstractmethod - def _setup_datasets(self): - pass - - @property - def epoch_stats(self): - return self._epoch_stats - - def setup(self) -> None: - """ - Setup the trainer. - """ - self._device = self.train_params.device - - self._setup_predictor() - logging.info("Predictor: %s" % self._predictor) - self._setup_datasets() - logging.info("Train Data: %d" % (len(self.train_dataset))) - logging.info("Val Data: %d" % (len(self.val_dataset))) - - self._setup_loss_function() - self._setup_optimizer() - self._max_epoch = self.train_params.train.epochs - - @property - def device(self): - return self._device - - @property - def max_epoch(self): - return self._max_epoch - - def train(self) -> None: - """ - Start training - """ - for epoch in range(1, self.max_epoch + 1): - train_stats = self._train_epoch(epoch) - val_stats = self._eval_epoch(epoch) - - self.epoch_stats[epoch] = { - "epoch": epoch, - "train_stats": train_stats, - "val_stats": val_stats - } - - self._report(epoch, train_stats, val_stats) - - checkpoint_metric_value = self._get_checkpoint_metric_value(val_stats) - if self._best_checkpoint_metric_value is None or checkpoint_metric_value < self._best_checkpoint_metric_value: - self._best_checkpoint_metric_value = checkpoint_metric_value - self._save_checkpoint(epoch, SaveReason.BEST_MODEL, train_stats, val_stats) - - if epoch % self.save_model_interval == 0: - self._save_checkpoint(epoch, SaveReason.INTERVAL, train_stats, val_stats) - - @abc.abstractmethod - def _get_checkpoint_metric_value(self, eval_stats: EpochSummary) -> float: - """ - Returns the overall goodness value given the evaluation results on the validation set. - This value is used to identify the best checkpoints for the purpose of saving them. - :param eval_stats: Evaluation stats on the validation set for the current epoch. - :return: Overall goodness value considering eval_stats - """ - pass - - @abc.abstractmethod - def _save_checkpoint(self, epoch: int, reason: SaveReason, train_stats, val_stats): - pass - - @abc.abstractmethod - def _report(self, epoch: int, train_stats: EpochSummary, val_stats: EpochSummary) -> None: - """ - Write evaluation results to disk/tensorboard. - :param epoch: Epoch - :param train_stats: Train set evaluation - :param val_stats: Validation set evaluation - """ - pass - - @abc.abstractmethod - def _eval_epoch(self, epoch) -> EpochSummary: - pass - - @abc.abstractmethod - def _train_epoch(self, epoch) -> EpochSummary: - pass - - @abc.abstractmethod - def _setup_optimizer(self): - pass - - @abc.abstractmethod - def _setup_loss_function(self): - pass - - @property - def optimizer(self): - return self._optimizer - - @property - def predictor(self): - return self._predictor - - @property - def train_dataset(self): - return self._train_dataset - - @property - def val_dataset(self): - return self._val_dataset - - @property - def train_dataloader(self): - return self._train_dataloader - - @property - def val_dataloader(self): - return self._val_dataloader - - @property - def train_params(self): - return self._train_params - - @property - def output_path(self): - return self._output_path - - @property - def save_model_interval(self): - return self._save_model_interval - - @property - def summary_writer(self): - return self._summary_writer diff --git a/code/src/plan2scene/texture_gen/trainer/epoch_summary.py b/code/src/plan2scene/texture_gen/trainer/epoch_summary.py deleted file mode 100644 index 06562a4..0000000 --- a/code/src/plan2scene/texture_gen/trainer/epoch_summary.py +++ /dev/null @@ -1,74 +0,0 @@ -from plan2scene.common.trainer.epoch_summary import EpochSummary - - -class TextureGenEpochSummary(EpochSummary): - """ - Epoch evaluation results of modified neural texture synthesis. - """ - - def __init__(self, epoch_style_loss: float, epoch_substance_loss: float, epoch_substance_passed: int, *args, **kwargs): - """ - Initializes TextureGenEpochSummary. - :param epoch_style_loss: VGG style loss for epoch - :param epoch_substance_loss: Substance loss for epoch - :param epoch_substance_passed: Number of crops that were correctly classified. - """ - super().__init__(*args, **kwargs) - assert isinstance(epoch_style_loss, float) - assert isinstance(epoch_substance_loss, float) - assert isinstance(epoch_substance_passed, int) - - self._epoch_style_loss = epoch_style_loss - self._epoch_substance_loss = epoch_substance_loss - self._epoch_substance_passed = epoch_substance_passed - - @property - def epoch_style_loss(self) -> float: - """ - Return VGG style loss computed for an epoch. - :return: VGG style loss computed for an epoch. - """ - return self._epoch_style_loss - - @epoch_style_loss.setter - def epoch_style_loss(self, value: float) -> None: - """ - Set VGG style loss computed for an epoch. - :param value: VGG style loss computed for an epoch. - """ - assert isinstance(value, float) - self._epoch_style_loss = value - - @property - def epoch_substance_loss(self) -> float: - """ - Return substance classification loss. - :return: Substance classification loss - """ - return self._epoch_substance_loss - - @epoch_substance_loss.setter - def epoch_substance_loss(self, value: float) -> None: - """ - Set substance classification loss - :param value: Substance classification loss - """ - assert isinstance(value, float) - self._epoch_substance_loss = value - - @property - def epoch_substance_passed(self) -> int: - """ - Returns count of entries that received correct substance prediction. - :return: Count of entries that received correct substance prediction. - """ - return self._epoch_substance_passed - - @epoch_substance_passed.setter - def epoch_substance_passed(self, value: int) -> None: - """ - Set the count of entries that received correct substance prediction. - :param value: Count of entries that received correct substance prediction. - """ - assert isinstance(value, int) - self._epoch_substance_passed = value diff --git a/code/src/plan2scene/texture_gen/trainer/image_dataset.py b/code/src/plan2scene/texture_gen/trainer/image_dataset.py deleted file mode 100644 index 738310f..0000000 --- a/code/src/plan2scene/texture_gen/trainer/image_dataset.py +++ /dev/null @@ -1,88 +0,0 @@ -from torch.utils.data import Dataset -from torchvision import transforms as tfs -import os -from PIL import Image -import os.path as osp -from plan2scene.utils.io import load_image - -from plan2scene.texture_gen.custom_transforms.hsv_transforms import ToHSV -from plan2scene.texture_gen.custom_transforms.random_crop import RandomCropAndDropAlpha -import numpy as np - - -class ImageDataset(Dataset): - """ - Dataset of images used to train the modified neural texture synthesis stage. - """ - - def __init__(self, data_path: str, image_res: tuple, resample_count: int, scale_factor: float, substances: list): - """ - Initializes dataset. - :param data_path: Path to dataset image. - :param image_res: Size of output crops in the format (width, height) - :param resample_count: Number of times to re-sample an image. - :param scale_factor: Scale factor used to determine the random crop size. - :param substances: List of substance labels. - """ - self.data_path = data_path - self.image_res = image_res - self.resample_count = resample_count - self.scale_factor = scale_factor - self.substances = substances - - transforms = [ - RandomCropAndDropAlpha((self.image_res[0] * self.scale_factor, - self.image_res[1] * self.scale_factor), 100000), - tfs.Resize((self.image_res[0], self.image_res[1])), - tfs.RandomHorizontalFlip(p=0.5), - tfs.RandomVerticalFlip(p=0.5), - ] - - self.transforms = tfs.Compose(transforms) - - self.samples = self._get_samples() - - def _get_samples(self) -> list: - """ - Load dataset entries. - :return: list of dataset entries - """ - samples = [] - types = {'.jpeg', '.jpg', '.png'} - - files = os.listdir(self.data_path) - files = [a for a in files if osp.splitext(a)[1] in types] - for file in files: - img = load_image(osp.join(self.data_path, file)) - if img.width > self.image_res[0] * self.scale_factor and img.height > self.image_res[1] * self.scale_factor: - samples.append(osp.join(self.data_path, file)) - - samples.sort() - samples = samples * self.resample_count - return samples - - def __len__(self): - return len(self.samples) - - def __getitem__(self, idx: int) -> tuple: - """ - Return dataset entry. - :param idx: Index - :return: tuple(RGB tensor, file path, substance label index, HSV tensor) - """ - filepath = self.samples[idx] - substance = -1 - if self.substances is not None: - substance = filepath.split("/")[-1].split("_")[0] - substance = self.substances.index(substance) - - image = Image.open(filepath) - image.load() - if image.mode not in ["RGB", "RGBA"]: - image = image.convert("RGB") - - image_transformed = self.transforms(image) - image_tensor = tfs.ToTensor()(image_transformed) - image_hsv = ToHSV()(image_transformed) - image_hsv_tensor = tfs.ToTensor()(image_hsv) - return image_tensor, filepath, substance, image_hsv_tensor diff --git a/code/src/plan2scene/texture_gen/trainer/texture_gen_trainer.py b/code/src/plan2scene/texture_gen/trainer/texture_gen_trainer.py deleted file mode 100644 index 56ca96c..0000000 --- a/code/src/plan2scene/texture_gen/trainer/texture_gen_trainer.py +++ /dev/null @@ -1,396 +0,0 @@ -from torch.utils.data import DataLoader - -from config_parser import Config -import plan2scene.texture_gen.utils.neural_texture_helper as utils_nt -import plan2scene.texture_gen.utils.utils as util -from plan2scene.common.color_description import ColorSpace, Color -from plan2scene.texture_gen.predictor import TextureGenPredictor -from plan2scene.texture_gen.trainer import train_util -from plan2scene.texture_gen.trainer.abstract_trainer import AbstractTrainer, SaveReason -from plan2scene.texture_gen.trainer.epoch_summary import TextureGenEpochSummary -from plan2scene.texture_gen.trainer.image_dataset import ImageDataset -from plan2scene.texture_gen.utils.hsv_utils import hsv_to_rgb -from plan2scene.texture_gen.utils.io import preview_images, preview_deltas -import torchvision -from PIL import ImageDraw -import os.path as osp -import torch -import logging - -# Print train-log every 100 epochs -RUN_SIZE = 100 - - -class TextureGenTrainer(AbstractTrainer): - """ - Trainer for Modified Neural Texture Synthesis stage. - """ - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self._style_criterion = None - self._substance_criterion = None - - def _setup_datasets(self) -> None: - """ - Setup datasets and data loaders - """ - logging.info("Train Data: %s" % osp.join(self.train_params.dataset.path, "train")) - self._train_dataset = ImageDataset(osp.join(self.train_params.dataset.path, "train"), - image_res=( - self.train_params.image.image_res, self.train_params.image.image_res), - resample_count=self.train_params.train.resample_count * self.train_params.train.bs, - scale_factor=self.train_params.image.scale_factor, - substances=self._predictor.substances) - self._train_dataloader = DataLoader(self._train_dataset, batch_size=self.train_params.train.bs, shuffle=True, - num_workers=self.train_params.num_workers, - drop_last=True) - - logging.info("Val Data: %s" % osp.join(self.train_params.dataset.path, "val")) - self._val_dataset = ImageDataset(osp.join(self.train_params.dataset.path, "val"), - image_res=( - self.train_params.image.image_res, self.train_params.image.image_res), - resample_count=1, - scale_factor=self.train_params.image.scale_factor, - substances=self._predictor.substances) - self._val_dataloader = DataLoader(self._val_dataset, batch_size=self.train_params.train.bs, shuffle=False, - num_workers=self.train_params.num_workers, - drop_last=False) - - def _setup_predictor(self) -> None: - """ - Setup predictor - """ - self._predictor = TextureGenPredictor(conf=self.train_params, rgb_median_emb=False) - - def _setup_loss_function(self) -> None: - """ - Setup loss function - """ - self._style_criterion = train_util.get_loss(self.train_params.system.loss_params.style_loss) - if self.predictor.substances is not None: - self._substance_criterion = train_util.get_loss(self.train_params.system.loss_params.substance_loss) - - self._vgg_features = utils_nt.VGGFeatures().to(self.device) - self._gram_matrix = utils_nt.GramMatrix().to(self.device) - - def _setup_optimizer(self) -> None: - """ - Setup optimizer - :return: - """ - self._optimizer = train_util.get_optim(self.train_params.system.optimizer_params, - self.predictor.net.parameters()) - - def _train_epoch(self, epoch: int) -> TextureGenEpochSummary: - """ - Train an epoch - :param epoch: Epoch index - :return: Epoch train summary - """ - # Metrics setup - epoch_metrics = TextureGenEpochSummary(epoch_loss=0.0, - epoch_style_loss=0.0, - epoch_substance_loss=0.0, - epoch_substance_passed=0, - epoch_entry_count=0, - epoch_batch_count=0) - - running_metrics = Config(dict(loss=0, substance_loss=0, style_loss=0)) - - # Iterate data - for i, batch in enumerate(self.train_dataloader): - unsigned_images, filenames, sub_targets, unsigned_hsv_images = batch - - sub_targets = sub_targets.to(self.device) - image_gt = util.unsigned_to_signed(unsigned_images).to(self.device) - - self.optimizer.zero_grad() - self.predictor.update_seed() - - sample_pos = self.predictor.get_position() - - predictor_result = self.predictor.predict(unsigned_images=unsigned_images, - unsigned_hsv_images=unsigned_hsv_images, - sample_pos=sample_pos, train=True) - image_out = predictor_result.image_out - substance_out = predictor_result.substance_out - - style_loss = utils_nt.get_loss(image_gt, image_out, self.train_params, self._vgg_features, - self._gram_matrix, self._style_criterion) - - substance_loss = None - if self.predictor.substances is not None: - substance_loss = self._substance_criterion(substance_out, - sub_targets) * self.train_params.system.loss_params.substance_weight - loss = style_loss + substance_loss - else: - loss = style_loss - - loss.backward() - self.optimizer.step() - - # Compute metrics - running_metrics.loss += loss.item() - running_metrics.style_loss += style_loss.item() - - epoch_metrics.epoch_loss += loss.item() - epoch_metrics.epoch_style_loss += style_loss.item() - - # Compute substance metrics - if self.predictor.substances is not None: - running_metrics.substance_loss += substance_loss.item() - epoch_metrics.epoch_substance_loss += substance_loss.item() - - _, substance_preds = substance_out.max(dim=1) - substance_pass = (substance_preds == sub_targets).sum(dim=0) - - epoch_metrics.epoch_substance_passed += substance_pass.item() - - epoch_metrics.epoch_entry_count += image_out.shape[0] - epoch_metrics.epoch_batch_count += 1 - - with torch.no_grad(): - # Save first batch of train images to compare with val - if i == 0: - preview_train_imgs = preview_images( - torch.cat([util.signed_to_unsigned(image_gt), util.signed_to_unsigned(image_out)], dim=0), - self.train_params.train.bs) - self.summary_writer.add_image("epoch_train_batch%d_results" % (i + 1), preview_train_imgs, - global_step=epoch) - - # Print running loss - if i % RUN_SIZE == RUN_SIZE - 1: - logging.info("[%d, %d] loss: %.5f\t substance-loss: %.5f\t texture-loss: %.5f" % - (epoch, i + 1, running_metrics.loss / RUN_SIZE, running_metrics.substance_loss / RUN_SIZE, - running_metrics.style_loss / RUN_SIZE)) - - running_metrics.loss = 0 - running_metrics.style_loss = 0 - running_metrics.substance_loss = 0 - - return epoch_metrics - - def _preview_base_color(self, val_unsigned_images, extra): - """ - Create preview image for base color - :param val_unsigned_images: Synthesized textures - :param extra: Extra info - :return: Base color image as a array - """ - base_color_val = torch.ones_like(val_unsigned_images) - - if extra["base_color"] is not None: - base_color = extra["base_color"] - assert isinstance(base_color, Color) - base_color_val[:, 0, :, :] = base_color.components[0].unsqueeze(1).unsqueeze( - 2).expand( - [base_color_val.shape[0], base_color_val.shape[2], base_color_val.shape[3]]) - base_color_val[:, 1, :, :] = base_color.components[1].unsqueeze(1).unsqueeze( - 2).expand( - [base_color_val.shape[0], base_color_val.shape[2], base_color_val.shape[3]]) - base_color_val[:, 2, :, :] = base_color.components[2].unsqueeze(1).unsqueeze( - 2).expand( - [base_color_val.shape[0], base_color_val.shape[2], base_color_val.shape[3]]) - if base_color.color_space == ColorSpace.HSV: - base_color_val = hsv_to_rgb(base_color_val) - - return base_color_val - - def _preview_substance_labels(self, val_substance_preds, image_gt_val_for_preview): - """ - Preview substance labels - :param val_substance_preds: Substance predictions - :param image_gt_val_for_preview: Ground truth preview image - :return: - """ - for j in range(val_substance_preds.shape[0]): - img = torchvision.transforms.ToPILImage()( - util.signed_to_unsigned(image_gt_val_for_preview[j]).cpu()) - img_draw = ImageDraw.Draw(img) - img_draw.text((0, 0), self.predictor.substances[val_substance_preds[j].item()], - fill=(255, 0, 0)) - image_gt_val_for_preview[j] = util.unsigned_to_signed( - torchvision.transforms.ToTensor()(img)).to(self.device) - - def _update_eval_metrics(self, epoch: int, val_i: int, epoch_metrics: TextureGenEpochSummary, val_unsigned_images, - val_sub_targets, image_out_val, substance_out_val, extra) -> None: - """ - Report epoch evaluations considering a new batch - :param epoch: Epoch - :param val_i: Batch idx - :param epoch_metrics: Epoch metric readings that get updated - :param val_unsigned_images: Unsigned crops used to condition synthesis - :param val_sub_targets: Ground truth substance labels - :param image_out_val: Synthesized textures - :param substance_out_val: Predicted substances - :param extra: Extra info - """ - image_gt_val = util.unsigned_to_signed(val_unsigned_images).to(self.device) - - # Preview deltas - delta_c1_input, delta_c2_input, delta_c3_input = preview_deltas(extra["network_input"]) - delta_c1_output, delta_c2_output, delta_c3_output = preview_deltas(extra["network_output"]) - - # Preview base color - base_color_val = self._preview_base_color(val_unsigned_images, extra) - - # Style loss - val_style_loss = utils_nt.get_loss(image_gt_val, image_out_val, self.train_params, self._vgg_features, - self._gram_matrix, self._style_criterion) - - image_gt_val_for_preview = image_gt_val.clone() - # Evaluate and preview substance - if self.predictor.substances is not None: - val_substance_loss = self._substance_criterion(substance_out_val, - val_sub_targets) * self.train_params.system.loss_params.substance_weight - val_loss = val_style_loss + val_substance_loss - epoch_metrics.epoch_substance_loss += val_substance_loss.item() - - _, val_substance_preds = substance_out_val.max(dim=1) - val_substance_pass = (val_substance_preds == val_sub_targets).sum(dim=0) - - self._preview_substance_labels(val_substance_preds, image_gt_val_for_preview) - - epoch_metrics.epoch_substance_passed += val_substance_pass.item() - else: - val_loss = val_style_loss - - epoch_metrics.epoch_entry_count += image_out_val.shape[0] - - # Write all previews - preview_val_imgs = preview_images( - torch.cat([util.signed_to_unsigned(image_gt_val_for_preview).cpu(), base_color_val.cpu(), - delta_c1_input.cpu(), delta_c2_input.cpu(), delta_c3_input.cpu(), - util.signed_to_unsigned(image_out_val).cpu(), - delta_c1_output.cpu(), delta_c2_output.cpu(), delta_c3_output.cpu()], dim=0), - self.train_params.train.bs) - - self.summary_writer.add_image("epoch_val_batch%d_results" % (val_i + 1), preview_val_imgs, - global_step=epoch) - - # Update metrics - epoch_metrics.epoch_loss += val_loss.item() - epoch_metrics.epoch_style_loss += val_style_loss.item() - epoch_metrics.epoch_batch_count += 1 - - def _eval_epoch(self, epoch: int) -> TextureGenEpochSummary: - """ - Evaluate model after an epoch - :param epoch: Epoch id - :return: Eval summary - """ - epoch_metrics = TextureGenEpochSummary(epoch_loss=0.0, epoch_style_loss=0.0, - epoch_substance_loss=0.0, - epoch_batch_count=0, epoch_entry_count=0, - epoch_substance_passed=0) - - with torch.no_grad(): - for val_i, val_batch in enumerate(self.val_dataloader): - val_unsigned_images, val_filenames, val_sub_targets, val_unsigned_hsv_images = val_batch - - val_sub_targets = val_sub_targets.to(self.device) - - self.predictor.update_seed() - - val_sample_pos = self.predictor.get_position() - - predictor_result = self.predictor.predict(val_unsigned_images, - val_unsigned_hsv_images, - val_sample_pos, - train=False) - - self._update_eval_metrics(epoch, val_i, epoch_metrics, val_unsigned_images, - val_sub_targets, predictor_result.image_out, predictor_result.substance_out, predictor_result.extra) - - return epoch_metrics - - def _get_checkpoint_metric_value(self, eval_stats: TextureGenEpochSummary) -> float: - return eval_stats.epoch_style_loss - - def _report(self, epoch: int, train_stats: TextureGenEpochSummary, val_stats: TextureGenEpochSummary) -> None: - """ - Report epoch train/val stats. - :param epoch: Epoch index - :param train_stats: Train summary - :param val_stats: Val summary - """ - self.summary_writer.add_scalar("epoch_training_loss", train_stats.epoch_loss / train_stats.epoch_batch_count, - epoch) - self.summary_writer.add_scalar("epoch_training_texture_loss", - train_stats.epoch_style_loss / train_stats.epoch_batch_count, - epoch) - self.summary_writer.add_scalar("epoch_training_substance_loss", - train_stats.epoch_substance_loss / train_stats.epoch_batch_count, epoch) - - if self.predictor.substances is not None: - self.summary_writer.add_scalar("epoch_training_substance_acc", - float( - train_stats.epoch_substance_passed) / train_stats.epoch_entry_count, - epoch) - self.summary_writer.add_scalar("epoch_val_substance_acc", - float(val_stats.epoch_substance_passed) / val_stats.epoch_entry_count, - epoch) - - self.summary_writer.add_scalar("epoch_val_loss", val_stats.epoch_loss / val_stats.epoch_batch_count, - epoch) - self.summary_writer.add_scalar("epoch_val_texture_loss", - val_stats.epoch_style_loss / val_stats.epoch_batch_count, epoch) - self.summary_writer.add_scalar("epoch_val_substance_loss", - val_stats.epoch_substance_loss / val_stats.epoch_batch_count, - epoch) - - if self.predictor.substances is not None: - logging.info( - "[Epoch %d] train-loss: %.5f\t [sub: %.5f\t tex: %.5f]\t train-sub-acc: %.4f (%d/%d)\t " - "val-loss: %.5f\t [sub: %.5f\t tex: %.5f]\t val-sub-ac: %.4f (%d/%d)" % ( - epoch, - train_stats.epoch_loss / train_stats.epoch_batch_count, - train_stats.epoch_substance_loss / train_stats.epoch_batch_count, - train_stats.epoch_style_loss / train_stats.epoch_batch_count, - float(train_stats.epoch_substance_passed) / train_stats.epoch_entry_count, - train_stats.epoch_substance_passed, - train_stats.epoch_entry_count, - val_stats.epoch_loss / val_stats.epoch_batch_count, - val_stats.epoch_substance_loss / val_stats.epoch_batch_count, - val_stats.epoch_style_loss / val_stats.epoch_batch_count, - float(val_stats.epoch_substance_passed) / val_stats.epoch_entry_count, - val_stats.epoch_substance_passed, - val_stats.epoch_entry_count, - )) - else: - logging.info( - "[Epoch %d] train-loss: %.5f\t [tex: %.5f]\t val-loss: %.5f\t [tex: %.5f]" % ( - epoch, - train_stats.epoch_loss / train_stats.epoch_batch_count, - train_stats.epoch_substance_loss / train_stats.epoch_batch_count, - val_stats.epoch_loss / val_stats.epoch_batch_count, - val_stats.epoch_style_loss / val_stats.epoch_batch_count, - )) - - def _save_checkpoint(self, epoch: int, reason: SaveReason, train_stats, val_stats) -> None: - """ - Saves a checkpoint - :param epoch: Epoch - :param reason: Save reason - :param train_stats: Train stats - :param val_stats: Val stats - """ - if reason == SaveReason.BEST_MODEL: - # Save best model - logging.info("Best Style Loss") - self.predictor.save_checkpoint(self.optimizer, epoch, self.epoch_stats[epoch], - save_path=osp.join(self.output_path, "best_models", - "best-tex-val-loss-%.5f-epoch-%d.ckpt" % ( - val_stats.epoch_style_loss / val_stats.epoch_batch_count, - epoch + 1))) - elif reason == SaveReason.INTERVAL: - logging.info("Saving Checkpoint") - self.predictor.save_checkpoint(self.optimizer, epoch, self.epoch_stats[epoch], - save_path=osp.join(self.output_path, "checkpoints", - "loss-%.5f-epoch-%d.ckpt" % ( - val_stats.epoch_style_loss / val_stats.epoch_batch_count, - epoch))) - - else: - assert False diff --git a/code/src/plan2scene/texture_gen/trainer/train_util.py b/code/src/plan2scene/texture_gen/trainer/train_util.py deleted file mode 100644 index 72c6b5d..0000000 --- a/code/src/plan2scene/texture_gen/trainer/train_util.py +++ /dev/null @@ -1,29 +0,0 @@ -from torch import nn -from torch import optim -from torch import nn - - -def get_loss(loss_params): - """ - Returns loss function. - :param loss_params: Configuration of loss function. - :return: Loss function - """ - if loss_params.kind == "mse": - return nn.MSELoss() - elif loss_params.kind == "cross_entropy": - return nn.CrossEntropyLoss() - assert False, "Unsupported loss" - - -def get_optim(optimizer_params, model_parameters): - """ - Returns optimizer. - :param optimizer_params: Parameters used to configure the optimizer. - :param model_parameters: Parameters of the network. - :return: - """ - if optimizer_params.kind == "adam": - return optim.Adam(model_parameters, lr=optimizer_params.lr, - weight_decay=optimizer_params.weight_decay) - assert False, "Unsupported optimizer" diff --git a/code/src/plan2scene/texture_gen/utils/__init__.py b/code/src/plan2scene/texture_gen/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_gen/utils/hsv_utils.py b/code/src/plan2scene/texture_gen/utils/hsv_utils.py deleted file mode 100644 index fbc7b27..0000000 --- a/code/src/plan2scene/texture_gen/utils/hsv_utils.py +++ /dev/null @@ -1,245 +0,0 @@ -import torch - - -# Based on https://github.com/odegeasslbc/Differentiable-RGB-to-HSV-convertion-pytorch/blob/master/pytorch_hsv.py - - -def rgb_decompose_median(rgb_tensors: torch.Tensor) -> tuple: - """ - Separate median color from given RGB images. - :param rgb_tensors: RGB images [batch_size, 3, height, width]. - :return: tuple(Delta RGB image [batch_size, 3, height, width], median R [batch_size], median G [batch_size], median B [batch_size]) - """ - assert len(rgb_tensors.shape) == 4 and rgb_tensors.shape[1] == 3 - - _median_r = rgb_tensors[:, 0, :, :].view(rgb_tensors.shape[0], -1).median(dim=1)[0].detach() - median_r = _median_r.unsqueeze(1).unsqueeze(2).expand( - [rgb_tensors.shape[0], rgb_tensors.shape[2], rgb_tensors.shape[3]]) - - _median_g = rgb_tensors[:, 1, :, :].view(rgb_tensors.shape[0], -1).median(dim=1)[0].detach() - median_g = _median_g.unsqueeze(1).unsqueeze(2).expand( - [rgb_tensors.shape[0], rgb_tensors.shape[2], rgb_tensors.shape[3]]) - - _median_b = rgb_tensors[:, 2, :, :].view(rgb_tensors.shape[0], -1).median(dim=1)[0].detach() - median_b = _median_b.unsqueeze(1).unsqueeze(2).expand( - [rgb_tensors.shape[0], rgb_tensors.shape[2], rgb_tensors.shape[3]]) - - updated_rgb_tensors = rgb_tensors.clone() - updated_rgb_tensors[:, 0, :, :] -= median_r - updated_rgb_tensors[:, 1, :, :] -= median_g - updated_rgb_tensors[:, 2, :, :] -= median_b - - return updated_rgb_tensors, _median_r, _median_g, _median_b - - -def rgb_recombine_median(d_rgb_tensors: torch.Tensor, median_r: torch.Tensor, median_g: torch.Tensor, median_b: torch.Tensor) -> torch.Tensor: - """ - Recombine separated median RGB to the delta RGB tensor. - :param d_rgb_tensors: Delta RGB tensor [batch_size, 3, height, width]. - :param median_r: Median R [batch_size] - :param median_g: Median G [batch_size] - :param median_b: Median B [batch_size] - :return: Recombined RGB texture [batch_size, 3, height, width]. Outputs in the range 0..1 - """ - assert len(d_rgb_tensors.shape) == 4 and d_rgb_tensors.shape[1] == 3 - assert len(median_r.shape) == 1 - assert len(median_g.shape) == 1 - assert len(median_b.shape) == 1 - - updated_rgb_tensors = d_rgb_tensors.clone() - median_r = median_r.unsqueeze(1).unsqueeze(2).expand( - [updated_rgb_tensors.shape[0], updated_rgb_tensors.shape[2], updated_rgb_tensors.shape[3]]) - median_g = median_g.unsqueeze(1).unsqueeze(2).expand( - [updated_rgb_tensors.shape[0], updated_rgb_tensors.shape[2], updated_rgb_tensors.shape[3]]) - median_b = median_b.unsqueeze(1).unsqueeze(2).expand( - [updated_rgb_tensors.shape[0], updated_rgb_tensors.shape[2], updated_rgb_tensors.shape[3]]) - - updated_rgb_tensors[:, 0, :, :] += median_r - updated_rgb_tensors[:, 1, :, :] += median_g - updated_rgb_tensors[:, 2, :, :] += median_b - - updated_rgb_tensors = updated_rgb_tensors.clamp(0, 1) - - return updated_rgb_tensors - - -def hsv_decompose_median(hsv_tensors: torch.Tensor): - """ - Separate median color from given HSV images. - :param hsv_tensors: HSV images [batch_size, 3, height, width] - :return: tuple(Delta HSV image [batch_size, 3, height, width], median H [batch_size], median S [batch_size], median V [batch_size]). - Output values are approximately in the range -0.5 to 0.5 - """ - assert len(hsv_tensors.shape) == 4 and hsv_tensors.shape[1] == 3 - - # Compute the median color in RGB. HSV is tricky due to circular nature of hue. - rgb_tensors = hsv_to_rgb(hsv_tensors) - _median_r = rgb_tensors[:, 0, :, :].view(hsv_tensors.shape[0], -1).median(dim=1)[0].detach() - _median_g = rgb_tensors[:, 1, :, :].view(hsv_tensors.shape[0], -1).median(dim=1)[0].detach() - _median_b = rgb_tensors[:, 2, :, :].view(hsv_tensors.shape[0], -1).median(dim=1)[0].detach() - - # Convert median color to HSV. - _median_hsv = rgb_to_hsv(torch.cat( - [_median_r.view(-1, 1).unsqueeze(2).unsqueeze(3), _median_g.view(-1, 1).unsqueeze(2).unsqueeze(3), - _median_b.view(-1, 1).unsqueeze(2).unsqueeze(3)], dim=1)).squeeze(3).squeeze(2) - - _median_h = _median_hsv[:, 0] - _median_s = _median_hsv[:, 1] - _median_v = _median_hsv[:, 2] - - median_h = _median_h.unsqueeze(1).unsqueeze(2).expand( - [hsv_tensors.shape[0], hsv_tensors.shape[2], hsv_tensors.shape[3]]) - median_s = _median_s.unsqueeze(1).unsqueeze(2).expand( - [hsv_tensors.shape[0], hsv_tensors.shape[2], hsv_tensors.shape[3]]) - median_v = _median_v.unsqueeze(1).unsqueeze(2).expand( - [hsv_tensors.shape[0], hsv_tensors.shape[2], hsv_tensors.shape[3]]) - - updated_hsv_tensors = hsv_tensors.clone() - updated_hsv_tensors[:, 0, :, :] -= median_h - updated_hsv_tensors[:, 0, :, :] = (updated_hsv_tensors[:, 0, :, :] + 1.5) % 1.0 - 0.5 - - updated_hsv_tensors[:, 1, :, :] -= median_s - updated_hsv_tensors[:, 2, :, :] -= median_v - - return updated_hsv_tensors, _median_h, _median_s, _median_v - - -def hsv_recombine_median(d_hsv_tensors, median_h, median_s, median_v): - """ - Recombine separated median HSV to the delta HSV tensor. - :param d_hsv_tensors: Delta HSV tensor [batch_size, 3, height, width]. - :param median_h: Median H [batch_size] - :param median_s: Median S [batch_size] - :param median_v: Median V [batch_size] - :return: Recombined HSV texture [batch_size, 3, height, width]. Outputs in the range 0..1 - """ - assert len(d_hsv_tensors.shape) == 4 and d_hsv_tensors.shape[1] == 3 - assert len(median_h.shape) == 1 - assert len(median_s.shape) == 1 - assert len(median_v.shape) == 1 - - updated_hsv_tensors = d_hsv_tensors.clone() - - median_h = median_h.unsqueeze(1).unsqueeze(2).expand( - [updated_hsv_tensors.shape[0], updated_hsv_tensors.shape[2], updated_hsv_tensors.shape[3]]) - median_s = median_s.unsqueeze(1).unsqueeze(2).expand( - [updated_hsv_tensors.shape[0], updated_hsv_tensors.shape[2], updated_hsv_tensors.shape[3]]) - median_v = median_v.unsqueeze(1).unsqueeze(2).expand( - [updated_hsv_tensors.shape[0], updated_hsv_tensors.shape[2], updated_hsv_tensors.shape[3]]) - - updated_hsv_tensors[:, 0, :, :] += 0.5 - updated_hsv_tensors[:, 0, :, :] += median_h - updated_hsv_tensors[:, 0, :, :] = (updated_hsv_tensors[:, 0, :, :] + 1.5) % 1.0 - - updated_hsv_tensors[:, 1, :, :] += median_s - updated_hsv_tensors[:, 2, :, :] += median_v - - updated_hsv_tensors = updated_hsv_tensors.clamp(0, 1) - - return updated_hsv_tensors - - -def rgb_to_hsv(img: torch.Tensor) -> torch.Tensor: - """ - RGB to HSV conversion function. - :param img: Batch of RGB images [batch_size, 3, height, width] - :return: Batch of HSV images [batch_size, 3, height, width] - """ - assert len(img.shape) == 4 and img.shape[1] == 3 - eps = 1e-7 - hue = torch.Tensor(img.shape[0], img.shape[2], img.shape[3]).to(img.device) - - hue[img[:, 2] == img.max(1)[0]] = 4.0 + ((img[:, 0] - img[:, 1]) / (img.max(1)[0] - img.min(1)[0] + eps))[ - img[:, 2] == img.max(1)[0]] - hue[img[:, 1] == img.max(1)[0]] = 2.0 + ((img[:, 2] - img[:, 0]) / (img.max(1)[0] - img.min(1)[0] + eps))[ - img[:, 1] == img.max(1)[0]] - hue[img[:, 0] == img.max(1)[0]] = (0.0 + ((img[:, 1] - img[:, 2]) / (img.max(1)[0] - img.min(1)[0] + eps))[ - img[:, 0] == img.max(1)[0]]) % 6 - - hue[img.min(1)[0] == img.max(1)[0]] = 0.0 - hue = hue / 6 - - saturation = (img.max(1)[0] - img.min(1)[0]) / (img.max(1)[0] + eps) - saturation[img.max(1)[0] == 0] = 0 - - value = img.max(1)[0] - - hue = hue.unsqueeze(1) - saturation = saturation.unsqueeze(1) - value = value.unsqueeze(1) - hsv = torch.cat([hue, saturation, value], dim=1) - return hsv - - -def hsv_to_rgb(input_hsv_tensor): - """ - Differentiable HSV to RGB conversion function. - :param input_hsv_tensor: Batch of HSV images [batch_size, 3, height, width] - :return: Batch of RGB images [batch_size, 3, height, width] - """ - assert len(input_hsv_tensor.shape) == 4 and input_hsv_tensor.shape[1] == 3 - hues = input_hsv_tensor[:, 0, :, :] - sats = input_hsv_tensor[:, 1, :, :] - vals = input_hsv_tensor[:, 2, :, :] - c = sats * vals - - x = c * (1 - torch.abs((hues * 6.0) % 2.0 - 1.0)) - m = vals - c - - # Compute R - r_hat = torch.zeros_like(hues) - filter_hues = hues.clone() - r_hat[filter_hues < 1.0 / 6.0] = c[filter_hues < 1.0 / 6.0] - filter_hues[filter_hues < 1.0 / 6.0] += 10.0 - r_hat[filter_hues < 2.0 / 6.0] = x[filter_hues < 2.0 / 6.0] - filter_hues[filter_hues < 2.0 / 6.0] += 10.0 - r_hat[filter_hues < 3.0 / 6.0] = 0 - filter_hues[filter_hues < 3.0 / 6.0] += 10.0 - r_hat[filter_hues < 4.0 / 6.0] = 0 - filter_hues[filter_hues < 4.0 / 6.0] += 10.0 - r_hat[filter_hues < 5.0 / 6.0] = x[filter_hues < 5.0 / 6.0] - filter_hues[filter_hues < 5.0 / 6.0] += 10.0 - r_hat[filter_hues <= 6.0 / 6.0] = c[filter_hues <= 6.0 / 6.0] - filter_hues[filter_hues <= 6.0 / 6.0] += 10.0 - - # Compute G - g_hat = torch.zeros_like(hues) - filter_hues = hues.clone() - g_hat[filter_hues < 1.0 / 6.0] = x[filter_hues < 1.0 / 6.0] - filter_hues[filter_hues < 1.0 / 6.0] += 10.0 - g_hat[filter_hues < 2.0 / 6.0] = c[filter_hues < 2.0 / 6.0] - filter_hues[filter_hues < 2.0 / 6.0] += 10.0 - g_hat[filter_hues < 3.0 / 6.0] = c[filter_hues < 3.0 / 6.0] - filter_hues[filter_hues < 3.0 / 6.0] += 10.0 - g_hat[filter_hues < 4.0 / 6.0] = x[filter_hues < 4.0 / 6.0] - filter_hues[filter_hues < 4.0 / 6.0] += 10.0 - g_hat[filter_hues < 5.0 / 6.0] = 0 - filter_hues[filter_hues < 5.0 / 6.0] += 10.0 - g_hat[filter_hues <= 6.0 / 6.0] = 0 - filter_hues[filter_hues <= 6.0 / 6.0] += 10.0 - - # Compute B - b_hat = torch.zeros_like(hues) - filter_hues = hues.clone() - b_hat[filter_hues < 1.0 / 6.0] = 0 - filter_hues[filter_hues < 1.0 / 6.0] += 10.0 - b_hat[filter_hues < 2.0 / 6.0] = 0 - filter_hues[filter_hues < 2.0 / 6.0] += 10.0 - b_hat[filter_hues < 3.0 / 6.0] = x[filter_hues < 3.0 / 6.0] - filter_hues[filter_hues < 3.0 / 6.0] += 10.0 - b_hat[filter_hues < 4.0 / 6.0] = c[filter_hues < 4.0 / 6.0] - filter_hues[filter_hues < 4.0 / 6.0] += 10.0 - b_hat[filter_hues < 5.0 / 6.0] = c[filter_hues < 5.0 / 6.0] - filter_hues[filter_hues < 5.0 / 6.0] += 10.0 - b_hat[filter_hues <= 6.0 / 6.0] = x[filter_hues <= 6.0 / 6.0] - filter_hues[filter_hues <= 6.0 / 6.0] += 10.0 - - r = (r_hat + m).view(input_hsv_tensor.shape[0], 1, input_hsv_tensor.shape[2], - input_hsv_tensor.shape[3]) - g = (g_hat + m).view(input_hsv_tensor.shape[0], 1, input_hsv_tensor.shape[2], - input_hsv_tensor.shape[3]) - b = (b_hat + m).view(input_hsv_tensor.shape[0], 1, input_hsv_tensor.shape[2], - input_hsv_tensor.shape[3]) - - rgb = torch.cat([r, g, b], dim=1) - return rgb diff --git a/code/src/plan2scene/texture_gen/utils/io.py b/code/src/plan2scene/texture_gen/utils/io.py deleted file mode 100644 index a23e65c..0000000 --- a/code/src/plan2scene/texture_gen/utils/io.py +++ /dev/null @@ -1,115 +0,0 @@ -# Code adapted from https://raw.githubusercontent.com/henzler/neuraltexture/master/code/utils/io.py -import logging -import numpy as np -import random -import torch -import yaml -from orderedattrdict.yamlutils import AttrDictYAMLLoader -import os -import os.path as osp -import torchvision - - -def load_config_train(config_path: str): - """ - Load a neural texture synthesis config file for training purposes. - :param config_path: Path to config file. - :return: Loaded config - """ - config = load_config(config_path) - - # set seed - seed = config['train']['seed'] - torch.manual_seed(seed) - np.random.seed(seed) - random.seed(seed) - - param = _update_config_common(config, config_path) - return param - - -def _update_config_common(config): - """ - Load dependent configs. - :param config: Neural texture synthesis config. - :return: Updated config. - """ - config['texture']['channels'] = 3 # RGB - config['texture']['t'] = config.dim ** 2 * config.noise.octaves - config['texture']['z'] = config.texture.e + config.texture.t - config['system']['arch']['model_texture_encoder']['model_params']['z'] = config.texture.z - shape_in = [[config.texture.e + config.noise.octaves * config.texture.channels * 2, config.image.image_res, - config.image.image_res]] - - shape_out = [[config.texture.channels, config.image.image_res, config.image.image_res]] - - config['system']['arch']['model_texture_decoder']['model_params'][ - 'noise'] = config.noise.octaves * config.dim * config.texture.channels - config['system']['arch']['model_texture_decoder']['model_params']['shape_in'] = shape_in - config['system']['arch']['model_texture_decoder']['model_params']['shape_out'] = shape_out - - param = config - - if param.device == 'cuda' and not torch.cuda.is_available(): - raise Exception('No GPU found, please use "cpu" as device') - - return param - - -def load_conf_eval(config_path: str): - """ - Load neural texture synthesis config for evaluation purposes. - :param config_path: Path to saved config file. - :return: Loaded config - """ - config = load_config(config_path) - - conf = _update_config_common(config=config) - conf["train"]["bs"] = 1 - return conf - - -def load_config(config_path: str): - """ - Loaded neural texture config from disk. - :param config_path: Path to config file. - :return: Loaded config. - """ - logging.info('Using PyTorch {}'.format(torch.__version__)) - logging.info('Load config: {}'.format(config_path)) - - config = yaml.load(open(str(config_path)), Loader=AttrDictYAMLLoader) - return config - - -def preview_images(images: torch.Tensor, ncol: int) -> torch.Tensor: - """ - Preview images using a grid. - :param images: Images to preview. - :param ncol: Number of columns - :return: Images concatenated into a grid. - """ - images = images.clone() - prev_image = torchvision.utils.make_grid(images, ncol) - return prev_image - - -def preview_deltas(signed_delta_image: torch.Tensor) -> list: - """ - Preview individual channels (RGB/HSV) of a delta image. - :param signed_delta_image: Batch of images to preview [batch_size, channel_count, height, width] - :return: List of tensors, one per each channel. - """ - outputs = [] - for channel in range(signed_delta_image.shape[1]): - pallet = signed_delta_image[:, channel:channel + 1, :, :].repeat([1, 2, 1, 1]).permute(1, 0, 2, 3) - pallet[0, pallet[0] > 0] = 0.0 - pallet[0, :] = -pallet[0, :] - pallet[1, pallet[1] < 0] = 0.0 - pallet *= 1 - pallet = torch.cat( - [pallet[0:1].cpu(), torch.zeros((1, pallet.shape[1], pallet.shape[2], pallet.shape[3])), pallet[1:2].cpu()]) - pallet = pallet.permute(1, 0, 2, 3) - outputs.append(pallet) - - return outputs \ No newline at end of file diff --git a/code/src/plan2scene/texture_gen/utils/neural_texture_helper.py b/code/src/plan2scene/texture_gen/utils/neural_texture_helper.py deleted file mode 100644 index 7cf2de5..0000000 --- a/code/src/plan2scene/texture_gen/utils/neural_texture_helper.py +++ /dev/null @@ -1,167 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/utils/neural_texture_helper.py - -import torch -import kornia -from plan2scene.texture_gen.nets.vgg import vgg19 -import plan2scene.texture_gen.utils.utils as util - - -class VGGFeatures(torch.nn.Module): - - def __init__(self): - torch.nn.Module.__init__(self) - - vgg_pretrained_features = vgg19(pretrained=True).features - - self.slice1 = torch.nn.Sequential() - self.slice2 = torch.nn.Sequential() - self.slice3 = torch.nn.Sequential() - self.slice4 = torch.nn.Sequential() - self.slice5 = torch.nn.Sequential() - - for x in range(4): # relu_1_1 - self.slice1.add_module(str(x), vgg_pretrained_features[x]) - for x in range(4, 9): # relu_2_1 - self.slice2.add_module(str(x), vgg_pretrained_features[x]) - for x in range(9, 18): # relu_3_1 - self.slice3.add_module(str(x), vgg_pretrained_features[x]) - for x in range(18, 27): # relu_4_1 - self.slice4.add_module(str(x), vgg_pretrained_features[x]) - for x in range(27, 36): # relu_5_1 - self.slice5.add_module(str(x), vgg_pretrained_features[x]) - for param in self.parameters(): - param.requires_grad = False - - def forward(self, x): - - ## normalize - mean = [0.485, 0.456, 0.406] - std = [0.229, 0.224, 0.225] - device = 'cuda' if x.is_cuda else 'cpu' - mean = torch.as_tensor(mean, device=device).view(1, 3, 1, 1) - std = torch.as_tensor(std, device=device).view(1, 3, 1, 1) - x = x.sub(mean) - x = x.div(std) - - # get features - h1 = self.slice1(x) - h_relu1_1 = h1 - h2 = self.slice2(h1) - h_relu2_1 = h2 - h3 = self.slice3(h2) - h_relu3_1 = h3 - h4 = self.slice4(h3) - h_relu4_1 = h4 - h5 = self.slice5(h4) - h_relu5_1 = h5 - - return [h_relu1_1, h_relu2_1, h_relu3_1, h_relu4_1, h_relu5_1] - - -class GramMatrix(torch.nn.Module): - - def forward(self, input): - b, c, h, w = input.size() - features = input.view(b, c, h * w) - gram_matrix = torch.bmm(features, features.transpose(1, 2)) - - gram_matrix.div_(h * w) - return gram_matrix - - -def get_position(size, dim, device, batch_size): - height, width = size - aspect_ratio = width / height - position = kornia.utils.create_meshgrid(height, width, device=torch.device(device)).permute(0, 3, 1, 2) - position[:, 1] = -position[:, 1] * aspect_ratio # flip y axis - - if dim == 1: - x, y = torch.split(position, 1, dim=1) - position = x - if dim == 3: - - x, y = torch.split(position, 1, dim=1) - - z = torch.ones_like(x) * torch.rand(1, device=device) * 2 - 1 - - a = torch.randint(0, 3, (1,)).item() - if a == 0: - xyz = [x, y, z] - elif a == 1: - xyz = [z, x, y] - else: - xyz = [x, z, y] - - position = torch.cat(xyz, dim=1) - - position = position.expand(batch_size, dim, height, width) - - return position - - -def transform_coord(coord, t_coeff, dim): - device = 'cuda' if coord.is_cuda else 'cpu' - identity_matrix = torch.nn.init.eye_(torch.empty(dim, dim, device=device)) - - bs, octaves, h, w, dim = coord.size() - - inter = (t_coeff.shape[2] != 1) - if inter: - t_coeff = t_coeff.reshape(bs, octaves, dim, dim, h, w) - t_coeff = t_coeff.permute(0, 1, 4, 5, 2, 3) - else: - t_coeff = t_coeff.reshape(bs, octaves, dim, dim).unsqueeze(2).unsqueeze(2) - - t_coeff = t_coeff.expand(bs, octaves, h, w, dim, dim) - t_coeff = t_coeff.reshape(bs * octaves, h, w, dim, dim) - - transform_matrix = identity_matrix.expand(bs * octaves, dim, dim) - transform_matrix = transform_matrix.unsqueeze(1).unsqueeze(1) - transform_matrix = transform_matrix.expand(bs * octaves, h, w, dim, dim) - - transform_matrix = transform_matrix + t_coeff - transform_matrix = transform_matrix.reshape(h * w * bs * octaves, dim, dim) - - coord = coord.reshape(h * w * bs * octaves, dim, 1) - coord_transformed = torch.bmm(transform_matrix, coord).squeeze(2) - coord_transformed = coord_transformed.reshape(bs, octaves, h, w, dim) - - return coord_transformed - - -def get_loss_no_reduce(image_gt, image_out, param, vgg_features, gram_matrix, criterion): - vgg_features.eval() - gram_matrix.eval() - - loss_style = torch.zeros((image_gt.shape[0]), device=param.device) - vgg_features_out = vgg_features(util.signed_to_unsigned(image_out)) - vgg_features_gt = vgg_features(util.signed_to_unsigned(image_gt)) - - gram_matrices_gt = list(map(gram_matrix, vgg_features_gt)) - gram_matrices_out = list(map(gram_matrix, vgg_features_out)) - - for gram_matrix_gt, gram_matrix_out in zip(gram_matrices_gt, gram_matrices_out): - loss_style += param.system.loss_params.style_weight * criterion(gram_matrix_out, gram_matrix_gt).view( - image_gt.shape[0], -1).mean(dim=1) - - return loss_style - - -def get_loss(image_gt, image_out, param, vgg_features, gram_matrix, criterion): - # Switching the VGG Network and Gram Matrix to EVAL mode. - vgg_features.eval() - gram_matrix.eval() - - loss_style = torch.tensor(0.0, device=param.device) - vgg_features_out = vgg_features(util.signed_to_unsigned(image_out)) - vgg_features_gt = vgg_features(util.signed_to_unsigned(image_gt)) - - gram_matrices_gt = list(map(gram_matrix, vgg_features_gt)) - gram_matrices_out = list(map(gram_matrix, vgg_features_out)) - - for gram_matrix_gt, gram_matrix_out in zip(gram_matrices_gt, gram_matrices_out): - loss_style += param.system.loss_params.style_weight * criterion(gram_matrix_out, gram_matrix_gt) - - return loss_style - - diff --git a/code/src/plan2scene/texture_gen/utils/utils.py b/code/src/plan2scene/texture_gen/utils/utils.py deleted file mode 100644 index 45efb6b..0000000 --- a/code/src/plan2scene/texture_gen/utils/utils.py +++ /dev/null @@ -1,121 +0,0 @@ -# Code adapted from https://github.com/henzler/neuraltexture/blob/master/code/utils/utils.py - -import numpy as np -import torch -import torchvision - - -def get_grid_coords_2d(y, x, coord_dim=-1): - y, x = torch.meshgrid(y, x) - coords = torch.stack([x, y], dim=coord_dim) - return coords - - -def get_grid_coords_3d(z, y, x, coord_dim=-1): - z, y, x = torch.meshgrid(z, y, x) - coords = torch.stack([x, y, z], dim=coord_dim) - return coords - - -def signed_to_unsigned(array): - """ - Converts a signed tensor to unsigned. - :param array: - :return: - """ - return (array + 1) / 2 - - -def unsigned_to_signed(array): - """ - Converts an unsigned tensor to signed. - :param array: - :return: - """ - return (array - 0.5) / 0.5 - - -def pytorch_to_numpy(array, is_batch=True, flip=True): - array = array.detach().cpu().numpy() - - if flip: - source = 1 if is_batch else 0 - dest = array.ndim - 1 - array = np.moveaxis(array, source, dest) - - return array - - -def numpy_to_pytorch(array, is_batch=False, flip=True): - if flip: - dest = 1 if is_batch else 0 - source = array.ndim - 1 - array = np.moveaxis(array, source, dest) - - array = torch.from_numpy(array) - array = array.float() - - return array - - -def convert_to_int(array): - array *= 255 - array[array > 255] = 255.0 - - if type(array).__module__ == 'numpy': - return array.astype(np.uint8) - - elif type(array).__module__ == 'torch': - return array.byte() - else: - raise NotImplementedError - - -def convert_to_float(array): - max_value = np.iinfo(array.dtype).max - array[array > max_value] = max_value - - if type(array).__module__ == 'numpy': - return array.astype(np.float32) / max_value - - elif type(array).__module__ == 'torch': - return array.float() / max_value - else: - raise NotImplementedError - - -def metric_mse(output, target): - return torch.nn.functional.mse_loss(output, target).mean().item() - - -def dict_to_keyvalue(params, prefix=''): - hparams = {} - - for key, value in params.items(): - if isinstance(value, dict): - if not prefix == '': - new_prefix = '{}.{}'.format(prefix, key) - else: - new_prefix = key - hparams.update(dict_to_keyvalue(value, prefix=new_prefix)) - else: - if not prefix == '': - key = '{}.{}'.format(prefix, key) - hparams[key] = value - - return hparams - - -def dict_mean(dict_list): - mean_dict = {} - dict_item = dict_list[0] - - for key in dict_list[0].keys(): - if isinstance(dict_item[key], dict): - for key2 in dict_item[key].keys(): - if not mean_dict.__contains__(key): - mean_dict[key] = {} - mean_dict[key][key2] = sum(d[key][key2] for d in dict_list) / len(dict_list) - else: - mean_dict[key] = sum(d[key] for d in dict_list) / len(dict_list) - return mean_dict diff --git a/code/src/plan2scene/texture_prop/__init__.py b/code/src/plan2scene/texture_prop/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_prop/gnn_prop.py b/code/src/plan2scene/texture_prop/gnn_prop.py deleted file mode 100644 index 2400a98..0000000 --- a/code/src/plan2scene/texture_prop/gnn_prop.py +++ /dev/null @@ -1,55 +0,0 @@ -import torch -from torch_geometric.data import DataLoader -import logging - -from plan2scene.common.image_description import ImageSource -from plan2scene.config_manager import ConfigManager -from plan2scene.crop_select.util import fill_textures -from plan2scene.texture_gen.predictor import TextureGenPredictor -from plan2scene.texture_prop.graph_generators import InferenceHGG -from plan2scene.texture_prop.houses_dataset import HouseDataset -from plan2scene.texture_prop.predictor import TexturePropPredictor -from plan2scene.texture_prop.utils import get_graph_generator, clear_predictions, update_embeddings - - -def propagate_textures(conf: ConfigManager, houses: dict, tg_predictor: TextureGenPredictor, tp_predictor: TexturePropPredictor, - keep_existing_predictions: bool, use_train_graph_generator: bool, - use_val_graph_generator: bool) -> None: - """ - Propagate textures to (unobserved) surfaces of the given houses. - :param conf: - :param houses: - :param tg_predictor: - :param tp_predictor: - :param keep_existing_predictions: - :param use_train_graph_generator: - :param use_val_graph_generator: - :return: - """ - device = conf.texture_prop.device - - assert not (use_train_graph_generator and use_val_graph_generator) # Cant use both together - - # Select a suitable graph generator - if use_train_graph_generator: - nt_graph_generator = get_graph_generator(conf, conf.texture_prop.train_graph_generator, include_target=False) - elif use_val_graph_generator: - nt_graph_generator = get_graph_generator(conf, conf.texture_prop.val_graph_generator, include_target=False) - else: - nt_graph_generator = InferenceHGG(conf=conf, include_target=False) - - val_nt_dataset = HouseDataset(houses, graph_generator=nt_graph_generator) - val_nt_dataloader = DataLoader(val_nt_dataset, batch_size=conf.texture_prop.train.bs) - - if not keep_existing_predictions: - clear_predictions(conf, houses) - - with torch.no_grad(): - for i, batch in enumerate(val_nt_dataloader): - logging.info("Batch [%d/%d] Graph Inference" % (i, len(val_nt_dataloader))) - output = tp_predictor.predict(batch.to(device)) - update_embeddings(conf, houses, batch, output, - keep_existing_predictions=keep_existing_predictions) - - logging.info("Synthesizing textures") - fill_textures(conf, houses, log=True, predictor=tg_predictor, image_source=ImageSource.GNN_PROP, skip_existing_textures=keep_existing_predictions) diff --git a/code/src/plan2scene/texture_prop/graph_generators.py b/code/src/plan2scene/texture_prop/graph_generators.py deleted file mode 100644 index 9c46ad9..0000000 --- a/code/src/plan2scene/texture_prop/graph_generators.py +++ /dev/null @@ -1,214 +0,0 @@ -import torch - -from config_parser import Config -from plan2scene.config_manager import ConfigManager -from torch_geometric.data import Data -from plan2scene.common.residence import House, Room -from plan2scene.texture_prop.graph_util import get_house_graph, generate_target_and_mask -from abc import ABC, abstractmethod - -""" -Graph generators generate graph representations of houses. These graph representations are used for training the GNN and for inferring textures. -""" - - -class HouseGraphGenerator(ABC): - """ - Graph generator for houses. - """ - - def __init__(self, conf: ConfigManager, include_target: bool): - """ - Initialize. - :param conf: Config manager. - :param include_target: Pass true to populate target embeddings of each node. - """ - self.conf = conf - self.include_target = include_target - - @abstractmethod - def __call__(self): - pass - - -class InferenceHGG(HouseGraphGenerator): - """ - Generates a graph for each surface in a given house, allowing texture predictions for all surfaces of a house. - """ - - def __init__(self, conf: ConfigManager, include_target: bool): - """ - Initialize graph generator. - :param conf: Config Manager. - :param include_target: Pass true to populate target embeddings of each node. - """ - super().__init__(conf, include_target) - - def __call__(self, house): - return generate_inference_graphs(conf=self.conf, house=house, include_target=self.include_target) - - -class ExcludeTargetSurfaceHGG(HouseGraphGenerator): - """ - Generates a list of graphs from a house where in each graph, the target surface is dropped from the input. - These graphs can be used to train a network to predict the embedding of a surface using the embeddings of neighboring surfaces. - """ - - def __init__(self, conf: ConfigManager, include_target: bool, params: Config): - """ - Initialize graph gnenerator. - :param conf: Config manager. - :param include_target: Pass true to populate target embeddings of each node. - :param params: Graph genrator config. Not used since this graph generator doesn't support custom configurations. - """ - super().__init__(conf, include_target) - - def __call__(self, house): - return generate_exclude_target_surface_graphs(conf=self.conf, house=house, include_target=self.include_target) - - -class RandomDropExcludeTargetSurfaceHGG(HouseGraphGenerator): - """ - Generates a list of graphs from a house where in each graph, the target surface is dropped from the input. - As additional augmentation, we drop surface embeddings at random from the input. - """ - - def __init__(self, conf: ConfigManager, include_target: bool, params: Config): - """ - Initialize graph generator. - :param conf: Config manager - :param include_target: Pass true to populate target embeddings of each node. - :param params: Graph genrator config. - """ - super().__init__(conf, include_target) - self.drop_fraction_frequency_map = {a[0]: a[1] for a in params.drop_fraction_frequencies} - - def __call__(self, house): - return generate_random_drop_exclude_target_surface_graphs(conf=self.conf, house=house, - include_target=self.include_target, - drop_fraction_frequency_map=self.drop_fraction_frequency_map) - - -def generate_inference_graphs(conf: ConfigManager, house: House, include_target: bool, key: str = "prop") -> list: - """ - Returns list of graphs from a house where each graph has a single target surface that is to be predicted. - :param house: The house represented using graphs. - :param include_target: Pass true to populate target embeddings of each node. - :param key: Key used to identify active texture embeddings. - :return: List of graphs - """ - assert include_target == False # We do not use target at inference time. - - graphs = [] - for room_index, room in house.rooms.items(): - for surface in conf.surfaces: - target_surface_map = {room_index: [surface]} - node_embeddings_t, edge_indices_t, surface_embeddings_t = get_house_graph(conf=conf, house=house, - surface_maskout_map={}) - if include_target: - y_t, y_mask_t = generate_target_and_mask(conf=conf, house=house, target_surface_map=target_surface_map, - include_target=True) - graph = Data(x=node_embeddings_t, surfemb=surface_embeddings_t, - edge_index=edge_indices_t.t().contiguous(), y=y_t, y_mask=y_mask_t, - key=[house.house_key, room_index, surface]) - else: - _, y_mask_t = generate_target_and_mask(conf=conf, house=house, target_surface_map=target_surface_map, - include_target=False) - graph = Data(x=node_embeddings_t, surfemb=surface_embeddings_t, - edge_index=edge_indices_t.t().contiguous(), y_mask=y_mask_t, - key=[house.house_key, room_index, surface]) - - graphs.append(graph) - return graphs - - -def _add_exclusion(exclusion_map: dict, room_index: int, surface: str) -> None: - """ - Update exclusion map, indicating that the specified surface must be excluded. - :param exclusion_map: Exclusion map that gets updated. - :param room_index: Room index of the surface - :param surface: Surface type - """ - if room_index not in exclusion_map: - exclusion_map[room_index] = [] - if surface not in exclusion_map[room_index]: - exclusion_map[room_index].append(surface) - - -def generate_random_drop_exclude_target_surface_graphs(conf: ConfigManager, house: House, include_target: bool, - key: str = "prop", drop_fraction_frequency_map: dict = {}): - """ - Returns list of graphs from a house where in each graph, the target surface is dropped from the input. - Each graph has a single surface that is to be predicted. - We repeat graphs and drop additional texture embeddings at random from the input. - - :param conf: Config manager used. - :param house: House represented as graphs. - :param include_target: Pass true to populate target embeddings of each node. - :param key: Key used to identify active texture embeddings. - :param drop_fraction_frequency_map: Schedule used for repeating graphs and random dropping (unobserving) of input texture embeddings. - :return: List of graphs. - """ - all_graphs = [] - for drop_fraction, frequency in drop_fraction_frequency_map.items(): - for i in range(frequency): - additional_exclusions = {} - # Generate additional exclusions - for room_index, room in house.rooms.items(): - assert isinstance(room, Room) - for surf in conf.surfaces: - if torch.rand(1).item() <= drop_fraction: - if key in room.surface_embeddings[surf]: - _add_exclusion(additional_exclusions, room_index, surf) - - graphs = generate_exclude_target_surface_graphs(conf, house, include_target=include_target, key=key, - additional_exclusions=additional_exclusions) - all_graphs.extend(graphs) - return all_graphs - - -def generate_exclude_target_surface_graphs(conf: ConfigManager, house: House, include_target: bool, key="prop", - additional_exclusions=None): - """ - Returns list of graphs from a house where in each graph, the target surface is dropped from the input. - Each graph has a single surface that is to be predicted. - :param conf: Config manager used. - :param house: House represented as graphs. - :param include_target: Pass true to populate target embeddings of each node. - :param key: Key used to identify active texture embeddings. - :param additional_exclusions: Dictionary indicating additional surfaces to unobserve from the input. - :return: List of graphs. - """ - if additional_exclusions is None: - additional_exclusions = {} - graphs = [] - for room_index, room in house.rooms.items(): - for surface in conf.surfaces: - if include_target: - # Skips surfaces we cannot calculate targets - if key not in room.surface_embeddings[surface]: - continue - - target_surface_map = {room_index: [surface]} - if room_index not in additional_exclusions: - additional_exclusions[room_index] = [] - if surface not in additional_exclusions[room_index]: - additional_exclusions[room_index].append(surface) - - node_embeddings_t, edge_indices_t, surface_embeddings_t = get_house_graph(conf=conf, house=house, - surface_maskout_map=additional_exclusions) - if include_target: - y_t, y_mask_t = generate_target_and_mask(conf=conf, house=house, target_surface_map=target_surface_map, - include_target=True) - graph = Data(x=node_embeddings_t, surfemb=surface_embeddings_t, - edge_index=edge_indices_t.t().contiguous(), y=y_t, y_mask=y_mask_t, - key=[house.house_key, room_index, surface]) - else: - _, y_mask_t = generate_target_and_mask(conf=conf, house=house, target_surface_map=target_surface_map, - include_target=False) - graph = Data(x=node_embeddings_t, surfemb=surface_embeddings_t, - edge_index=edge_indices_t.t().contiguous(), y_mask=y_mask_t, - key=[house.house_key, room_index, surface]) - - graphs.append(graph) - return graphs diff --git a/code/src/plan2scene/texture_prop/graph_util.py b/code/src/plan2scene/texture_prop/graph_util.py deleted file mode 100644 index 79ede85..0000000 --- a/code/src/plan2scene/texture_prop/graph_util.py +++ /dev/null @@ -1,129 +0,0 @@ -from plan2scene.config_manager import ConfigManager -from plan2scene.common.residence import House, Room -import torch - - -def get_house_graph(conf: ConfigManager, house: House, surface_maskout_map: dict, key="prop"): - """ - Generates node embeddings and edge pairs for a given house. - :param conf: ConfigManager - :param house: House to generate graph - :param surface_maskout_map: Dictionary of surfaces to be dropped from input. {room_index: [list of surfaces. e.g. 'floor', 'wall', 'ceiling']} - :return: Pair of node embeddings tensor and edge indices tensor - """ - combined_emb_dim = conf.texture_gen.combined_emb_dim - node_embeddings = [] - surface_embeddings = [] - for room_index, room in house.rooms.items(): - assert isinstance(room, Room) - # Room Type - node_embedding = [] - rt_embedding = torch.zeros(len(conf.room_types)) - for rt in room.types: - rt_embedding[conf.room_types.index(rt)] = 1.0 - node_embedding.append(rt_embedding.view(1, -1)) - - short_embeddings = [] - for surf in conf.surfaces: - if room_index in surface_maskout_map and surf in surface_maskout_map[room_index]: # Masked out - short_surf_embedding = torch.zeros((combined_emb_dim,)).view(1, -1) - surf_present = False - elif key not in room.surface_embeddings[surf]: # Unobserved - short_surf_embedding = torch.zeros((combined_emb_dim,)).view(1, -1) - surf_present = False - else: - short_surf_embedding = room.surface_embeddings[surf][key].detach() - surf_present = True - - surf_embedding = torch.cat([torch.tensor([[surf_present]], dtype=torch.float32), short_surf_embedding], - dim=1) - node_embedding.append(surf_embedding) - short_embeddings.append(short_surf_embedding) - del surf_embedding - del surf_present - del short_surf_embedding - - if conf.texture_prop.graph_generator.include_enable_in_target: - assert False - - surface_embeddings.append( - torch.cat(short_embeddings, dim=0).unsqueeze(0)) - node_embedding_tensor = torch.cat(node_embedding, dim=1) - node_embeddings.append(node_embedding_tensor) - - node_embeddings_tensor = torch.cat(node_embeddings, dim=0) - surface_embeddings_tensor = torch.cat(surface_embeddings, dim=0) - - edge_indices = [] - for r1_index, r2_index in house.door_connected_room_pairs: - if r2_index >= 0: - edge_indices.append([r1_index, r2_index]) - edge_indices_tensor = torch.tensor(edge_indices, dtype=torch.long) - - return node_embeddings_tensor, edge_indices_tensor, surface_embeddings_tensor - - -def generate_target_and_mask(conf: ConfigManager, house: House, target_surface_map: dict, include_target: bool, key="prop") -> tuple: - """ - Generates y and y_mask tensors for a given house, targetting surfaces that are indicated. - :param conf: Config Manager - :param house: House - :param target_surface_map: Dictionary of room surfaces to include in mask and target. {room_index: [list of surfaces. e.g. 'floor', 'wall', 'ceiling']} - :param include_target: Pass true to populate target embeddings of each node. - :return: Pair of target tensor [node_count, surface_count, emb] and masks tensor [node_count, surface_count]. - """ - combined_emb_dim = conf.texture_gen.combined_emb_dim - updated_combined_emb_dim = combined_emb_dim - if conf.texture_prop.graph_generator.include_enable_in_target: - updated_combined_emb_dim += 1 - - if include_target: - room_targets = [] - else: - room_targets = None - room_masks = [] - for room_index, room in house.rooms.items(): - if room_index not in target_surface_map: - # Unlisted room - if include_target: - room_target = torch.zeros([1, len(conf.surfaces), updated_combined_emb_dim], dtype=torch.float) - room_targets.append(room_target) - room_masks.append(torch.zeros([1, len(conf.surfaces)], dtype=torch.bool)) - continue - - if include_target: - room_target = [] # surface_count * [1, 1, combined_dim] - - room_mask = [] # surface_count - - for surf in conf.surfaces: - if room_index in target_surface_map and surf in target_surface_map[room_index]: - if include_target: - surf_target = room.surface_embeddings[surf][key].detach().unsqueeze(0) - surf_mask = True - else: - if include_target: - surf_target = torch.zeros([1, 1, combined_emb_dim], dtype=torch.float) - surf_mask = False - - if include_target: - if conf.texture_prop.graph_generator.include_enable_in_target: - surf_target = torch.cat([torch.tensor([[[surf_mask]]], dtype=torch.float32), surf_target], dim=2) - room_target.append(surf_target) - room_mask.append(surf_mask) - - - if include_target: - room_target_tensor = torch.cat(room_target, dim=1) - room_targets.append(room_target_tensor) - - room_mask_tensor = torch.tensor(room_mask, dtype=torch.bool).unsqueeze(0) - room_masks.append(room_mask_tensor) - - if include_target: - room_targets_tensor = torch.cat(room_targets, dim=0) - else: - room_targets_tensor = None - - room_masks_tensor = torch.cat(room_masks, dim=0) - return room_targets_tensor, room_masks_tensor \ No newline at end of file diff --git a/code/src/plan2scene/texture_prop/houses_dataset.py b/code/src/plan2scene/texture_prop/houses_dataset.py deleted file mode 100644 index d4d37a9..0000000 --- a/code/src/plan2scene/texture_prop/houses_dataset.py +++ /dev/null @@ -1,89 +0,0 @@ -from torch_geometric.data import Dataset, DataLoader, Data -import torch - -from plan2scene.common.house_parser import parse_houses, load_house_crops, load_house_texture_embeddings -from plan2scene.config_manager import ConfigManager -from plan2scene.texture_prop.graph_generators import HouseGraphGenerator, ExcludeTargetSurfaceHGG, InferenceHGG -from plan2scene.common.residence import House -import multiprocessing -import logging -import os.path as osp -import os - - -class HouseDataset(Dataset): - """ - Dataset used to train the texture propagation network. - """ - - def __init__(self, houses: dict, graph_generator: HouseGraphGenerator, epoch_counter: multiprocessing.Value = None): - """ - Initializes dataset. - :param houses: Dictionary of houses. - :param graph_generator: Graph generator used to genrate graphs from the houses. - :param epoch_counter: Counter on epochs shared among multiple dataloder threads. We use this to re-generate graphs at the end of an epoch. - """ - super(HouseDataset, self).__init__() - self.graph_generator = graph_generator - self.houses = houses - self.house_graphs = None - self.epoch_counter = epoch_counter - self.epoch = None - self._refresh() - - def _refresh(self) -> None: - """ - Re-generate the graph representations using houses. - """ - self.house_graphs = [] - for house_key, house in self.houses.items(): - self.house_graphs.extend(self.graph_generator(house)) - - def len(self) -> int: - """ - Returns length of the dataset. - :return: Dataset length. - """ - return len(self.house_graphs) - - def get(self, idx: int) -> Data: - """ - Return graph at index idx. - :param idx: Dataset item index. - :return: graph. - """ - if self.epoch_counter is not None and self.epoch_counter.value != self.epoch: - self.epoch = self.epoch_counter.value - self._refresh() - return self.house_graphs[idx] - - -if __name__ == "__main__": - ### Test code for house dataset. ### - import argparse - - conf = ConfigManager() - parser = argparse.ArgumentParser(description="Test houses dataset") - conf.add_args(parser) - - args = parser.parse_args() - conf.process_args(args) - - # Load houses - house_keys = conf.get_data_list("val") - houses = parse_houses(conf, house_keys, house_path_spec=conf.data_paths.arch_path_spec.format(split="val", - house_key="{house_key}"), - photoroom_csv_path_spec=conf.data_paths.photoroom_path_spec.format(split="val", - drop_fraction=conf.drop_fraction, - house_key="{house_key}")) - - for i, (house_key, house) in enumerate(houses.items()): - logging.info("[%d/%d] Loading %s" % (i, len(houses), house_key)) - load_house_crops(conf, house, - osp.join(conf.data_paths.texture_prop_val_data, "texture_crops", house_key)) - load_house_texture_embeddings(house, - osp.join(conf.data_paths.texture_prop_val_data, "surface_texture_embeddings", house_key)) - - dataset = HouseDataset(houses=houses, graph_generator=InferenceHGG(conf=conf, include_target=False)) - print("House Count: %d" % (len(houses))) - print("Graph Count: %d" % (len(dataset))) diff --git a/code/src/plan2scene/texture_prop/predictor.py b/code/src/plan2scene/texture_prop/predictor.py deleted file mode 100644 index a9591f4..0000000 --- a/code/src/plan2scene/texture_prop/predictor.py +++ /dev/null @@ -1,45 +0,0 @@ -from torch_geometric.data import Batch - -from config_parser import Config -from plan2scene.config_manager import ConfigManager -from plan2scene.texture_prop.utils import get_network -import torch -import logging - - -class TexturePropPredictor: - """ - Predicts texture embeddings for surfaces using the texture propagation network. - """ - - def __init__(self, conf: ConfigManager, system_conf: Config): - """ - Initialize. - :param conf: Config manager. - :param system_conf: Texture propagation network configuration. - """ - self.conf = conf - self.net = get_network(conf, system_conf.network_arch).to(system_conf.device) - - def load_checkpoint(self, checkpoint_path) -> None: - """ - Loads a checkpoint. - :param checkpoint_path: Path to checkpoint. - """ - ckpt = torch.load(checkpoint_path) - logging.info("Loaded: %s" % (checkpoint_path)) - logging.info(self.net.load_state_dict(ckpt["model_state_dict"])) - - def predict(self, batch: Batch, training: bool = False): - """ - Make predictions for a batch. - :param batch: Batch of graphs used as input. - :param training: Specify true to set the network to train mode. Otherwise, the network will be in eval mode. - :return: Node embedding predictions for the batch of input graphs. - """ - if training: - self.net.train() - else: - self.net.eval() - - return self.net(batch.to(self.conf.texture_prop.device)) diff --git a/code/src/plan2scene/texture_prop/tp_models/__init__.py b/code/src/plan2scene/texture_prop/tp_models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_prop/tp_models/simple_gated_gnn.py b/code/src/plan2scene/texture_prop/tp_models/simple_gated_gnn.py deleted file mode 100644 index b38d90e..0000000 --- a/code/src/plan2scene/texture_prop/tp_models/simple_gated_gnn.py +++ /dev/null @@ -1,84 +0,0 @@ -import torch -import torch.nn.functional as F -from torch import nn -from torch_geometric.data import Batch -from torch_geometric.nn import SAGEConv, GatedGraphConv -from plan2scene.config_manager import ConfigManager - - -def generate_extended_linear(count: int): - """ - Returns a helper method which generates a sequential network of linear layers. - :param count: Length of the chain - :return: Method that can generate a chain of linear layers. - """ - - def generate_linear(input_dim: int, body_dim: int, output_dim: int): - """ - Generates a sequential network of linear layers, having the specified input dim, hidden layer dim and output dim. - :param input_dim: Input dimensions of the chain - :param body_dim: Hidden layer dimensions of the chain - :param output_dim: Output dimensions of the chain - :return: Sequential network of linear layers. - """ - layers = [] - for i in range(count): - if i > 0: - layers.append(nn.ReLU()) - if i == 0: - in_dim = input_dim - else: - in_dim = body_dim - if i == count - 1: - out_dim = output_dim - else: - out_dim = body_dim - layers.append(nn.Linear(in_dim, out_dim)) - return nn.Sequential(*layers) - - return generate_linear - - -class SimpleGatedGNN(torch.nn.Module): - """ - Neural network used for texture propagation. - """ - - def __init__(self, conf: ConfigManager, gated_layer_count: int, linear_count: int = 1, linear_layer_multiplier: int = 1): - """ - Initialize network. - :param conf: Config manager - :param gated_layer_count: Number of layers of the gated graph convolution operator from https://arxiv.org/abs/1511.05493. - :param linear_count: Number of linear layers at the front and back of the GNN. - :param linear_layer_multiplier: Multiplier on width of linear layers. - """ - super(SimpleGatedGNN, self).__init__() - self.conf = conf - linear_layer = generate_extended_linear(linear_count) - - self.linear1 = linear_layer(conf.texture_prop.node_embedding_dim, - conf.texture_prop.node_embedding_dim * linear_layer_multiplier, - conf.texture_prop.node_embedding_dim * linear_layer_multiplier) - self.conv1 = GatedGraphConv(out_channels=conf.texture_prop.node_embedding_dim * linear_layer_multiplier, - num_layers=gated_layer_count) - - self.linear2 = linear_layer(conf.texture_prop.node_embedding_dim * linear_layer_multiplier, - conf.texture_prop.node_embedding_dim * linear_layer_multiplier, - conf.texture_prop.node_target_dim) - - def forward(self, data: Batch) -> torch.Tensor: - """ - Forward pass. Returns a tensor of embeddings. Each entry of the batch represent texture embeddings predicted for a room. - :param data: Batch of input data. - :return: tensor [batch_size, surface_count, embedding dim] - """ - bs, _ = data.x.shape - x, edge_index = data.x, data.edge_index - - x = self.linear1(x) - x = F.relu(x) - - x = self.conv1(x, edge_index) - x = F.relu(x) - x = self.linear2(x) - return x.view(bs, len(self.conf.surfaces), self.conf.texture_gen.combined_emb_dim) diff --git a/code/src/plan2scene/texture_prop/trainer/__init__.py b/code/src/plan2scene/texture_prop/trainer/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/plan2scene/texture_prop/trainer/abstract_trainer.py b/code/src/plan2scene/texture_prop/trainer/abstract_trainer.py deleted file mode 100644 index 2f1c534..0000000 --- a/code/src/plan2scene/texture_prop/trainer/abstract_trainer.py +++ /dev/null @@ -1,211 +0,0 @@ -from torch.utils.tensorboard import SummaryWriter - -from config_parser import Config -from plan2scene.common.trainer.epoch_summary import EpochSummary -from plan2scene.common.trainer.save_reason import SaveReason -from plan2scene.config_manager import ConfigManager -import abc -import logging -import os.path as osp -import os - - -class AbstractTrainer(abc.ABC): - """ - Abstract trainer for texture propagation network - """ - def __init__(self, conf: ConfigManager, system_conf: Config, output_path: str, summary_writer: SummaryWriter, deep_eval_interval: int, save_model_interval: int): - """ - Initialize trainer. - :param conf: Config Manager. - :param system_conf: Propagation network configuration. - :param output_path: Path to save training results. - :param summary_writer: Summary writer used for logging. - :param deep_eval_interval: Epoch interval between detail evaluations. - :param save_model_interval: Epoch interval between model checkpoint saves. - """ - self._conf = conf - self._system_conf = system_conf - self._output_path = output_path - self._summary_writer = summary_writer - self._save_model_interval = save_model_interval - self._deep_eval_interval = deep_eval_interval - - self._train_dataset = None - self._train_dataloader = None - self._val_dataset = None - self._val_dataloader = None - - self._net = None - self._crit = None - self._optim = None - self._max_epoch = None - self._metrics = None - self._epoch_stats = {} - - @property - def num_workers(self): - return self._conf.num_workers - - @abc.abstractmethod - def _setup_datasets(self): - pass - - def setup(self) -> None: - """ - Setup trainer for training. - """ - self.conf.setup_seed(self.system_conf.train.seed) - - self._setup_datasets() - logging.info("Train Data: %d" % (len(self.train_dataset))) - logging.info("Val Data: %d" % (len(self.val_dataset))) - - self._net = self._setup_network().to(self.device) - logging.info("Network: %s" % str(self.net)) - - self._crit = self._setup_crit() - logging.info("Criterion: %s" % str(self.crit)) - - self._optim = self._setup_optim() - logging.info("Optimizer: %s" % str(self.optim)) - - self._max_epoch = self.system_conf.train.max_epoch - - self._metrics = self._setup_metrics() - logging.info("Metrics: %s", str(self.metrics)) - - self._setup_extra() - - if not osp.exists(self.output_path): - os.mkdir(self.output_path) - - def train(self) -> None: - """ - Start training. - """ - for epoch in range(1, self.max_epoch + 1): - self.net.train() - train_stats = self._train_epoch(epoch) - - self.net.eval() - val_stats = self._eval_epoch(epoch) - - self.epoch_stats[epoch] = { - "epoch": epoch, - "train_stats": train_stats, - "val_stats": val_stats - } - - deep_eval_results = None - if epoch % self._deep_eval_interval == 0: - deep_eval_results = self._deep_eval_epoch(epoch) - - self._report(epoch, train_stats, val_stats, deep_eval_results) - - if epoch % self._save_model_interval == 0: - self._save_checkpoint(epoch, SaveReason.INTERVAL, train_stats, val_stats) - - @abc.abstractmethod - def _save_checkpoint(self, epoch: int, reason: SaveReason, train_stats, val_stats): - pass - - @abc.abstractmethod - def _deep_eval_epoch(self, epoch): - pass - - @abc.abstractmethod - def _report(self, epoch: int, train_stats: EpochSummary, val_stats: EpochSummary, deep_eval_results:list): - pass - - @abc.abstractmethod - def _setup_extra(self): - pass - - @property - def epoch_stats(self): - return self._epoch_stats - - @abc.abstractmethod - def _eval_epoch(self, epoch: int): - pass - - @abc.abstractmethod - def _train_epoch(self, epoch: int): - pass - - @property - def metrics(self): - return self._metrics - - @abc.abstractmethod - def _setup_metrics(self): - pass - - @property - def max_epoch(self): - return self._max_epoch - - @abc.abstractmethod - def _setup_optim(self): - pass - - @property - def optim(self): - return self._optim - - @property - def crit(self): - return self._crit - - @abc.abstractmethod - def _setup_network(self): - pass - - @abc.abstractmethod - def _setup_crit(self): - pass - - @property - def net(self): - return self._net - - @property - def train_dataset(self): - return self._train_dataset - - @property - def val_dataset(self): - return self._val_dataset - - @property - def train_dataloader(self): - return self._train_dataloader - - @property - def val_dataloader(self): - return self._val_dataloader - - @property - def conf(self): - return self._conf - - @property - def system_conf(self): - return self._system_conf - - @property - def output_path(self): - return self._output_path - - @property - def device(self) -> str: - """ - Device to train on (E.g. cuda, cpu) - :return: Device as string - """ - return self._system_conf.device - - @property - def summary_writer(self): - return self._summary_writer diff --git a/code/src/plan2scene/texture_prop/trainer/metric_description.py b/code/src/plan2scene/texture_prop/trainer/metric_description.py deleted file mode 100644 index 792feb0..0000000 --- a/code/src/plan2scene/texture_prop/trainer/metric_description.py +++ /dev/null @@ -1,65 +0,0 @@ -from plan2scene.evaluation.evaluator import EvalResult -from plan2scene.evaluation.matchers import AbstractMatcher - - -class MetricDescription: - """ - Describes a metric using its name and the evaluator. - """ - def __init__(self, name: str, evaluator: AbstractMatcher): - """ - Initialize metric description. - :param name: Metric name. - :param evaluator: Matcher used to evaluate the metric. - """ - self._name = name - self._evaluator = evaluator - - @property - def name(self) -> str: - """ - Return metric name. - :return: Metric name. - """ - return self._name - - @property - def evaluator(self) -> AbstractMatcher: - """ - Return metric evaluator. - :return: Metric evaluator. - """ - return self._evaluator - - def __repr__(self): - return self.name - - -class MetricResult: - """ - Contains evaluation results for a metric. Pairs a metric description with the evaluation result. - """ - def __init__(self, metric: MetricDescription, eval_result: EvalResult): - """ - Initialize metric result. - :param metric: Metric considered. - :param eval_result: Evaluation result reported by the metric. - """ - self._metric = metric - self._eval_result = eval_result - - @property - def metric(self) -> MetricDescription: - """ - Return metric description. - :return: Metric description. - """ - return self._metric - - @property - def eval_result(self) -> EvalResult: - """ - Return evaluation result. - :return: Evaluation result. - """ - return self._eval_result diff --git a/code/src/plan2scene/texture_prop/trainer/texture_prop_trainer.py b/code/src/plan2scene/texture_prop/trainer/texture_prop_trainer.py deleted file mode 100644 index 70827c9..0000000 --- a/code/src/plan2scene/texture_prop/trainer/texture_prop_trainer.py +++ /dev/null @@ -1,256 +0,0 @@ -import logging - -from torch_geometric.data import DataLoader -import os -from config_parser import Config -from plan2scene.common.house_parser import load_houses_with_embeddings, load_houses_with_textures, parse_houses -from plan2scene.common.image_description import ImageSource -from plan2scene.common.trainer.epoch_summary import EpochSummary -from plan2scene.common.trainer.save_reason import SaveReason -from plan2scene.crop_select.util import fill_textures -from plan2scene.evaluation.evaluator import evaluate -from plan2scene.evaluation.matchers import PairedMatcher, UnpairedMatcher -from plan2scene.evaluation.metric_impl.substance_classifier.classifier import SubstanceClassifier -from plan2scene.evaluation.metrics import FreqHistL1, HSLHistL1, ClassificationError, TileabilityMean -from plan2scene.texture_gen.predictor import TextureGenPredictor -from plan2scene.texture_gen.utils.io import load_conf_eval -from plan2scene.texture_prop.houses_dataset import HouseDataset -from plan2scene.texture_prop.trainer.abstract_trainer import AbstractTrainer -from plan2scene.texture_prop.trainer.metric_description import MetricDescription, MetricResult -from plan2scene.config_manager import ConfigManager -import multiprocessing -import os.path as osp -import torch - -from plan2scene.texture_prop.utils import get_graph_generator, get_network, get_crit, get_optim, update_embeddings - - -class TexturePropTrainer(AbstractTrainer): - """ - Trainer for the Texture Propagation stage. - """ - def __init__(self, *args, **kwargs): - """ - Initialize trainer. - """ - super().__init__(*args, **kwargs) - self._epoch_counter = multiprocessing.Value("i", 0) # Used to inform the dataloaders to refresh data. - self._combined_emb_dim = None - self._tg_predictor = None - - def _setup_datasets(self) -> None: - """ - Setup datasets and data loders. - """ - train_graph_generator = get_graph_generator(self.conf, self.system_conf.train_graph_generator, include_target=True) - val_graph_generator = get_graph_generator(self.conf, self.system_conf.val_graph_generator, - include_target=True) # Used for crude evaluation at every epoch - nt_graph_generator = get_graph_generator(self.conf, self.system_conf.val_graph_generator, - include_target=False) # Used for slow/proper evaluation at specified interval - - self._train_dataset = HouseDataset(load_houses_with_embeddings(self.conf, data_split="train", drop_fraction="0.0", - embeddings_path=osp.join(self.conf.data_paths.train_texture_prop_train_data, - "surface_texture_embeddings")), - graph_generator=train_graph_generator, epoch_counter=self._epoch_counter) - self._train_dataloader = DataLoader(self._train_dataset, batch_size=self.system_conf.train.bs, shuffle=self.system_conf.train.shuffle_trainset, - num_workers=self.num_workers) - - self._val_dataset = HouseDataset(load_houses_with_embeddings(self.conf, data_split="val", drop_fraction="0.0", - embeddings_path=osp.join(self.conf.data_paths.train_texture_prop_val_data, - "surface_texture_embeddings")), - graph_generator=val_graph_generator) - self._val_dataloader = DataLoader(self._val_dataset, batch_size=self.system_conf.train.bs) - - self._val_nt_dataset = HouseDataset(load_houses_with_embeddings(self.conf, data_split="val", drop_fraction="0.0", - embeddings_path=osp.join(self.conf.data_paths.train_texture_prop_val_data, - "surface_texture_embeddings")), - graph_generator=nt_graph_generator) - self._val_nt_dataloader = DataLoader(self._val_nt_dataset, batch_size=self.system_conf.train.bs) - - def _setup_extra(self) -> None: - """ - Setup additional items such as texture predictor and graph generator. - """ - self._tg_predictor = TextureGenPredictor(conf=load_conf_eval(config_path=self.conf.texture_gen.texture_synth_conf), - rgb_median_emb=self.conf.texture_gen.rgb_median_emb) - self._tg_predictor.load_checkpoint(checkpoint_path=self.conf.texture_gen.checkpoint_path) - self._combined_emb_dim = self.conf.texture_gen.combined_emb_dim - if self.system_conf.graph_generator.include_enable_in_target: - self._combined_emb_dim += 1 - - def _setup_metrics(self) -> list: - """ - Setup metrics used for deep evaluation purpose. - :return: List of metric descriptions - """ - return [ - MetricDescription("color", PairedMatcher(HSLHistL1())), - MetricDescription("subs", PairedMatcher(ClassificationError(SubstanceClassifier(classifier_conf=self.conf.metrics.substance_classifier)))), - MetricDescription("freq", PairedMatcher(FreqHistL1())), - MetricDescription("tile", UnpairedMatcher(TileabilityMean(metric_param=self.conf.metrics.tileability_mean_metric))), - ] - - def _setup_network(self): - """ - Setup network to be trained. - :return: Network to be trained. - """ - return get_network(conf=self.conf, network_arch=self.system_conf.network_arch) - - def _setup_crit(self): - """ - Setup the loss function. - :return: Loss function. - """ - return get_crit(self.conf, self.system_conf.train) - - def _setup_optim(self): - """ - Setup the optimizier. - :return: Optimizer. - """ - return get_optim(self.conf, self.system_conf.train, self.net.parameters()) - - def _train_epoch(self, epoch: int) -> EpochSummary: - """ - Train for an epoch. - :param epoch: Epoch index. - :return: Evaluation summary for the epoch on the train set. - """ - self._epoch_counter.value = epoch - # Eval summary setup - epoch_summary = EpochSummary(epoch_loss=0.0, epoch_entry_count=0, epoch_batch_count=0) - for i, batch in enumerate(self.train_dataloader): - self.optim.zero_grad() - - output = self.net(batch.to(self.device)) - mask_repeated = batch.y_mask.unsqueeze(-1).repeat([1, 1, self._combined_emb_dim]) - loss = self.crit(output[mask_repeated], batch.y[mask_repeated]) - - loss.backward() - self.optim.step() - - epoch_summary.epoch_loss += loss.item() - epoch_summary.epoch_entry_count += batch.x.shape[0] - epoch_summary.epoch_batch_count += 1 - - return epoch_summary - - def _eval_epoch(self, epoch: int) -> EpochSummary: - """ - Evaluate the current model on validation set. - :param epoch: Epoch index. - :return: Evaluation results - """ - epoch_summary = EpochSummary(epoch_loss=0.0, epoch_entry_count=0, epoch_batch_count=0) - - with torch.no_grad(): - for i, batch in enumerate(self.val_dataloader): - output = self.net(batch.to(self.device)) - mask_repeated = batch.y_mask.unsqueeze(-1).repeat([1, 1, self._combined_emb_dim]) - loss = self.crit(output[mask_repeated], batch.y[mask_repeated]) - epoch_summary.epoch_loss += loss.item() - epoch_summary.epoch_entry_count += batch.x.shape[0] - epoch_summary.epoch_batch_count += 1 - - return epoch_summary - - def _deep_eval_epoch(self, epoch) -> list: - """ - Slow/accurate evaluation by synthesizing final texture. - :param epoch: Epoch number. - :return: List of MetricResult items. - """ - # Load untextured houses - house_keys = self.conf.get_data_list("val") - pred_houses = parse_houses(self.conf, house_keys, house_path_spec=self.conf.data_paths.arch_path_spec.format(split="val", - house_key="{house_key}"), - photoroom_csv_path_spec=self.conf.data_paths.photoroom_path_spec.format(split="val", - drop_fraction="0.0", - house_key="{house_key}")) - - # Predict textures for houses - for i, batch in enumerate(self._val_nt_dataloader): - output = self.net(batch.to(self.device)) - update_embeddings(self.conf, pred_houses, batch, output) - - fill_textures(self.conf, pred_houses, log=False, predictor=self._tg_predictor, image_source=ImageSource.GNN_PROP, skip_existing_textures=False) - - # Load ground truth - gt_houses = load_houses_with_textures(self.conf, "val", "0.0", self.conf.data_paths.gt_reference_crops_val) - - # Evaluate - eval_results = [] - for metric in self.metrics: - assert isinstance(metric, MetricDescription) - # logging.info("Evaluating metric: %s" % str(metric.name)) - result = evaluate(self.conf, pred_houses=pred_houses, gt_houses=gt_houses, matcher=metric.evaluator, log=False) - eval_results.append(MetricResult(metric, result)) - return eval_results - - def _report(self, epoch: int, train_stats: EpochSummary, val_stats: EpochSummary, deep_eval_results: list) -> None: - """ - Write train progress to the log after completing an epoch. - :param epoch: Epoch index. - :param train_stats: Train set epoch evaluation summary. - :param val_stats: Validation set epoch evaluation summary. - :param deep_eval_results: Deep evaluation results if a deep evaluation was undertaken. - """ - # Log detail report if available - additional = "" - if deep_eval_results: - for deep_eval_result in deep_eval_results: - isinstance(deep_eval_result, MetricResult) - additional += "%s: %.7f [%.7f/%d]\t" % ( - str(deep_eval_result.metric), - deep_eval_result.eval_result.total_texture_loss / deep_eval_result.eval_result.surface_count, - deep_eval_result.eval_result.total_texture_loss, deep_eval_result.eval_result.surface_count - ) - self.summary_writer.add_scalar("epoch_val_" + str(deep_eval_result.metric), - deep_eval_result.eval_result.total_texture_loss / deep_eval_result.eval_result.surface_count, epoch) - - # Frequent log - logging.info("[Epoch %d]\t Train Loss: %.7f\t Val Loss: %.7f\t %s " % (epoch, - train_stats.epoch_loss / train_stats.epoch_batch_count, - val_stats.epoch_loss / val_stats.epoch_batch_count, - additional)) - self.summary_writer.add_scalar("epoch_train_loss", train_stats.epoch_loss / train_stats.epoch_batch_count, epoch) - self.summary_writer.add_scalar("epoch_val_loss", val_stats.epoch_loss / val_stats.epoch_batch_count, epoch) - - def _save_checkpoint(self, epoch: int, reason: SaveReason, train_stats: EpochSummary, val_stats: EpochSummary) -> None: - """ - Saves a model checkpoint. - :param epoch: Epoch index. - :param reason: Save reason. - :param train_stats: Train set epoch evaluation summary. - :param val_stats: Validation set epoch evaluation summary. - """ - save_path = None - if reason == SaveReason.BEST_MODEL: - # Save best model - logging.info("Saving Best Model") - save_path = osp.join(self.output_path, "best_models", - "best-tex-val-loss-%.5f-epoch-%d.ckpt" % ( - val_stats.epoch_loss / val_stats.epoch_batch_count, - epoch)) - - elif reason == SaveReason.INTERVAL: - # logging.info("Saving Checkpoint") - save_path = osp.join(self.output_path, "checkpoints", - "loss-%.5f-epoch-%d.ckpt" % ( - val_stats.epoch_loss / val_stats.epoch_batch_count, - epoch)) - else: - assert False - - if not osp.exists(osp.dirname(save_path)): - os.makedirs(osp.dirname(save_path)) - - payload = { - "model_state_dict": self.net.state_dict(), - "epoch": epoch, - "train_stats": train_stats, - "val_stats": val_stats, - "optimizer_state_dict": self.optim.state_dict() - } - torch.save(payload, save_path) diff --git a/code/src/plan2scene/texture_prop/utils.py b/code/src/plan2scene/texture_prop/utils.py deleted file mode 100644 index 1525d84..0000000 --- a/code/src/plan2scene/texture_prop/utils.py +++ /dev/null @@ -1,98 +0,0 @@ -from config_parser import Config -from torch import nn -from torch import optim -from plan2scene.common.residence import Room, House -from plan2scene.config_manager import ConfigManager - - -def get_optim(conf: ConfigManager, train_params: Config, network_params): - """ - Return optimizer used to train style prop - :param conf: Config Manager - :param train_params: Provide system_conf.train - :param network_params: Provide net.parameters() - :return: Optimizer - """ - if train_params.optimizer.type == "adam": - return optim.Adam(params=network_params, lr=train_params.lr, **(train_params.optimizer.params.__dict__)) - - -def get_crit(conf: ConfigManager, train_params: Config): - """ - Return criterion used for training - :param conf: Config Manager - :param train_params: Provide system_conf.train - :return: Criterion - """ - if train_params.loss == "mse": - return nn.MSELoss() - elif train_params.loss == "l1": - return nn.L1Loss() - assert False - - -def get_network(conf: ConfigManager, network_arch: Config) -> nn.Module: - """ - Create neural network module given the network configuration. - :param conf: Config manager. - :param network_arch: GNN configuration. - :return: Neural network module. - """ - import importlib - module = importlib.import_module(conf.texture_prop.network_arch.module) - cls = getattr(module, network_arch.class_name) - return cls(conf=conf, **network_arch.model_params.__dict__) - - -def get_graph_generator(conf: ConfigManager, graph_generator_def: Config, include_target: bool): - """ - Creates graph generator given the graph generator configuration. - :param conf: Config manager. - :param graph_generator_def: Graph generator configuration. - :param include_target: Pass true to populate target embeddings of each node. - :return: Graph generator - """ - import plan2scene.texture_prop.graph_generators as graph_generators - cls = getattr(graph_generators, graph_generator_def.class_name) - params = graph_generator_def.params - return cls(conf=conf, include_target=include_target, params=params) - - -def clear_predictions(conf: ConfigManager, houses: dict, key: str = "prop") -> None: - """ - Clear predictions assigned to houses. - :param conf: Config manager - :param houses: Map of houses - :param key: Prediction key - """ - for house_key, house in houses.items(): - assert isinstance(house, House) - for room_index, room in house.rooms.items(): - assert isinstance(room, Room) - for surface in conf.surfaces: - if key in room.surface_embeddings[surface]: - del room.surface_embeddings[surface][key] - if key in room.surface_textures[surface]: - del room.surface_textures[surface][key] - if key in room.surface_losses[surface]: - del room.surface_losses[surface][key] - - -def update_embeddings(conf: ConfigManager, houses, batch, predictions, key="prop", - keep_existing_predictions=False) -> None: - """ - Update texture embeddings of houses using predictions. - :param: conf: ConfigManager - :param: houses: Houses to update - :param: batch: Batch of data from DataLoader - :param: predictions: GNN predictions on the batch - :param: keep_existing_predictions: Do not replace predictions that already exist - """ - for room_i in range(predictions.shape[0]): - house_key, room_index, surface = batch.key[batch.batch[room_i]] - for surface_i in range(predictions.shape[1]): - if batch.y_mask[room_i, surface_i]: - room = houses[house_key].rooms[room_index] - assert isinstance(room, Room) - if (not keep_existing_predictions) or key not in room.surface_embeddings[surface]: - room.surface_embeddings[surface][key] = predictions[room_i, surface_i].cpu().unsqueeze(0) diff --git a/conf/plan2scene/metric.json b/conf/plan2scene/metric.json deleted file mode 100644 index 5e483d9..0000000 --- a/conf/plan2scene/metric.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "substance_classifier":{ - "conf_path": "./trained_models/substance_classifier/v2/conf/substance_classifier_conf.json", - "checkpoint_path": "./trained_models/substance_classifier/v2/checkpoints/correct_57_total_64_epoch_120.ckpt" - }, - "tileability_mean_metric":{ - "gaussian_std": 21, - "kernel_size": 128 - }, - "fid": { - "minimum_crop_count": 2048, - "batch_size": 32, - "dims": 2048, - "device": "cuda" - } -} \ No newline at end of file diff --git a/conf/plan2scene/seam_correct-example.json b/conf/plan2scene/seam_correct-example.json deleted file mode 100644 index 4b29487..0000000 --- a/conf/plan2scene/seam_correct-example.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "texture_synthesis_path": "Path/to/Embark/Studios/texture-synthesis/target/release/texture-synthesis", - "seam_mask_path":"Path/to/Embark/Studios/texture-synthesis/imgs/masks/1_tile.jpg" -} \ No newline at end of file diff --git a/conf/plan2scene/texture_gen-naivesynth.json b/conf/plan2scene/texture_gen-naivesynth.json deleted file mode 100644 index 9723e5f..0000000 --- a/conf/plan2scene/texture_gen-naivesynth.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "texture_synth_conf": "./conf/plan2scene/texture_synth_conf/naivesynth.yml", - "input_scale_up": 3, - "crops_per_mask": 10, - "checkpoint_path": "./trained_models/texture_synth-naivesynth/default/checkpoints/loss-6.22695-epoch-1100.ckpt", - "output_multiplier": 1, - "rgb_median_emb": true, - "combined_emb_dim": 8, - "masks_per_surface": { - "floor": 1, - "wall": 10, - "ceiling": 1 - }, - "multiprop_seeds": [12312,45415,65653,12324,76131,76353,79503, 55124,18249,34127, 54123,76317,635176,5314,90340,12316,75321,74138,51378,16351,538362,435174,2151347,123535, 929194,94929191] -} \ No newline at end of file diff --git a/conf/plan2scene/texture_gen.json b/conf/plan2scene/texture_gen.json deleted file mode 100644 index e7980c5..0000000 --- a/conf/plan2scene/texture_gen.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "texture_synth_conf": "./trained_models/texture_gen/cc0textures-v2/config.yml", - "input_scale_up": 3, - "crops_per_mask": 10, - "checkpoint_path": "./trained_models/texture_gen/cc0textures-v2/checkpoints/loss-7.67493-epoch-750.ckpt", - "output_multiplier": 1, - "rgb_median_emb": true, - "combined_emb_dim": 11, - "masks_per_surface": { - "floor": 1, - "wall": 10, - "ceiling": 1 - }, - "multiprop_seeds": [12312,45415,65653,12324,76131,76353,79503, 55124,18249,34127, 54123,76317,635176,5314,90340,12316,75321,74138,51378,16351,538362,435174,2151347,123535, 929194,94929191] -} \ No newline at end of file diff --git a/conf/plan2scene/texture_prop_conf/default.json b/conf/plan2scene/texture_prop_conf/default.json deleted file mode 100644 index 1eaa2c0..0000000 --- a/conf/plan2scene/texture_prop_conf/default.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "device": "cuda", - "network_arch":{ - "module": "plan2scene.texture_prop.tp_models.simple_gated_gnn", - "class_name": "SimpleGatedGNN", - "model_params":{ - "linear_count": 2, - "linear_layer_multiplier": 2, - "gated_layer_count": 3 - } - }, - "graph_generator": { - "include_enable_in_target": false - }, - "train_graph_generator": { - "class_name": "RandomDropExcludeTargetSurfaceHGG", - "params":{ - "drop_fraction_frequencies":[[0.0,3], [0.2,2], [0.4,1], [0.6,1], [0.8,0], [1.0, 0]] - } - }, - "val_graph_generator": { - "class_name": "ExcludeTargetSurfaceHGG", - "params":{ - } - }, - "train":{ - "bs": 32, - "max_epoch": 50000, - "loss": "l1", - "lr": 0.0005, - "shuffle_trainset": true, - "optimizer": { - "type":"adam", - "params":{ - "weight_decay": 0.0001 - } - }, - "seed": 53719 - } -} \ No newline at end of file diff --git a/conf/plan2scene/texture_synth_conf/default.yml b/conf/plan2scene/texture_synth_conf/default.yml deleted file mode 100644 index cc4aafb..0000000 --- a/conf/plan2scene/texture_synth_conf/default.yml +++ /dev/null @@ -1,61 +0,0 @@ -cache_dataset: false -device: cuda -num_workers: 8 -dim: 2 -noise: - octaves: 8 - -image: - image_res: &image_res 128 # (height, width) - scale_factor: 2 - hsv_decomp: true - rgb_decomp: false - hsv: false - -texture: - e: &texture_e 64 # encoding size - -dataset: - path: './data/input/stationary-textures-dataset' - substances: - - wood - - plastered - - smalltile - - carpet - -system: - arch: - model_texture_encoder: - model_params: - shape_in: [[3, *image_res, *image_res]] - bottleneck_size: 8 - model_texture_decoder: - model_params: - n_max_features: 128 - n_blocks: 4 - dropout_ratio: 0.0 - non_linearity: 'relu' - bias: True - encoding: *texture_e - model_substance_classifier: - model_params: - available: true - optimizer_params: - kind: 'adam' - lr: 0.0001 - weight_decay: 0.0001 - - loss_params: - style_loss: - kind: 'mse' - substance_loss: - kind: 'cross_entropy' - style_weight: 1.0 - substance_weight: 1.0 - -train: - epochs: 3000 - bs: 16 - accumulate_grad_batches: 1 - seed: 41127 - resample_count: 1 diff --git a/conf/plan2scene/texture_synth_conf/naivesynth.yml b/conf/plan2scene/texture_synth_conf/naivesynth.yml deleted file mode 100644 index 97544a0..0000000 --- a/conf/plan2scene/texture_synth_conf/naivesynth.yml +++ /dev/null @@ -1,56 +0,0 @@ -cache_dataset: false -device: cuda -num_workers: 8 -dim: 2 -noise: - octaves: 8 - -image: - image_res: &image_res 128 # (height, width) - scale_factor: 2 - hsv_decomp: false - rgb_decomp: false - hsv: false - -texture: - e: &texture_e 64 # encoding size - -dataset: - path: './data/input/stationary-textures-dataset' - substances: - - wood - - plastered - - smalltile - - carpet - -system: - arch: - model_texture_encoder: - model_params: - shape_in: [[3, *image_res, *image_res]] - bottleneck_size: 8 - model_texture_decoder: - model_params: - n_max_features: 128 - n_blocks: 4 - dropout_ratio: 0.0 - non_linearity: 'relu' - bias: True - encoding: *texture_e - model_substance_classifier: - model_params: - available: false - optimizer_params: - lr: 0.0001 - weight_decay: 0.0001 - - loss_params: - style_weight: 1.0 - substance_weight: 1.0 - -train: - epochs: 3000 - bs: 16 - accumulate_grad_batches: 1 - seed: 41127 - resample_count: 1 \ No newline at end of file diff --git a/conf/plan2scene/texture_synth_conf/v2.yml b/conf/plan2scene/texture_synth_conf/v2.yml deleted file mode 100644 index eff19e1..0000000 --- a/conf/plan2scene/texture_synth_conf/v2.yml +++ /dev/null @@ -1,62 +0,0 @@ -cache_dataset: false -device: cuda -num_workers: 8 -dim: 2 -noise: - octaves: 8 - -image: - image_res: &image_res 128 # (height, width) - scale_factor: 2 - hsv_decomp: true - rgb_decomp: false - hsv: false - -texture: - e: &texture_e 64 # encoding size - -dataset: - path: './data/input/stationary-textures-dataset-v2' - substances: - - wood - - plastered - - tile - - carpet - -system: - arch: - model_texture_encoder: - model_params: - shape_in: [[3, *image_res, *image_res]] - bottleneck_size: 8 - model_texture_decoder: - model_params: - n_max_features: 128 - n_blocks: 4 - dropout_ratio: 0.0 - non_linearity: 'relu' - bias: True - encoding: *texture_e - model_substance_classifier: - model_params: - available: true - - optimizer_params: - kind: 'adam' - lr: 0.0001 - weight_decay: 0.0001 - - loss_params: - style_loss: - kind: 'mse' - substance_loss: - kind: 'cross_entropy' - style_weight: 1.0 - substance_weight: 1.0 - -train: - epochs: 3000 - bs: 16 - accumulate_grad_batches: 1 - seed: 41127 - resample_count: 1 diff --git a/docs/css/index.css b/docs/css/index.css deleted file mode 100644 index a904e07..0000000 --- a/docs/css/index.css +++ /dev/null @@ -1,187 +0,0 @@ -.container { - width: 1200px; - margin: auto; - -} -div.header h1 { - text-align: center; - color: rgb(45, 51, 56); -} -div.header{ - border-bottom: lightgray solid 1px; -} - -div.header ul { - margin: auto; - width: 900px; - text-align: center; - padding-inline-start: 0; -} - -div.header span{ - text-align: center; - color: slategray; - margin: 5px; - display: block -} - - -div.header li{ - display: inline; - margin: 20px; -} - -a { - color: orange; - text-decoration: none; -} - -.intro-image img{ - width: 50%; - margin: auto; - display: block; -} - -.intro-image label{ - text-align: center; - display: block; -} - - -div.abstract{ - border-top: lightgray solid 1px; - display: block; - margin-top: 20px; -} -div.abstract p{ - text-align: justify; -} - -div.video{ - border-top: lightgray solid 1px; - display: block; - margin-top: 20px; -} - -div.video iframe{ - margin: auto; - display: block; -} - -div.results { - display: block; - margin-top: 20px; -} - -div.section h2{ - color:slategray; -} - -div.results-table { - overflow-x: auto; -} - -tr.double-border-bottom td{ - border-bottom: 3px double #ddd; -} - -tr.border-bottom td{ - border-bottom: 1px solid #ddd; -} - -th.border-bottom{ - border-bottom: 1px solid #ddd; -} - -tr.border-bottom th{ - border-bottom: 1px solid #ddd; -} - -th.border-right { - border-right: 1px solid #ddd; -} - -td.border-right { - border-right: 1px solid #ddd; -} - -div.results table { - border: 1px solid #ddd; - border-collapse: collapse; - width: 100%; -} -div.results table, td, th { - text-align: left; -} - -div.results th { - text-align: center; - /* border-bottom: 1px solid #ddd; */ - /* border-collapse: collapse; */ -} - -div.results th, td { - padding: 8px; -} -div.results td { - text-align: right; -} -div.results tr { - height:50px; -} - -tr.table-header { - background-color: aliceblue; -} - -div.link-bar{ - /* border-top: lightgray solid 1px; */ - display: block; - margin-top: 20px; - text-align: center; -} - - -table.data-table { - width: 100%; - border: 1px solid #ddd; - border-collapse: collapse; -} -table.data-table td { - width:33%; - /* background-color: aliceblue; */ - border: 1px solid #ddd; - text-align: center; - vertical-align: top; - padding: 15 px; -} -img.stationary-textures-dataset { - height: 150px; - margin:5px; -} -img.smt-textures-dataset { - height: 170px; - margin:5px; -} -img.rent-3d-dataset { - height: 180px; - margin:5px; -} -img.stationary-textures-dataset { - height: 150px; - margin:5px; -} -table.data-table h3 { - color: slategray; -} - -.quote { - margin: 0; - background: #eee; - padding: 10px; - border-radius: 10px; - } - .quote figcaption, - .quote blockquote { - margin: 10px; - } diff --git a/docs/img/intro.png b/docs/img/intro.png deleted file mode 100644 index 01147bb..0000000 Binary files a/docs/img/intro.png and /dev/null differ diff --git a/docs/img/rent3dpp.png b/docs/img/rent3dpp.png deleted file mode 100644 index b90c1a1..0000000 Binary files a/docs/img/rent3dpp.png and /dev/null differ diff --git a/docs/img/samples/r2v_sample_with_objects.png b/docs/img/samples/r2v_sample_with_objects.png deleted file mode 100644 index 78e4b73..0000000 Binary files a/docs/img/samples/r2v_sample_with_objects.png and /dev/null differ diff --git a/docs/img/samples/sample1-1.png b/docs/img/samples/sample1-1.png deleted file mode 100644 index 4c55d90..0000000 Binary files a/docs/img/samples/sample1-1.png and /dev/null differ diff --git a/docs/img/samples/sample1-2.png b/docs/img/samples/sample1-2.png deleted file mode 100644 index fab4d84..0000000 Binary files a/docs/img/samples/sample1-2.png and /dev/null differ diff --git a/docs/img/smt-textures.png b/docs/img/smt-textures.png deleted file mode 100644 index b439b57..0000000 Binary files a/docs/img/smt-textures.png and /dev/null differ diff --git a/docs/img/stationary-textures-v2.png b/docs/img/stationary-textures-v2.png deleted file mode 100644 index af15268..0000000 Binary files a/docs/img/stationary-textures-v2.png and /dev/null differ diff --git a/docs/img/task-overview.png b/docs/img/task-overview.png deleted file mode 100644 index d1a334a..0000000 Binary files a/docs/img/task-overview.png and /dev/null differ diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 16c8b91..0000000 --- a/docs/index.html +++ /dev/null @@ -1,299 +0,0 @@ - - - Plan2Scene - - - -
- - -
- - - -
- -
-

Abstract

-

- We address the task of converting a floorplan and a set of associated photos of a residence into a textured 3D mesh model, - a task which we call Plan2Scene. Our system 1) lifts a floorplan image to a 3D mesh model; 2) synthesizes surface textures based on the input photos; - and 3) infers textures for unobserved surfaces using a graph neural network architecture. - To train and evaluate our system we create indoor surface texture datasets, and augment a dataset of floorplans and photos from prior work with rectified surface crops and additional annotations. - Our approach handles the challenge of producing tileable textures for dominant surfaces such as floors, walls, and ceilings from a sparse set of unaligned photos that only partially cover the residence. - Qualitative and quantitative evaluations show that our system produces realistic 3D interior models, outperforming baseline approaches on a suite of texture quality metrics and as measured by a holistic user study. -

- -
- -
-

Summary Video

- -
- - -
-

Qualitative Results

- - - - -
- -
-

Quantitative Results

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Observed SurfacesUnobserved SurfacesAll Surfaces
ColorFreqSubs
CVPR
Version
Subs
Version
2*
FIDTileColorFreqSubs
CVPR
Version
Subs
Version
2*
FIDTileColorFreqSubs
CVPR
Version
Subs
Version
2*
FIDTile
Crop0000038.10.7680.0260.3450.51057.240.60.4590.0160.2080.27735.639.5
Retrieve0.5610.0540.4730.684238.217.30.7510.0400.4370.621261.519.10.6800.0460.4580.650243.218.3
Retrieve
Version 2**
0.4980.0380.4710.684221.417.30.7510.0340.5150.602257.313.30.6570.0370.4710.630232.314.1
NaiveSynth0.6940.0460.3850.752239.321.70.7140.0440.4270.738245.419.80.7090.0460.4040.804239.420.6
Synth (ours)
CVPR Version
0.4310.0350.3500.463196.116.40.6530.0320.3930.490199.418.60.5910.0340.3920.485196.217.6
Synth (ours)
Version 2**
0.3860.0270.3820.480158.811.00.7140.0280.4130.461178.912.80.5790.0280.3800.480166.912.4
-
- *Subs metric version 2 is trained on the stationary textures dataset version 2 and the open-surfaces dataset.
- **Uses stationary textures dataset version 2. -
-
- -
-

Code and pretrained models

-

Our source code is available on GitHub. Pretrained models are available here.

-
- -
-

Data

- - - - - - -
-

Rent3D++ Dataset

- -
- [Download Dataset] -

We train and evaluate Plan2Scene on the Rent3D++ dataset.

- -
-

Stationary Textures Dataset

- -
- [Version 1] - [Version 2] -

We train our texture synthesis approach on this dataet. The first version of the dataset is used in our CVPR paper. The second version of the dataset provide improved results on Rent3D houses.

- -
-

Substance Mapped Textures Dataset

- -

We used this dataset for the retrieve baseline.

-
-
- -
-

Relevant Publication

-

If you find our work useful, please cite our paper below.

-
-
-
- Plain Text -
- Madhawa Vidanapathirana, Qirui Wu, Yasutaka Furukawa, Angel X. Chang, and Manolis Savva. Plan2scene: Converting Floorplans to 3D Scenes. In IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), June 2021. -
-
- BIBTEX -
- @inproceedings{Vidanapathirana2021Plan2Scene,
-    author = {Vidanapathirana, Madhawa and Wu, Qirui and Furukawa, Yasutaka and Chang, Angel X. and Savva, Manolis},
-    title = {Plan2Scene: Converting Floorplans to 3D Scenes},
-    booktitle={IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
-    month = {June},
-    year = {2021},
-    pages = {10733-10742}
- }
-
-
-
-
- -
-
- - - - diff --git a/docs/md/baselines.md b/docs/md/baselines.md deleted file mode 100644 index 0063609..0000000 --- a/docs/md/baselines.md +++ /dev/null @@ -1,98 +0,0 @@ -# Baseline Methods -## Direct Crop Baseline -This baseline uses rectified crops extracted from photos as textures. -1) Evaluate observed surfaces - ```bash - # Make predictions for observed surfaces - python code/scripts/plan2scene/baseline/direct_crop_predict_observed.py ./data/processed/baselines/direct_crop/observed/test/drop_0.0 test --drop 0.0 - - # Evaluate observed surfaces - python code/scripts/plan2scene/test.py ./data/processed/baselines/direct_crop/observed/test/drop_0.0/texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -2) Evaluate all surfaces at 60% simulated photo unobservations. - ```bash - # Make predictions for observed surfaces by simulating 60% photo unobservations. - python code/scripts/plan2scene/baseline/direct_crop_predict_observed.py ./data/processed/baselines/direct_crop/observed/test/drop_0.6 test --drop 0.6 - - # Make predictions for unobserved surfaces. - python code/scripts/plan2scene/baseline/direct_crop_predict_unobserved.py ./data/processed/baselines/direct_crop/all_surfaces/test/drop_0.6 ./data/processed/baselines/direct_crop/observed/test/drop_0.6/texture_crops test --drop 0.6 - - # Evaluate all surfaces - python code/scripts/plan2scene/test.py ./data/processed/baselines/direct_crop/all_surfaces/test/drop_0.6/texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -3) Evaluate unobserved surfaces at 60% simulated photo unobservations. - ```bash - # We assume predictions for all surfaces are available. - python code/scripts/plan2scene/test.py ./data/processed/baselines/direct_crop/all_surfaces/test/drop_0.6/texture_crops ./data/processed/gt_reference/test/texture_crops test --exclude-prior-predictions ./data/processed/baselines/direct_crop/observed/test/drop_0.6/texture_crops - ``` - -## Retrieve Baseline -This baseline assigns textures from the substance mapped textures (SMT) dataset. -1) Evaluate on observed surfaces. - ```bash - # Make predictions for observed surfaces - python ./code/scripts/plan2scene/baseline/retrieve_predict_observed.py ./data/processed/baselines/retrieve/observed/test/drop_0.0 test --drop 0.0 [PATH_TO_SMT_DATASET] - - # Evaluate observed surfaces - python code/scripts/plan2scene/test.py ./data/processed/baselines/retrieve/observed/test/drop_0.0/texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -2) Evaluate all surfaces at 60% simulated photo unobservations. - ```bash - # Make predictions for observed surfaces - python ./code/scripts/plan2scene/baseline/retrieve_predict_observed.py ./data/processed/baselines/retrieve/observed/test/drop_0.6 test --drop 0.6 [PATH_TO_SMT_DATASET] - - # Make predictions for unobserved surfaces - python code/scripts/plan2scene/baseline/retrieve_predict_unobserved.py ./data/processed/baselines/retrieve/all_surfaces/test/drop_0.6 ./data/processed/baselines/retrieve/observed/test/drop_0.6/texture_crops test --drop 0.6 [PATH_TO_SMT_DATASET] - - # Evaluate all surfaces - python code/scripts/plan2scene/test.py ./data/processed/baselines/retrieve/all_surfaces/test/drop_0.6/texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -3) Evaluate unobserved surfaces at 60% simulated photo unobservations. - ```bash - # We assume predictions for all surfaces are available. - python code/scripts/plan2scene/test.py ./data/processed/baselines/retrieve/all_surfaces/test/drop_0.6/texture_crops ./data/processed/gt_reference/test/texture_crops test --exclude-prior-predictions ./data/processed/baselines/retrieve/observed/test/drop_0.6/texture_crops - ``` - -## NaiveSynth Baseline -This baseline naively applies the unmodified neural texture synthesis approach by Henzler et al. - -To use this baseline, you must first train the texture synthesis stage using the unmodified neural texture synthesis approach. -Follow the instructions on [training the texture synthesis stage](./train_texture_synth.md) and use [naive_synth.yml](../../conf/plan2scene/texture_synth_conf/naive_synth.yml) config file instead of the `./texture_synth_conf/default.yml` file. -We suggest specifying `./trained_models/texture_synth-naivesynth/default` as the output path of train script. -Also, instead of updating the 'texture_synth_conf' and 'checkpoint_path' fields of `./conf/plan2scene/texture_gen.json` file, update the `./conf/plan2scene/texture_gen-naivesynth.json` file. - -1) Evaluate on observed surfaces. - ```bash - # Make predictions for observed surfaces using the mean embedding. - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/baselines/naivesynth/texture_gen/test/drop_0.0 test --drop 0.0 --texture-gen ./conf/plan2scene/texture_gen-naivesynth.json --data-paths ./conf/plan2scene/data_paths-naivesynth.json - python code/scripts/plan2scene/baseline/naivesynth_predict_observed.py ./data/processed/baselines/naivesynth/observed/test/drop_0.0 ./data/processed/baselines/naivesynth/texture_gen/test/drop_0.0 test --drop 0.0 --texture-gen ./conf/plan2scene/texture_gen-naivesynth.json --data-paths ./conf/plan2scene/data_paths-naivesynth.json - - # Seam correct - python code/scripts/plan2scene/postprocessing/seam_correct_textures.py ./data/processed/baselines/naivesynth/observed/test/drop_0.0/tileable_texture_crops ./data/processed/baselines/naivesynth/observed/test/drop_0.0/texture_crops test --drop 0.0 - - # Evaluate observed surfaces. - python code/scripts/plan2scene/test.py ./data/processed/baselines/naivesynth/observed/test/drop_0.0/tileable_texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -2) Evaluate all surfaces at 60% simulated photo unobservations. - ```bash - # Make predictions for observed surfaces using the mean embedding. - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/baselines/naivesynth/texture_gen/test/drop_0.6 test --drop 0.6 --texture-gen ./conf/plan2scene/texture_gen-naivesynth.json --data-paths ./conf/plan2scene/data_paths-naivesynth.json - python code/scripts/plan2scene/baseline/naivesynth_predict_observed.py ./data/processed/baselines/naivesynth/observed/test/drop_0.6 ./data/processed/baselines/naivesynth/texture_gen/test/drop_0.6 test --drop 0.6 --texture-gen ./conf/plan2scene/texture_gen-naivesynth.json --data-paths ./conf/plan2scene/data_paths-naivesynth.json - - # Compute embeddings for the train set houses. We use these to compute RS condition mean embeddings. - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/baselines/naivesynth/texture_gen/train/drop_0.0 train --drop 0.0 --texture-gen ./conf/plan2scene/texture_gen-naivesynth.json --data-paths ./conf/plan2scene/data_paths-naivesynth.json - - # Make predictions for unobserved surfaces using room type and surface type conditioned mean embeddings - python code/scripts/plan2scene/baseline/naivesynth_predict_unobserved.py ./data/processed/baselines/naivesynth/all_surfaces/test/drop_0.6 ./data/processed/baselines/naivesynth/observed/test/drop_0.6 test ./data/processed/baselines/naivesynth/texture_gen/train/drop_0.0/surface_texture_embeddings --drop 0.6 --texture-gen ./conf/plan2scene/texture_gen-naivesynth.json --data-paths ./conf/plan2scene/data_paths-naivesynth.json - - # Seam correct - python code/scripts/plan2scene/postprocessing/seam_correct_textures.py ./data/processed/baselines/naivesynth/all_surfaces/test/drop_0.6/tileable_texture_crops ./data/processed/baselines/naivesynth/all_surfaces/test/drop_0.6/texture_crops test --drop 0.6 - - # Evaluate all surfaces - python code/scripts/plan2scene/test.py ./data/processed/baselines/naivesynth/all_surfaces/test/drop_0.6/tileable_texture_crops ./data/processed/gt_reference/test/texture_crops test - ``` -3) Evaluate unobserved surfaces at 60% simulated photo unobservations. - ```bash - # We assume predictions for all surfaces are available. - python code/scripts/plan2scene/test.py ./data/processed/baselines/naivesynth/all_surfaces/test/drop_0.6/texture_crops ./data/processed/gt_reference/test/texture_crops test --exclude-prior-predictions ./data/processed/baselines/naivesynth/observed/test/drop_0.6/texture_crops - ``` \ No newline at end of file diff --git a/docs/md/compute_fid_metric.md b/docs/md/compute_fid_metric.md deleted file mode 100644 index 2678a27..0000000 --- a/docs/md/compute_fid_metric.md +++ /dev/null @@ -1,54 +0,0 @@ -# FID Metric -Since the FID metric doesn't require pair-wise correspondances, we do not simulate photo unobservations to compute it. - -## Proper FID Computation -FID computation requires at-least 2048 images per ground truth and predictions. -We don't meet this requirement for surfaces of rare room types. -Therefore, we make multiple texture predictions per surface using different random seeds for texture synthesis. - -Note that this script will take a few hours to complete. - -```bash -# Compute predictions for observed surfaces. -python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 -python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/test/drop_0.0 ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 - -# Compute GNN predictions for unobserved surfaces -python code/scripts/plan2scene/texture_prop/gnn_texture_prop.py ./data/processed/gnn_prop/test/drop_0.0 ./data/processed/vgg_crop_select/test/drop_0.0 test [GNN_TRAIN_PATH]/conf/texture_prop.json [CHECKPOINT_PATH] --keep-existing-predictions --drop 0.0 - -# We generate 24 texture predictions per each surface so as to meet the 2048 predictions per surface requirement of FID. -# The 24 predictions are generated by using different random seeds for the texture synthesis. -# This script handles seam correction internally. -python code/scripts/plan2scene/postprocessing/multiprop.py ./data/processed/gnn_prop/test/drop_0.0/tileable_multiprop_texture_crops ./data/processed/gnn_prop/test/drop_0.0/surface_texture_embeddings test 24 --drop 0.0 - -# Compute FID -python code/scripts/plan2scene/compute_fid.py ./data/processed/gnn_prop/test/drop_0.0/fid_results ./data/processed/gnn_prop/test/drop_0.0/tileable_multiprop_texture_crops ./data/processed/texture_gen/test/drop_0.0/texture_crops test --all-cases --prior-predictions ./data/processed/vgg_crop_select/test/drop_0.0/texture_crops --multiprop 24 - -# The results are saved at: -# ./data/processed/gnn_prop/test/drop_0.0/fid_results/all_surfaces/fid_results.json. -# ./data/processed/gnn_prop/test/drop_0.0/fid_results/observed_surfaces/fid_results.json. -# ./data/processed/gnn_prop/test/drop_0.0/fid_results/unobserved_surfaces/fid_results.json. -``` - -## Fast/inaccurate FID computation -Here, we ommit the requirement of needing at-least 2048 images. So, the FID results may be inaccurate. -Use this approach for sanity checks only. -```bash -# Compute predictions for observed surfaces. -python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 -python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/test/drop_0.0 ./data/processed/texture_gen/test/drop_0.0 test --drop 0.0 - -# Compute GNN predictions for unobserved surfaces -python code/scripts/plan2scene/texture_prop/gnn_texture_prop.py ./data/processed/gnn_prop/test/drop_0.0 ./data/processed/vgg_crop_select/test/drop_0.0 test [GNN_TRAIN_PATH]/conf/texture_prop.json [CHECKPOINT_PATH] --keep-existing-predictions --drop 0.0 - -# Correct seams of texture crops and make them tileable by running seam_correct_textures.py -python code/scripts/plan2scene/postprocessing/seam_correct_textures.py ./data/processed/gnn_prop/test/drop_0.0/tileable_texture_crops ./data/processed/gnn_prop/test/drop_0.0/texture_crops test --drop 0.0 - -# Compute FID -python code/scripts/plan2scene/compute_fid.py ./data/processed/gnn_prop/test/drop_0.0/fast_fid_results ./data/processed/gnn_prop/test/drop_0.0/tileable_texture_crops ./data/processed/texture_gen/test/drop_0.0/texture_crops test --all-cases --prior-predictions ./data/processed/vgg_crop_select/test/drop_0.0/texture_crops - -# The results are saved at: -# ./data/processed/gnn_prop/test/drop_0.0/fast_fid_results/all_surfaces/fid_results.json. -# ./data/processed/gnn_prop/test/drop_0.0/fast_fid_results/observed_surfaces/fid_results.json. -# ./data/processed/gnn_prop/test/drop_0.0/fast_fid_results/unobserved_surfaces/fid_results.json. -``` \ No newline at end of file diff --git a/docs/md/conda_env_setup.md b/docs/md/conda_env_setup.md deleted file mode 100644 index 20ad927..0000000 --- a/docs/md/conda_env_setup.md +++ /dev/null @@ -1,47 +0,0 @@ -# Conda Environment Setup -We use a conda environment initialized as below. -- For CUDA 11.1 - - ```bash - # Python 3.6 and PyTorch 1.8 - conda create -n plan2scene python=3.6 -y - conda activate plan2scene - conda install pytorch==1.8.0 torchvision==0.9.0 cudatoolkit=11.1 -c pytorch -c conda-forge -y - pip install -r code/requirements.txt - - # Install the cuda_noise package, which we have copied from the neural texture project: https://github.com/henzler/neuraltexture. - cd code/src/plan2scene/texture_gen/custom_ops/noise_kernel - python setup.py install - cd ../../../../../../ - - # Install PyTorch Geometric - # Refer https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html for details. - export CUDA=cu111 - export TORCH=1.8.0 - pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html --no-cache - pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html --no-cache - pip install torch-geometric --no-cache - ``` - -- For CUDA 10.2 - ```bash - # Python 3.6 and PyTorch 1.8 - conda create -n plan2scene python=3.6 -y - conda activate plan2scene - conda install pytorch==1.8.0 torchvision==0.9.0 cudatoolkit=10.2 -c pytorch -y - pip install -r code/requirements.txt - - # Install the cuda_noise package, which we have copied from the neural texture project: https://github.com/henzler/neuraltexture. - cd code/src/plan2scene/texture_gen/custom_ops/noise_kernel - python setup.py install - cd ../../../../../../ - - # Install PyTorch Geometric - - # Refer https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html for - export CUDA=cu102 details. - export TORCH=1.8.0 - pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html --no-cache - pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html --no-cache - pip install torch-geometric --no-cache - ``` diff --git a/docs/md/extract_crops.md b/docs/md/extract_crops.md deleted file mode 100644 index b6d03b1..0000000 --- a/docs/md/extract_crops.md +++ /dev/null @@ -1,13 +0,0 @@ -# [Optional] Surface Crop Extraction -If you wish to extract new crops instead of the provided crops, follow the steps below. - 1) Extract rectified surface masks from photos using [the surface mask extractor project](https://github.com/3dlg-hcvc/plan2scene-mask-extraction). - Note that this project uses a different Python environment, due to dependencies with prior work. - - 2) Extract rectified surface crops from rectified surface masks by running [extract_surface_crops.py](https://github.com/3dlg-hcvc/plan2scene/blob/main/code/scripts/plan2scene/preprocessing/extract_surface_crops.py). - ```bash - python code/scripts/plan2scene/preprocessing/extract_surface_crops.py ./data/processed/rectified_crops/floor [MASK EXTRACTOR PATH]/data/output/floor/ - - python code/scripts/plan2scene/preprocessing/extract_surface_crops.py ./data/processed/rectified_crops/wall [MASK EXTRACTOR PATH]/data/output/wall/ - - python code/scripts/plan2scene/preprocessing/extract_surface_crops.py ./data/processed/rectified_crops/ceiling [MASK EXTRACTOR PATH]/data/output/ceiling/ - ``` diff --git a/docs/md/place_cad_models.md b/docs/md/place_cad_models.md deleted file mode 100644 index 92d2a87..0000000 --- a/docs/md/place_cad_models.md +++ /dev/null @@ -1,14 +0,0 @@ -# [OPTIONAL] Populate houses with CAD models of objects -We have provided scenes pre-populated with CAD models of objects. -These pre-populated scenes are available at the full_archs directory of the Rent 3D++ dataset. -You can use the smart scenes toolkit to preview these scenes. -However, if you wish to re-run this object placement step, use the commands below. - -```bash -# Delete/move the full_archs directory. The following commands recreate it. -# Place CAD models for doors and windows -python code/scripts/plan2scene/place_hole_cad_models.py ./data/processed/archs_with_hole_models/test ./data/input/archs_no_objects/test - -# Place CAD models for objects using the object AABBs provided by the floorplan vectorization approach. -python code/scripts/plan2scene/place_object_cad_models.py ./data/processed/full_archs/test ./data/processed/archs_with_hole_models/test ./data/input/object_aabbs/test/ -``` diff --git a/docs/md/plan2scene_on_r2v.md b/docs/md/plan2scene_on_r2v.md deleted file mode 100644 index a66fc19..0000000 --- a/docs/md/plan2scene_on_r2v.md +++ /dev/null @@ -1,38 +0,0 @@ -## Using Plan2Scene with Raster-to-Vector output -If you have a scanned image of a floorplan, you can use [raster-to-vector](https://github.com/art-programmer/FloorplanTransformation) to convert it to a vector format. Then, follow the steps below to create textured 3D mesh of the house. - -If you have a floorplan vector in another format, you can convert it to the raster-to-vector __annotation format__. -Then, follow the same steps below to create a textured 3D mesh of a house. -The R2V annotation format is explained with examples in the [data section of the raster-to-vector repository](https://github.com/art-programmer/FloorplanTransformation#data). - -1) Convert the R2V output / R2V annotation to the scene.json format using the [R2V-to-Plan2Scene tool](https://github.com/3dlg-hcvc/r2v-to-plan2scene). - -2) [Optional] To place CAD models for doors, windows and fixed objects, use the scripts [place_hole_cad_models.py](https://github.com/3dlg-hcvc/plan2scene/blob/main/code/scripts/plan2scene/place_hole_cad_models.py) and [place_object_cad_models.py](https://github.com/3dlg-hcvc/plan2scene/blob/main/code/scripts/plan2scene/place_object_cad_models.py). - ```bash - # Example - cd [Plan2Scene Path] - python code/scripts/plan2scene/place_hole_cad_models.py ../custom_data/hole_filled [R2V-to-Plan2Scene Output Directory] - python code/scripts/plan2scene/place_object_cad_models.py ./custom_data/object_added ./custom_data/hole_filled [R2V-to-Plan2Scene Output Directory] - ``` - You can preview the './custom_data/object_added/*.scene.json' file using [SmartScenesToolkit](https://github.com/smartscenes/sstk). - - - -3) To generate textures for architectural surfaces using Plan2Scene, you should do a few more steps. - - Update the `rooms` section of the scene.json file so the room type labels are compatible with the labels used by Plan2Scene networks. Plan2Scene pre-trained networks we provide uses [these room type labels](../../conf/plan2scene/labels/room_types.json). - - Obtain rectified crops from the photos of the house. Refer to [instructions here](./extract_crops.md). - - Write a photoroom.csv file indicating assignment of photos to rooms. The format of photoroom.csv file is [described here](./rent3dpp_data_organization.md#photo_assignments). Please refer to Rent3D++ dataset for example files. -4) Now, you can use Plan2Scene texture generation and texture propagation stages to apply textures to all architectural surfaces of the scene.json file. - You can either use our colab notebook, or clone the project locally. - - __Predicting textures using Google Colab__ - - Use [this colab notebook](https://colab.research.google.com/drive/1lDkbfIV0drR1o9D0WYzoWeRskB91nXHq?usp=sharing) we provide to obtain a textured *.scene.json file using Plan2Scene. Upload the *.scene.json file, *.photoroom.csv file and rectified surface crops when prompted. - - __Predicting textures using a local copy of the code__ - - Clone the [Plan2Scene code repository](https://github.com/3dlg-hcvc/plan2scene) and install dependencies. - - Setup a pre-trained model for 'Texture Synthesis' and 'Texture Propagation' as [described here](pretrained_models.md). - - Use [predict_textures.py](../../code/scripts/plan2scene/predict_textures.py) to predict textures - ```bash - python code/scripts/predict_textures.py [OUTPUT_DIRECTORY_PATH] [SCENE_JSON_PATH] [PHOTOROOM_CSV_PATH] [RECTIFIED_CROPS_PATH] [GNN_PROP_CONF_PATH] [GNN_PROP_CHECKPOINT_PATH] - ``` - - RECTIFIED_CROPS_PATH: A directory containing 3 sub-directories 'floor', 'wall' and 'ceiling' each containing rectified crops extracted from the photos. - - The final textured scene.json file is stored at '[OUTPUT_DIRECTORY_PATH]/textured_arch' directory. -5) The textured scene.json file can be previewed using the [SmartScenesToolkit](https://github.com/smartscenes/sstk). \ No newline at end of file diff --git a/docs/md/pretrained_models.md b/docs/md/pretrained_models.md deleted file mode 100644 index d942068..0000000 --- a/docs/md/pretrained_models.md +++ /dev/null @@ -1,176 +0,0 @@ -# Plan2Scene Models -Trained Plan2Scene models are shown below. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Texture Synthesis ModelTexture Propagation ModelObserved SurfacesUnobserved SurfacesAll Surfaces
ColorFreqSubsSubs**
(Version2)
FIDTileColorFreqSubsSubs**
(Version2)
FIDTileColorFreqSubsSubs**
(Version2)
FIDTile
Synth (ours)
CVPR Version
- [texture_synth_conf.yml] - - [texture_prop_conf.json] - 0.4310.0350.3500.463196.116.40.6530.0320.3930.490199.418.60.5910.0340.3920.485196.217.6
Synth (ours)
Version 2*
[texture_synth_conf.yml] - [Weights] - - [texture_prop_conf.json] - [Weights] - 0.3860.0270.3820.480158.811.00.7140.0280.4130.461178.912.80.5790.0280.3800.480166.912.4
-* Synth version 2 is trained on the stationary textures dataset version 2.
-** Subs metric version 2 is trained on the stationary textures dataset version 2 and the open-surfaces dataset. -
-
- -To use a pre-trained model, - 1) Download the texture_synth_conf.yml file, texture synthesis model weights file, texture_prop_conf.json file and texture propagation model weights file. - 2) Update `./conf/plan2scene/texture_gen.json` file as follows. - - For the field `texture_synth_conf`, specify the path to the texture_synth_conf.yml file downloaded. - - For the field `checkpoint_path`, specify the path to the texture synthesis model weights file downloaded. -3) When required, specify the command line arguments as follows. (E.g. In the [gnn_texture_prop.py](./code/scripts/plan2scene/texture_prop/gnn_texture_prop.py) script.) - - For the `GNN_PROP_CONF_PATH` argument, specify the path to the texture_prop_conf.json file. - - For the `GNN_PROP_CHECKPOINT_PATH` argument, specify the path to the texture propagation model weights. - - -# Substance Classifier Models -Trained models for the substance classifier of the SUBS metric are shown below. -All models are trained following the approach described in the supplementary material section of the paper. - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Train Set - - Validation Set - - Validation Accuracy - - Config - - Weights -
Version 1
CVPR Paper
-
    -
  • Stationary Textures Dataset (4120 Crops)
  • -
  • OpenSurfaces Dataset (6378 Crops)
  • -
-
-
    -
  • Stationary Textures Dataset (64 Crops)
  • -
  • OpenSurfaces Dataset (60 Crops)
  • -
-
87.9% - [substance_classifier_conf.json] - -
Version 2 -
    -
  • Stationary Textures Dataset Version 2 (6440 Crops)
  • -
  • OpenSurfaces Dataset (6378 Crops)
  • -
-
-
    -
  • Stationary Textures Dataset Version 2 (64 Crops)
  • -
  • OpenSurfaces Dataset (60 Crops)
  • -
-
89.1% - [substance_classifier_conf.json] - - [Weights] -
- -To use a pre-trained model, - 1) Download the substance_classifier_conf.yml file and the weights file. - 2) Update `./conf/plan2scene/metrics.json` file as follows. - - For the field `substance_classifier.conf_path`, specify the path to the substance_classifier_conf.yml file. - - For the field `substance_classifier.checkpoint_path`, specify the path to the weights file. - diff --git a/docs/md/rent3dpp_data_organization.md b/docs/md/rent3dpp_data_organization.md deleted file mode 100644 index f287ea6..0000000 --- a/docs/md/rent3dpp_data_organization.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rent3D++ Dataset -The data organization is as follows. -- inputs: - - archs_no_objects: Contains scene.json files describing the unfurnished architecture of houses. CAD models are not placed for objects. - - photos: Place holder directory for photos. Copy the images directory provided by Rent3D here. (Not required if you use the extracted crops provided by us.) - - photo_assignments: Contains photoroom.csv files that describe the assignment of photos to rooms of houses. - - object_aabbs: Contains objectaabb.json files containing labeled AABBs of objects shown in the floorplans. Provided for the test set only. - - unobserved_photos.json: Identifies photos we unobserved for evaluation purposes. - - data_lists: Contains house keys of train, val and test splits. - -- processed: - - full_archs: Architecture of houses with object CAD models placed using the approach we describe in the supplemental material section of the paper. - - surface_crops: Extracted crops used in our paper. - -## archs_no_objects -This directory contains multiple scene.json files, each describing the architecture of a house using the scene.json format. -The filename is the house_key used to uniquely identify that house. -For details about the scene.json format, refer to [this doc](./scene_json_format.md). - -The scene.json files follow the convention of considering the Y-axis as the up direction. - -## object_aabbs -This directory contains multiple objectabb.json files, each containing the labeled AABBs of objects shown in the floorplan. -The file name is house_key. -The format of an objectabb.json file is as follows. -```json -"objects": [ - { - "type": "cooking_counter", //object label - "bound_box": { - "p1": [ // Contains X,Z coordinates of the first point - 7.150602191235059, - 2.95387171314741 - ], - "p2": [ // Contains X,Z coordinates of the second point - 7.816596812749004, - 3.6905862549800794 - ] - } - }, - // other objects - ] -``` - -## photos -Please copy the `images` directory from the Rent 3D dataset here, if you wish to extract new surface crops. - -## photo_assignments -The photo_assignments directory has multiple *.photoroom.csv files, each describing a house. -The file name is the house_key. -Each photoroom.csv file has the following columns. - - room_id: Room id specified for the room in the scene.json file. - - photo: Filename of a photo assigned to the room - -## full_archs -This directory has scene.json files, each describing the architecture of a house having populated with fixed objects. -The filename is the house_key used to uniquely identify that house. -You can generate full_archs from achs_no_objects and object_aabbs using the provided script. - -For details about the scene.json format, refer to [this doc](./scene_json_format.md). - -## surface_crops -Contains rectified surface crops extracted from Rent3D photos. These are the crops used in our paper evaluations. -You can use the provided scripts if you wish to extract new masks and crops. - -## unobserved_photos.json -We evaluate Plan2Scene by simulating a random sample of photos as unobserved. For this purpose, we prepared a list of unobserved photos for each setting among 0.0 (no un-observations), 0.2, 0.4, 0.6, 0.8, and 1.0 (all photos unobserved). The setting name indicates the probability of unobserving a given photo. - -`unobserved_photos.json` is a dictionary having unobserved probabilities as keys and lists of unobserved photos as values. diff --git a/docs/md/sample_scene_json.md b/docs/md/sample_scene_json.md deleted file mode 100644 index 308cde0..0000000 --- a/docs/md/sample_scene_json.md +++ /dev/null @@ -1,1468 +0,0 @@ -# Sample Scene.json File -We provide a sample scene.json file with synthesized textures below. You can use this as a reference to understand the scene.json format. More examples without textures are available with the Rent3D++ dataset. The scene.json format is explained [here](./scene_json_format.md). - -## Previews -The following are screenshots from the [smart scene toolkit](https://github.com/smartscenes/sstk) scene viewer previewing the sample scene.json file. - - - - - -## Sample scene.json file -```json -{ - "format": "sceneState", - "scene": { - "arch": { - "id": "sample", - "elements": [ - { - "id": "room_0_17dd05d5fab241209a5df4833ec53216_f", - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "points": [ - [ - [ - 2.0814139063360884, - 0.0, - 2.0811193388429756 - ], - [ - 5.4969239889807175, - 0.0, - 2.035903228650138 - ], - [ - 5.4969239889807175, - 0.0, - 6.743533619834713 - ], - [ - 4.168571878787879, - 0.0, - 6.725417719008266 - ], - [ - 4.159587570247935, - 0.0, - 5.605030258953169 - ], - [ - 2.063298005509642, - 0.0, - 5.605030258953169 - ] - ] - ], - "type": "Floor", - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_f" - } - ], - "depth": 0.05 - }, - { - "id": "room_0_17dd05d5fab241209a5df4833ec53216_c", - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "points": [ - [ - [ - 2.0814139063360884, - 0.0, - 2.0811193388429756 - ], - [ - 5.4969239889807175, - 0.0, - 2.035903228650138 - ], - [ - 5.4969239889807175, - 0.0, - 6.743533619834713 - ], - [ - 4.168571878787879, - 0.0, - 6.725417719008266 - ], - [ - 4.159587570247935, - 0.0, - 5.605030258953169 - ], - [ - 2.063298005509642, - 0.0, - 5.605030258953169 - ] - ] - ], - "type": "Ceiling", - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_c" - } - ], - "offset": [ - 0, - 2.8, - 0 - ], - "depth": 0.05 - }, - { - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "id": "room_0_17dd05d5fab241209a5df4833ec53216_wall_0", - "type": "Wall", - "points": [ - [ - 2.0814139063360884, - 0.0, - 2.0811193388429756 - ], - [ - 2.063298005509642, - 0.0, - 5.605030258953169 - ] - ], - "holes": [ - { - "id": "hole_a77395a2894b45879cf22c5b85711a83", - "type": "Door", - "box": { - "min": [ - 0.17939226145599707, - 0.0 - ], - "max": [ - 0.8639838127670275, - 2.21 - ] - } - } - ], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_0" - }, - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_0" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "id": "room_0_17dd05d5fab241209a5df4833ec53216_wall_1", - "type": "Wall", - "points": [ - [ - 5.4969239889807175, - 0.0, - 2.035903228650138 - ], - [ - 2.0814139063360884, - 0.0, - 2.0811193388429756 - ] - ], - "holes": [ - { - "id": "hole_b5fa97c0136d4b09af335dacdf65406d", - "type": "Window", - "box": { - "min": [ - 1.8073290730281013, - 1.0 - ], - "max": [ - 2.674611862647954, - 2.65 - ] - } - } - ], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_1" - }, - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_1" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "id": "room_0_17dd05d5fab241209a5df4833ec53216_wall_2", - "type": "Wall", - "points": [ - [ - 5.4969239889807175, - 0.0, - 6.743533619834713 - ], - [ - 5.4969239889807175, - 0.0, - 2.035903228650138 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_2" - }, - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_2" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "id": "room_0_17dd05d5fab241209a5df4833ec53216_wall_3", - "type": "Wall", - "points": [ - [ - 4.168571878787879, - 0.0, - 6.725417719008266 - ], - [ - 5.4969239889807175, - 0.0, - 6.743533619834713 - ] - ], - "holes": [ - { - "id": "hole_e2fe2cac62754d4da15f577ee193a87f", - "type": "Door", - "box": { - "min": [ - 0.2719127351424196, - 0.0 - ], - "max": [ - 1.0035376480957672, - 2.1 - ] - } - } - ], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_3" - }, - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_3" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "id": "room_0_17dd05d5fab241209a5df4833ec53216_wall_4", - "type": "Wall", - "points": [ - [ - 4.159587570247935, - 0.0, - 5.605030258953169 - ], - [ - 4.168571878787879, - 0.0, - 6.725417719008266 - ] - ], - "holes": [ - { - "id": "hole_c27e047124f94f20b3f257263ff74506", - "type": "Door", - "box": { - "min": [ - 0.24390939609627038, - 0.0 - ], - "max": [ - 0.8404283658233238, - 2.21 - ] - } - } - ], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_4" - }, - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_4" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_0_17dd05d5fab241209a5df4833ec53216", - "id": "room_0_17dd05d5fab241209a5df4833ec53216_wall_5", - "type": "Wall", - "points": [ - [ - 2.063298005509642, - 0.0, - 5.605030258953169 - ], - [ - 4.159587570247935, - 0.0, - 5.605030258953169 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_5" - }, - { - "name": "surface", - "materialId": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_5" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "id": "room_1_d701bce81576499499f52dd694cb912b_f", - "roomId": "room_1_d701bce81576499499f52dd694cb912b", - "points": [ - [ - [ - 1.3494136859504136, - 0.0, - 5.63213046831956 - ], - [ - 4.168571878787879, - 0.0, - 5.63213046831956 - ], - [ - 4.168571878787879, - 0.0, - 6.68933320110193 - ], - [ - 1.3494136859504136, - 0.0, - 6.68933320110193 - ] - ] - ], - "type": "Floor", - "materials": [ - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_f" - } - ], - "depth": 0.05 - }, - { - "id": "room_1_d701bce81576499499f52dd694cb912b_c", - "roomId": "room_1_d701bce81576499499f52dd694cb912b", - "points": [ - [ - [ - 1.3494136859504136, - 0.0, - 5.63213046831956 - ], - [ - 4.168571878787879, - 0.0, - 5.63213046831956 - ], - [ - 4.168571878787879, - 0.0, - 6.68933320110193 - ], - [ - 1.3494136859504136, - 0.0, - 6.68933320110193 - ] - ] - ], - "type": "Ceiling", - "materials": [ - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_c" - } - ], - "offset": [ - 0, - 2.8, - 0 - ], - "depth": 0.05 - }, - { - "roomId": "room_1_d701bce81576499499f52dd694cb912b", - "id": "room_1_d701bce81576499499f52dd694cb912b_wall_0", - "type": "Wall", - "points": [ - [ - 1.3494136859504136, - 0.0, - 5.63213046831956 - ], - [ - 1.3494136859504136, - 0.0, - 6.68933320110193 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_0" - }, - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_0" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_1_d701bce81576499499f52dd694cb912b", - "id": "room_1_d701bce81576499499f52dd694cb912b_wall_1", - "type": "Wall", - "points": [ - [ - 4.168571878787879, - 0.0, - 5.63213046831956 - ], - [ - 1.3494136859504136, - 0.0, - 5.63213046831956 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_1" - }, - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_1" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_1_d701bce81576499499f52dd694cb912b", - "id": "room_1_d701bce81576499499f52dd694cb912b_wall_2", - "type": "Wall", - "points": [ - [ - 4.168571878787879, - 0.0, - 6.68933320110193 - ], - [ - 4.168571878787879, - 0.0, - 5.63213046831956 - ] - ], - "holes": [ - { - "id": "hole_fae8a491e93e4c488600dfa77d4f61ba", - "type": "Door", - "box": { - "min": [ - 0.22593326721763143, - 0.0 - ], - "max": [ - 0.9217016859504136, - 2.21 - ] - } - } - ], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_2" - }, - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_2" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_1_d701bce81576499499f52dd694cb912b", - "id": "room_1_d701bce81576499499f52dd694cb912b_wall_3", - "type": "Wall", - "points": [ - [ - 1.3494136859504136, - 0.0, - 6.68933320110193 - ], - [ - 4.168571878787879, - 0.0, - 6.68933320110193 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_3" - }, - { - "name": "surface", - "materialId": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_3" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "id": "room_2_24993318fd154d40bf9444582cf583e9_f", - "roomId": "room_2_24993318fd154d40bf9444582cf583e9", - "points": [ - [ - [ - 2.0509261707988986, - 0.0, - 2.092165619834711 - ], - [ - 2.0550501157024796, - 0.0, - 3.094431515151516 - ], - [ - 1.3332124738292013, - 0.0, - 3.0903075702479343 - ], - [ - 1.3455843085399453, - 0.0, - 2.0962895647382926 - ] - ] - ], - "type": "Floor", - "materials": [ - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_f" - } - ], - "depth": 0.05 - }, - { - "id": "room_2_24993318fd154d40bf9444582cf583e9_c", - "roomId": "room_2_24993318fd154d40bf9444582cf583e9", - "points": [ - [ - [ - 2.0509261707988986, - 0.0, - 2.092165619834711 - ], - [ - 2.0550501157024796, - 0.0, - 3.094431515151516 - ], - [ - 1.3332124738292013, - 0.0, - 3.0903075702479343 - ], - [ - 1.3455843085399453, - 0.0, - 2.0962895647382926 - ] - ] - ], - "type": "Ceiling", - "materials": [ - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_c" - } - ], - "offset": [ - 0, - 2.8, - 0 - ], - "depth": 0.05 - }, - { - "roomId": "room_2_24993318fd154d40bf9444582cf583e9", - "id": "room_2_24993318fd154d40bf9444582cf583e9_wall_0", - "type": "Wall", - "points": [ - [ - 2.0509261707988986, - 0.0, - 2.092165619834711 - ], - [ - 1.3455843085399453, - 0.0, - 2.0962895647382926 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_0" - }, - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_0" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_2_24993318fd154d40bf9444582cf583e9", - "id": "room_2_24993318fd154d40bf9444582cf583e9_wall_1", - "type": "Wall", - "points": [ - [ - 2.0550501157024796, - 0.0, - 3.094431515151516 - ], - [ - 2.0509261707988986, - 0.0, - 2.092165619834711 - ] - ], - "holes": [ - { - "id": "hole_8dafab8339514bb7812ab1c6d737fef3", - "type": "Door", - "box": { - "min": [ - 0.15112032896678254, - 0.0 - ], - "max": [ - 0.8337747155732528, - 2.21 - ] - } - } - ], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_1" - }, - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_1" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_2_24993318fd154d40bf9444582cf583e9", - "id": "room_2_24993318fd154d40bf9444582cf583e9_wall_2", - "type": "Wall", - "points": [ - [ - 1.3332124738292013, - 0.0, - 3.0903075702479343 - ], - [ - 2.0550501157024796, - 0.0, - 3.094431515151516 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_2" - }, - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_2" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - }, - { - "roomId": "room_2_24993318fd154d40bf9444582cf583e9", - "id": "room_2_24993318fd154d40bf9444582cf583e9_wall_3", - "type": "Wall", - "points": [ - [ - 1.3455843085399453, - 0.0, - 2.0962895647382926 - ], - [ - 1.3332124738292013, - 0.0, - 3.0903075702479343 - ] - ], - "holes": [], - "materials": [ - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_3" - }, - { - "name": "surface", - "materialId": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_3" - } - ], - "height": 2.8, - "depth": 0.1, - "extra_height": 0.035 - } - ], - "rdr": [ - [ - "room_0_17dd05d5fab241209a5df4833ec53216", - "hole_a77395a2894b45879cf22c5b85711a83", - "room_2_24993318fd154d40bf9444582cf583e9" - ], - [ - "room_0_17dd05d5fab241209a5df4833ec53216", - "hole_e2fe2cac62754d4da15f577ee193a87f", - null - ], - [ - "room_0_17dd05d5fab241209a5df4833ec53216", - "hole_c27e047124f94f20b3f257263ff74506", - "room_1_d701bce81576499499f52dd694cb912b" - ], - [ - "room_1_d701bce81576499499f52dd694cb912b", - "hole_fae8a491e93e4c488600dfa77d4f61ba", - "room_0_17dd05d5fab241209a5df4833ec53216" - ], - [ - "room_2_24993318fd154d40bf9444582cf583e9", - "hole_8dafab8339514bb7812ab1c6d737fef3", - "room_0_17dd05d5fab241209a5df4833ec53216" - ] - ], - "rooms": [ - { - "id": "room_0_17dd05d5fab241209a5df4833ec53216", - "types": [ - "Reception", - "Kitchen", - "Entrance" - ] - }, - { - "id": "room_1_d701bce81576499499f52dd694cb912b", - "types": [ - "Bathroom" - ] - }, - { - "id": "room_2_24993318fd154d40bf9444582cf583e9", - "types": [ - "Closet" - ] - } - ], - "materials": [ - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_f", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_f" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_c", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_c" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_0", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_0" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_1", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_1" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_2", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_2" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_3", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_3" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_4", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_4" - }, - { - "uuid": "Material_room_0_17dd05d5fab241209a5df4833ec53216_wall_5", - "map": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_5" - }, - { - "uuid": "Material_room_1_d701bce81576499499f52dd694cb912b_f", - "map": "Texture_room_1_d701bce81576499499f52dd694cb912b_f" - }, - { - "uuid": "Material_room_1_d701bce81576499499f52dd694cb912b_c", - "map": "Texture_room_1_d701bce81576499499f52dd694cb912b_c" - }, - { - "uuid": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_0", - "map": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_0" - }, - { - "uuid": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_1", - "map": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_1" - }, - { - "uuid": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_2", - "map": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_2" - }, - { - "uuid": "Material_room_1_d701bce81576499499f52dd694cb912b_wall_3", - "map": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_3" - }, - { - "uuid": "Material_room_2_24993318fd154d40bf9444582cf583e9_f", - "map": "Texture_room_2_24993318fd154d40bf9444582cf583e9_f" - }, - { - "uuid": "Material_room_2_24993318fd154d40bf9444582cf583e9_c", - "map": "Texture_room_2_24993318fd154d40bf9444582cf583e9_c" - }, - { - "uuid": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_0", - "map": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_0" - }, - { - "uuid": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_1", - "map": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_1" - }, - { - "uuid": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_2", - "map": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_2" - }, - { - "uuid": "Material_room_2_24993318fd154d40bf9444582cf583e9_wall_3", - "map": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_3" - } - ], - "textures": [ - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_f", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_f" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_c", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_c" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_0", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_0" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_1", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_1" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_2", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_2" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_3", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_3" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_4", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_4" - }, - { - "uuid": "Texture_room_0_17dd05d5fab241209a5df4833ec53216_wall_5", - "image": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_5" - }, - { - "uuid": "Texture_room_1_d701bce81576499499f52dd694cb912b_f", - "image": "Image_room_1_d701bce81576499499f52dd694cb912b_f" - }, - { - "uuid": "Texture_room_1_d701bce81576499499f52dd694cb912b_c", - "image": "Image_room_1_d701bce81576499499f52dd694cb912b_c" - }, - { - "uuid": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_0", - "image": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_0" - }, - { - "uuid": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_1", - "image": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_1" - }, - { - "uuid": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_2", - "image": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_2" - }, - { - "uuid": "Texture_room_1_d701bce81576499499f52dd694cb912b_wall_3", - "image": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_3" - }, - { - "uuid": "Texture_room_2_24993318fd154d40bf9444582cf583e9_f", - "image": "Image_room_2_24993318fd154d40bf9444582cf583e9_f" - }, - { - "uuid": "Texture_room_2_24993318fd154d40bf9444582cf583e9_c", - "image": "Image_room_2_24993318fd154d40bf9444582cf583e9_c" - }, - { - "uuid": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_0", - "image": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_0" - }, - { - "uuid": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_1", - "image": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_1" - }, - { - "uuid": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_2", - "image": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_2" - }, - { - "uuid": "Texture_room_2_24993318fd154d40bf9444582cf583e9_wall_3", - "image": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_3" - } - ], - "images": [ - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_f", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_c", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_0", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_1", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_2", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_3", - "url": "data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABHh0lEQVR4nLW925YkN44lugHS3CNT1d2r///jzsOc1VMqSaWaqVZmuBkJzAOwSbqFe0RkVbWvlcqUX81IXDY2LpQ///nPLiLgn1or+HB3HMcxXhNVSL727fWGIoJSFCIC1fgbAI7WUVRgjviTnzIIFA5zRzeHuONoHQ6gFoG5Q0XRuwFwADL/zt8opUDFYWbQUlEEeG3AfhwAANUCwKFaIALADb139N7x5bqhG9AdD1936yh1g8BRxKECqAjgjlrib1XN31Gg1LhnBwBHUYUKYGbw5b3uDkc83w1wEagbDhe07oA7vh8Gtx73KYpaK7oZzB1fLhUqQCkCcQdE0HtHLQp3gQpQiwJwHN3jmvMaJa+nKKC5dyICdwcA1FIKVHVsYGttbOS+7+Mm4kYAh+Pv324oGpujuU1mNgRFBejm2LvDIPFe6+gQmCjMgK8bACguVaEam29mAASmKWZ3+x/XWFRigbWgdUOHox0N1+0ybkpEIeIwcxQVFFFIVYgWmBs2lYevO64wM1TFEA6uxaUqWjfUoui9j4WE873xfnOMdYj7iXU7zHF0w5dLRVGFoEDdsWncy7bZXGThmhe427gvtxAmE4WUC0yA1jvghtejwx2oNYQQIpBuEAFeCsZ9nBW7rk+6+3gjNZyPuCmgdcefXrbxvv9+PVA0XhMIIICZo9YSO+dAEUNXhVvcCFSxW2iZOdB7WAW+3+ObhqSKSCiZCFq3FDKBqkHccdk2aOH3+7jmkCMP+yMKd0vBffy6ILQ+fj82wuNnsadmHd1RU1ncLF70VAANLeSGUQsBwAXYakktMjiAAkDEUQvwrce1QASe9+COvDbBVhTmhu4FKgKBQUVwqYLegW4h1GG9gKqAi8Ld0bpBZQrBqtiVT1IAAOD/vqPhRQWiJbQMjv/8tw3rQ9I8AcChDoWhlIrmjosoLIXAeodD4G5ollJPIchtFMuVS49wtBZmUJBWRlAEuFw2wB0Gh4iGMA3LEaY7txmq77/uyivIBc1FjI2NzXA31FrvFEYl3BPXaX2Nnz8LioiiGVA8LKWbA5LCk78lAtDxDuuSAqIICbF8TlVR0m2FbHfAAVV547r5qKvpDh/l+I+fXob5eqThKBcAoX2r/1FuvgC9dxRVdA9NcYRdLQq0BSOIKkourib+oEkVERzHjq1ecBw7StHQ/PwbMKhWqHguVGyqhltF0RA4WbRK9P3X4UDRsAIqCoegiKNRG93hrkPYhwCkVSilDAVYlaKmVZf0ayEUhq1ICk0BFncrEtag6lzbL6Xg2268EAgU3ULjtYYA1aLQIT8hGALA/LHrlv/1X//bV9P95RKbQDC0+g7eTO8d37qitfA/YT0AFUdVgWpYim5hfswBYg2PNUQVg3sotwwtAWr68n4cc9MWjeJ3OyRtZLxW6CYQbqWIpKb7oj1IvPH89XSfuXhIMJcaaI6tlgCwKomJUkvdcJgnvojfcDesq6eqWN0DlU5E4FoAupRck+HL8/1mhu+HoWoI7EcAdP0tiKAv+G4o9t/+9jdfN5Zv+OPwJxpu2D02Au6BoI0XIaj5Jy0rbs1wNEtwornYFig8owpetAjCr5YNNq6FN2ooEgi+SGjvuuEtcYRSENKEzgVZcMUHr3Pxu+XzKRhbUXSP31MRQKYGhokPv2wuOHqHalg/FcHXl8ubzcci+HsL3NQtcIoAIegp+ATntyOsp98BUMfAzYtFWh+993BRjjvFrke3O9M9kK8UHCeEuWq4orzrf3hjRQDUNDvi2HsIelVBTX9tEHSzNFUC9CNCR7e8mYgsUMKquAAtQ6R1wweAThfv+Xk+zAMcPXt91ZaWodvqko8BQEP4NFQu3xdv7C5QcVyroJYCoMQG9h5rI7Qm97+9FcD6AS3b2EwAIUj5b3fHdStoBiBDxkcAlBaT/15d/LeGO8Wuf//e3phu99isM8IsGYZVFRjwrv+h6TfP9xXFazOIKKDhW5ul1tNTicKtBxbpNsJD8QLVguZAlQUonja8BIQP7U2gF9KeJvXD15dFpGlXGRqjCcqQQseFTMcWm5CWDFAcFr8l1kcUs1qBFSiORz/g9QKB43Z0pObNUNDDf7sMbwEteoc97qKnERrHv78Ux993DMWuqrjbWEks8BHCFAktBvDG/7TWcb1sQUrAUMr2JgpIKBQ3UQDULbSiKOBLJGGU4Ijb07xAUljXDR0u1MlZxLVxocz8zlqcX1cVtJ73KAGykPdJYQZDxLwH9UDuBok3pKsCAJeCDgVaQ5eKi08X253EjGOVARGB9wN7gudNp6tYN/McadBFvBGo02cBwaViKHYtD013/Ps9DX+PAKnFcTvau1EACaMgbXITkiuw7tBagvRYbkRz811CBciwrRsqyyIDMgUuY28CvEevp/6gx5smELT4cgJWlfTP+e+9DxsGEceBiosYmgGKBtcLNjRk3InWOgzxOVDBaFUAiMZ1XbcK6+0ezOGtf+frt2Z3n+drEcVpkkpxzVTsqngbOuQ6PNXwohqx+wP/gxScSy24NTtFAZ6+V9DMwpe2BhXBttW8YImY2B3uMihirg5DSPeWuuh3G+pQ/HQJsAMJzBCRShmu6FLk3ddTphLQUeiCxuaazA1XXMq6EQJFRykVmwAqBfvR0SUijyCuavARZkFpLzQ6lj2Itd7uNJ/vf/Qgi7+6CwpMRBvBXZgZiigOMcjvv//uj0KH7vIUYZ5JjkcEiFls/KMogIJmvSEo3mnSzB29W4Sk1zr8ZsTtIdmb3msEwy5u6CWFxhNIOhLtYwKiIu+/zvtY42b+1kDu+34HspgTWTeIeRFyBCsIbK2N7+wIK1hlru+q+Sto5D6dKWdLFzvCzxQ2RgCrUBzdUFTviaBVg9NJP6U4zYINWwkQXtQkQvxNFIAhOBaJJMgItSxZv3qp09UkG1AJCPM6DhNcykK1eoatiBxEuLEw2qnE+XdaIcW7rweh5Nh0dRnxOnn0cx5lbER+2d5asm5vkf/537VMYHs2+euD17L+HoVCrMPT5RaVtJgNpZQ7YQOvyA31PtlDqV/iyQcU5ypJ60WsVuHW4vnuk/w5EtkLIvtHQoc8dVHgj2YQ0sVLmHck6RMS7lAFmgGX0tFsJqBoTUgSDYGDhijRlRhj+cevwwEXR+v+lEdf121w7qXg9fXAVvSOVFrfu64X148cjCfWIAhfId0zkMd9UVVUc0gNwWwt8EPvfQgp31cQ7rSev2w1LUOyThrOL6EPWz/nC1FiZOsehFvmDskwkO87J6Q+iuuLzChhjdtbb3CXYbnMPQgmpG/PcE0/eL0WxWV7zqOf8yiXy4Z9PyLDmQB3NfvrZ6hUZobjOEYyzBDJMYjcEUmUy63qG6FYH6rhhrjpZ4X1ZZ1LUVQSMM9u6hk4efQ3/f6aBhY3GPRhuEVNk5RSJmSehXlnQfJMSJ3jdtUS/z/y4Q6VAhJL8QU6jMSz1+FAS9fyx/fXNzx687i+nvkEawbRgtc9ahOqRkqWGxguLH343lAkHFyt9U7p7q3tvQB929sboSDqJ+K/Jsh83Y8BWtfv7d2GlZH/+suv/uwLV//3CJicXzMzNAdaj5D4UgNMMiQBZjjGkIimysxRalnM5j2XPeN2wVwPGdYm4nZijdV6sSAirExPqxPxUH33dbquAEN9kC2lFByZkwkmM4pQRIBLLcivGvY77lnx/XaglEwxR/wCBXCtgRNEgh8g13DONxAgrmt/VsRHJBBB/sB4kGFl5Pfff/dnX0gwdwYl5x/iZ483BFCkgQVYwi28CbfgnrH0shlgVp6/hWkhclHr5ZI+OgSgp6DRtw9hyl9qLfLKTO5Ayvuvp4XoFlHJtSxJLXc0hJVgUkkk8gUQGdd6h5sszV4KmPB93iN49Agz38s31HIvFCvq33JNj2641Gk57ljExC8D/P/2++/+7AsZAp75ZWAuxAj5yAJa8ATmYY4dGuj/UbiFTO4k3cPkjy7CyOffxu3ATj+SG36tGmVnA8DGtUcVj4EiFFlJhyWZ9Ox1caBbx5a5f+A+9NO6JX5wRJQEbNuGiC59kElA1D9Awt05fV9euydVXPI+ougl8w0lsq6an8UDoYhSoaymAvDlsr1R1FV5VytTW/cHX0jNnhswpBkTmVIgKABh9h8QQJL+ELFxpQgOG98CkyCizBIJL+QOJZYZ+yIOF01LoWFSuTB8HQEQRQSiMyzVIWCMAvD09VCKWIt939GhkYcQRU2Ujdw0E6CU7c4iuiKp60gEAaG5U7gnv6EiqJL1k1mmBq61z3xDaL+jn5JQoe31CYa4fxAv9WRvq2cc/iirVeUe5OX/JLrGnUUQCfBhZlm+BPQWglFqQYcAKGjWsJvDrOO6lUENM8RDbn6R+B2+9iiuZ42gQ8diepribpE3P/I+ugtapmu9213kwS1ZXw/XZMOt1BrImqBqsmwliz3ehm1UjkHYOKlrv+MbDAXwnjUEUzvzZdS0kLfmuFZF9Q4VS6DNUHxiCCW+SAtoyz36sDpRgFtV5WlWa9wIMDZHRe5vKquILrn5/MQkgKJiN0CRonWHoyGyZcELuAuuRQCp2G+vUXShCs1oAJ4qmSYSAJp5JkDiqgNXlARmlpc/eQfWAnZrdMF3+IX1BO6Zscx7ZVilzXE9gWKDwHqPFDWQmhhfbvmn9ajUvdRwdO4YLszSJ4sg0rsebJ54n/kGragZSlbgjWV8PXpURCHcY1VB43eLwHsLVyKKy1ZmdjatjPz82++uQBY4hl8EMLR/NSV//74/LABlFZFDspSZmTMMpoy+spmPm2dJOf+fi3MpDstgS7Nw1C3IHwESKKUFGnjCIVoGD0ENK/C7QlCRKEVHYgXG3/SNvfeB7hkZBY0a2lZK3E/Ni5FcI0HUS7gDksUqZgHIAMHRQglqYZ1FuBiVCHeDyErl0bjvmm6MNC4F72zej7RYDzEEPPFMJtYSm1lSz/L///xXv6gtWS3elA8jUFRGrLo+SPuen+el/fE6pQ9plltPk1p0onoJDY86QhkVMYf5qIC91pKSjiFgbUkti0rU3BOX0B3AcdlKgr2SVLGN++S1UmDNsjydOCBdDSRTx0Ook8KGDMHktRHd0x3tzXIdGB1M4klhQ6CLxHeVBalznc8CsD4GGZdhcXhMhpux7pohDSMrhua1jIIHxaakWUP7umO88dtuTwtAZ/28o1toTy0FlzeoPCRbdb2huRNbiZLnIoHwNzFUVdSigxuIRUvNsHBdnRpQy0gm6QCogHWDlkiUGHxQxlWmt1XK4cKjBxCMy9u2bQgoTTlfd5v4IzY5aBZNPqUPcwgAhiKCDsdWdGQLNQEm+D2nCOtTNDEyPW1vaxbIP9ASx1UW1GtxGCrc+l1iRTWRuTiaGQ6LjX5UHsYqom6sz7MJzAC4J4mSKeSwAryoCLcY+29FcEuWrKaLeMaBD6SfoNMiuZE4BYAHGoeWUfMAAJIbt9VoLonNm+VnI/EkMvyvqqBcL7gdLLzQTODEtZErEImk1pBxAUxjTVkwGkoXZv1oHS/bpNtXJD/yBDZDvPdoYtHoW6AgrDUL43rMAldB4N4jG0gJWsOY1y74UsMVCPBueRj5A82CDhFFN8Pfv93iYkVRK0arE29KAIh3AI5L0cieJT9fVFE1axIccPIQuaq9W8SzjB7y7xG6IuMFLXDfc1FCyEiyfN+Ds29tLdkK4ai1BlUqPgSg1oLjoMvrkfBJv2tG4BfXHNcaW2PuQ6h0sR6fzRZeL5cnId49TezuuGZ2Z28da83CWjG07rP8+uuv/ozuJUDqSd4YgkJUlazMlcFnRyHH4kt9XBVmq1NqmsSmqgBbERD4vO4NlTkA3Kd6GesTvXOxuzlWMobXv9U6283SF0dVcVxryllGIWE9qM3kAHS5bkoWhV1SygSCUitagr2whjYEqaeW1qJDE19vR7J22ZqWIO+9bKuqvksTk8CLfsH5fLu9Ts5iqQkYgsCy8EePNSH0/bBBxrg5trpWEc2oUVXRzAYgY9w+ZIGEjgY22EqYy6P1QQMP8kcYukWo6Q58uW7py4KreL3tIHM5zW62PSXDJ0nuqEoiZhk+n5W6spBPtDIEeS35f8+wVEVxy4QPREat4GUruWkhjOYsYwOkKDYF9vzcSIGfsoV8rNlCptc/oonhFveez3+pvES5KwpZH/Lbb7/5swqTdRMO+u13GhBWjT1ax60vSCUlhTFrUfYWZN/XosH8QzaRaP962eAWpp/azy+XxeRO8mNaE0NYG/rIQRhlA6VAcNlq7pYMwSDJwjoDwQy7bnub1zXc06LJ+RvEHjVrBO6yhYLhx++yhY7FujISeZ8mrknfBFDEG6D4aJ/lr3/9q68XvUrjWn9GkDfyKIvbyGcQUUAsWDdDW8oNJBe2MqWaaP818+cr8UQT33rwBtetDkFwxKbRHWTLbJhByPD9kgu6ZXEpQ04zT5CaiyLJa0i2WdeCAatyPQbdnJ+nAEb0sFo5uq7kSVI446P/eLYQeS+DaHoQ4jHR9BFQfLnc9zTKr7/95sNy5pPN/KEEtawjm9EzhhBs20xAuPunW534uyutzO+x9OUkaYJFxAB7Y2EXYAdMIR3aIKE94hZ4ZnFtnBNQNPsUAFwvFdYNTjCa5n8/2ggBzWMxzYHjaMMtibxNRv3T2cIUiIAZM0dDAm+rM1riuq7fewaKK86oe/d7KZHnEnStjztgz27D3dGbvWl1Up2fWecQrBc0AWiYVoZX3XygfRFuPEEZfSrL28NXJk84hUnZvBlEj4qkTw/tf9kU+9FxHAeu2zbujaazlkhCRat3WLeqgq1EJRCBF/HEEIqsJw88HB1VGPeS69d7FLDQWiXK5Dqz5BsINhHeUWuBL25KZK0nsAkUfYJXlomFwONtPcDwDU8kaN20VZPOG3ikPGzbNholVCL0WSvqVqldBWjwBsg2MFt8IbVr+Rx9Np8fVToLcvb8vZ6fKSx3k9jIg4AxBXbbtrt77z2AKmcUXLb7irpzVzAfQXvXO4WhJQu/Tmp4AbJcz9xYgkfJ8Lh3GxsZ1/u5eoKNXcp5HXVltUSCNQs/+laCxPq7wrBs60D0Yh1eKgTPW53GQlmET1IK9hZzAxhf04eJxyZdahl0Ki0BzST98cwJUJA1BSKaJCzzC1DFK8u3iSPSSq0jc/goGdPvxxHKjOkqrfe7z/wrsoXuwJ++XOIzicu6ZgpbFXvrMGTPgsxMnwNvMr2tU7lyj3/+9a/+JpzAYwnqvQ3G6dx5wgXW/GwHxgwhuKNDRquTLFEEBalbbPjLZcOtxeYwceS8rIybGawNoUjNp7bPVxIoOYs80ucygpEosjxalGXXTMqsBSnufreha2g2Viv/4yIDgELL/P27bGF8d5BiuWGp6WtCLHDGpITFG+A5JyiFZBbqTq/yXi4g3iPoCKtnbo/rAcIUvZWgr9cJ9Na/aZa7B8K+bmWJGCSSL+KDDGH4SI1PH4TrVuGQ6PWXRNg6y8aRmxY0bYDRAJeJws2jeBRMNqX1sumXiyLb0mPhWjNccvNndvLevfXU6pWj5/3PPwR0tIxTi1UAg2ZZvELcsnchlGbbgpLmZqXoDasQNRrZgZR5F4OGRU3Nl6zC8sXlUQA1raBJgVYFkvl8Wg/AmJMCEbyyRp7Z7kvGSiljBk0tBa3F1K3LJUxW7x0vl7dmdDScpAeoRZfChfu4mylotxmzY9xeCI+Zw5O21lJS+nMZNASmaLSa0Wrs+zF4eJIyfDyKSqhx6z2chWX9HCOCldjifdcS2igSPrtIYB1JBalpsZZwB6xaZgv6VphCBqwdaK5v+xdFISoQKXf7qUkcVc9FP3e5it5L0NHfloxRCpXlT0fHS2p/WLI5ZYuLOGoDsiGUlqJlIkkQNf6Mzxk6WlbrSIZIa3EjUb5TkECTyJKraDpWjRtXEbSW/ANmzcLKlZ8ftFirELD+/pysWv+9fvfKxokIav5WTcx0KUFft8yohpbOsNJav2tBd5s5BneHegO0YsuyOQzM89YicK+rtwZPM7t2uTJ8G8iUQCxvnlKoqZFfLmX47aqRrNF0TkKNknAHyJJvyxskrx8CENfQXcbYF3cGNg4xjDSrw0d9QfdIQTcCP0dqVr7XgOsWPvj19TZj6QzxHnESj7j54zjuWq34+XM0tEY3DJ1X4Zhuk+RS2KxaCpr1/KzDBJAszimx66k0JMIA6218X03xj+bd/nFH8y+//OLrjfAGDBPQjEVKSBqhSNzImV/mdzSbRR8i4Qq6z/eUWkcRZD45v8Ns+OxuwXJtNWrvN/p2m/V6rD9gYoiCxJulGylLuxQ182GCZPmbbOgjM39mTc8PFn/Q5VAA2Lh6cEFyM8kCApIZSociFC3WpWO7XCD9GN/hfQoiv19EsHcfv3/uaF73up5vYpAfk7mYJg+OhqhNc3e03rG3Hpqa4EQ1ooYY++JZfpRSbsy3h+uotY5CDRmxLeM4x7EfI07vPVLFt+OgF4Jnk4kjy7ts4v8RIy/I/PstWrvOnMd6/xOc3vt6CskZF/DxlhqPBa+14rbvs1LIGWdhhKxbmUmk5OBm5CPLb7rD9tsAfJC54ef+v8tWnnY0r/tcz8mce9Sr81acYVmY8lsLDj4KJuI93Qy3owWH75qoWrMAIVgwOw40VTgUR9txuV7DEnRWqgDfv78GaLGIHgRZEj3IHWqExTBEM/x3AicIW8riOi9F8LpHjL+V6IohI/monO1+MxlSzdYrfj8Rt5P1y2QW8rluQSm3vcGhiXF8sYqCvR2hIBzcUDTX2qK+MN0cXYB1e1MsW5frX1natYfR/XlH82gPXxM/q1BQesK3x+utHZETkFk1a5kC7hbmH1l8qcFaRqHk/j3QvQGeN/Xff3zDdav44/srvB+JNQTue1x877hsCmuRMpb0g2NT8iZb6zCPjpiSGMQ8hRphiV5qGZv/ukeRJkHpVstS1DEJqOFyBkGUvEVncUsyb50IPsbKRndOVkpLZvGSBq6lQAurkYKOLnXDZauoCtz2A/vRYl5S77heX7BtUaDC8i61KK3fswn2a13cF+5rNd/raK6r5JxnBdBXAoKtlkTP7a6ZsY7hjgLJNNl//OmK77tlc2ZggKMZyvYCEYVZD8ZNZkr2pSp0u06t8znJitfCiIHgkWZ2bFiWmSuS/MkQyxMMspDF3cc8whCSuN89+fYccpvmOe6f4RlrBGjGWRbPoRY16xLb7QBKQUwzFkA11iP/mHtMXIVAS0GtFXW7QLzjei2w/i1G4agiWsfqqB142dJNLU2wbsfYNy1vh3q/tW4pACzE4GOVlDX0KaXcTw4XWcBR5MjNgT+9XILRu9ZBB++t4VISlnlf+Ou4mKqOS6mk1MZmnUFXMGPhGlhWTvBIDuFMTmF57vyggJOFe8EsbWOufk12nYHfHU5wRy01h1XZ6DMgqxoZzAR5IwKKolmuZSkCWFiLLy8xuDosUyhn7zaGVpNjAJailqG84YY+GuptZhEF1DRVvJBxU3nT27a9oW7PC2MeQ5sjYeI4csTMbT+S5MkLLQVB8C158sDrk55UJmxmYQXZPxvCwIFIMWXEx5BGTg0dcDB+R6YJ74k1RHX8zkotlaJZ/Yw737laxbVUSyS0GD5ZQcfMXoaAZA2B9RS4+DV2WcH7uE7gPtkjAPZjh7PNXmUKwHJfAqCi47AsmMUU2GdDve+ygeuGrtUjq0ad0S4XZdu2EU+bGXab2bEiyAHTjOlzAwCYhMlmzpzj4M0mwg8Kd9LN8Pjuo/dhAvOqQPaQWil5o46cLppmnzExKVggzH3RmSXcjzYE4Txj5xFvwPUaGpyIn/cdqW2M+woX4hgTRsHAK8LV1ix5lBg8JYjC1BA4xbnu4G2Tq4BDvc9gd4D9dYjR+uL5A2ei4xwOHXlgQ+8dzXz0zwNI7QhmQTyqhkSC9FAnek5NtwSd3SLX7Y5LAqaoTLfh89lwEmwhGbJA4KHpSEnHWChDFGj2/A6a/0vRUeLOmQVclxHeLsCKCrJyBCO2LlEzOBhRB7atwD0AIJ9rxjrL/G9aBbgnRkKOzg2r2czgpnjZOOTqoybYsIzfjkcjf6OnozqQrVIYCYKt6nAJrbWomgk1HWCIjzl1omeIlq9T+lUxirVys/lxmvfuPgZH9PRvhyGrdywROcb3R1lXH30DRSVA0AI6GY5hybjFmFnFkTLXXEboGeg/Nvf7621s/holrQqyCv9ZswCMaZ7Ngesl0q+GKNd2x8KNxOcvtSDCowj/jAdFpIA1y2EXziKTWQZH18OrOje5bmr4duBhT0ctyhFlbNK4Z7zWqlX6Nb7G0JEaImnOBY6XzByudoSVK6ye5aMuZnUDMqMYPq71QNnk+IvHf2qiGtVoGYOGZpWRCLo3e2ycNLCYRKDqgAbq11KwFcG3247L0pCybuxqBc+vPZrHUwrwkkmdolPIBqhN31ArrULWKQQYCPOtGmGvsuTb0LvkiRAY43VYDj46f8blZQBrHaIVb3o6fvn1V49ZOwKF3d3E8G8yqd/V550XZ12gWw8TMBF/LHzLWUCP2MPus/SLNDDLwYP1mgWqAIsvZnIFyPR1+j0jXUavy9YynVqTMUD032/bXS0AgLvxao8E4JmgnIc/Oug6pwslqQZnKVe8PmotEBvaLZp1zQxSonKZ1znG6xQddY0Rklp+nw8aXMv2pqcjqGD36NO3NF0nn7a3jnKZWru32ScP3BchDg59+CPN4RUfs4d7hpJfLgXfbw2QyI4h0b/ypAcAbrEx/SAZlf5VonmF10EUH+xX/CaLKa1bYBOJmPyCPhZn3dAQmrmhZhzyKHecBF3oZWREfYgfMKMPRjKRm7AhHEyLINlNQuVuMXpecy6jjrxGj9NS8lGKoth0BXAb5FmBYdsUe7O7ybBVEKXQHOxwRvlJF96Vh18quWt7IyxcLJZj/wh72A34eq1Zti1ovQ1msKiit75oaJpJ1YxAlo6j/G6eJLYeIyMSGvLmpDDrMaNYckP9/qSwZhyYnaFm3kPJ715d6K3NGj9erqcmC7ItThSttxGFUAggIaiWFqH3jq1q9kpOV+vWESebZLSWoawiE2Aq6F3wspUUiAy2FzKsqEY9AM0cN3zNtQ9hWrSbIdEqFPwsheKSjNiPsId7iykZBQotgLZMDgFDeNxTc5FaXSTJJYXWmmAyksfXrS7X9vgksfdOCgM4eHJODIdGoizrp3IUXrKDGfezMtlBDiPXFrHx2xbVzpLAVjDDP7aQRyVWAzRw0HbdwlXYHPgcvTpJQcMByzyJCPp+RNQjseHNBReNGYrNJ9tbuRHnMO8ZACL446P3PnwehWaYXOCH2MNQ0gyJVFGKA17SlLJsXdJiRfMjPMbRh23lIQpZAVT8w5PEBD5AoSA0cGpuEiaevRIC3I4sbUsSUhGUduucgD6xyLwfY0gUEVbqqrvDs6SHEQ0YcUQgDzEbQ7e6zd/okAH6mLl1cbgZ9t2GYKk6pFZc62OAW1f//QjYnPmAszVgAQgtwpqWJI28fucd2STAv3+9BoqNb4j4voRPN5nVN90MpUaJebiO4BSEIWpq3V3bjeNTJ4l95qSwqEtMZH8pdwLpZukqyLTRfsyqJMNsR5esoGKVE0EaRLBn9/EohtGsnGotMADjfve4GLOwetnev5sNISf49n7AdMPX6+VuH1trQQU/AzgdMponiEwvZQrHOfSh752g68fYwwBJngvHyxRY0qdDMNMUwmfCaX3dfQFgxjay2AhOHA+/OwgJzJPCJKOU80lhMQfprBhrKHxOL7tHft8tEjTO64bDPaMgsEElQB0bVSRzJfM8xY69z5nCItHAQ1It1If5Eq6RT4Bb5A3ABYDaWnsIcFjUyQXlDZ0xAvMIM/YtD8PCz7CHxNJbrZHSRVS8DOAny6bRdLsPkx2Yec0xgI49EK/OieO5r/E5mdocLwQLGdZm9heeQ7s1sQJEIwkrjniPtRR0waxhAJAnXsRawlPBOrZNsyUv1ziBo3s0xF6KoGUtZeAAQTEqRWAfxmoigm9/fP8Q4Mqff/7ZmZwI6QiqdO0/N+vY9H5O0MqJP9J0SjOcbnlu/squkd1jObRbLEhCt8EOOqK4g9rMUTCQMjZYEjytY9E+e5JYaOLbk8IoIENTiQ38vsaPirC3Wc/HU7p4dRygVYS/FRNNWk5RZxZ0Em+T9SQTCg98FJaTB07G4RnhAXV8tqjgdjwGuJJcQjWXO4Dz5VpjOFOClmgKUayTuldtfgQgubjIrfkse+geqzM4diTtqRSS8JtMsugaZTsCBDlO14N3J46Phzw+KUwxR9u6A+3oo32rFuYfBK/7jt4dh0VxyOWyZbgZWIJWJlxrPLpFd3QpCoWgi+ehlul7nKlly9FuGieXpBvpBpi1dJ0pOJIVQZlR/Qjg1jPACQ0oI2aETaKCvfSPtFmGabo386uQrJEEXz+b0VWQisZce84pGpM53DNf4QNksWJnNH67f2rieFgvcumh4etJYQD7+CXzD/M6VWUWgzhrAIDryzUrlJb1SFBZNMbodDhe9zasX9EyWs7CWgX6P5rNhhXiHGY/vYerSssd6hZRypZ1AAUeU82fANxaVeCCAXDihImkctP/qnd6zafazLEo5w3m4zPs4WpN1iiCc4r4O9dNcXSOgpv+lc5RQDdLQBjqzEDgMyeFMaks6RaOY0+kPsvMWk8NTa3vHjUR7TgAyGhBY3jHIlUXQNzx9VLnGmoWxzqtVokysGLLcXBIP573LBPUIvEKk25xJwGpN+mAxqnlZ4BbzwDHpORYlUhCaK3QPkuj39PmNTV6riv8DHu4PvjaQco1b+pSdABGX0I5gj7J33jvYKnPnBRm9NwiOI4GEYxKnAKWoPXhp4FgVFs/9w16snMyys96ppodzOYBsDnPCMih0/zsVrHvVEKZ/EOpw8Wy9rBsF7h17EfHPc0dXAS7hQhw697znLsEGkh0CRE4arQSZeUM0fgzbW6toTsy1ah3QrAWnK4bTE0/C8AqCO6efQHc3AzpkhUry2djoychsz5v6QA/Oiksfjc+V1QB48g7H2BqvT4RzInihCWJuFnCJrkmPSnxoGsV26Y5CieTVRINoMOaqQBQqGTzx3DZs/xLMmEo8EFxf4bmLtsF1XuDbJfRUx43TpojkfApOfKeNgcn87Zl6jxzgM+dN3o1/+tra4NGPEeAM96V30nANbV+RClgEYXPieMLMzbMdcaHrFu8bHVsrFmUvBUB9rRE10uFW1qNjDrC5EfiBqXiuN1iKrpGf7+WEokyQjQHTDE7kXNsjLjjdsxyLlUfiirCCCM7tHL6yGdpbrhHFPC6t3mDuekqS9kUeYJTDuA9bT7jgHXjz48z1bw+90hgDCtRlMygTwaOqPszE8dpplPuR4WSZIoaPjuNgKxUShSOBGX7wcYRDqvACEfdgHbsw4qWBHNRhBNziTnptNYapfQZIcV5wwB0Dq+yPJn01gzFZZSAhSXI8i8An6G5IxeQCJ7kh+JxK9G5WPQjbV6raD0F69mI0/PjfuNDMon2acoP5sw9wrGyWIM9p3l+NHHcn5wUBlFY53BlWiYKDAdVp9BG/nzcJ319mNzMadQai+/R0sUIgRasc2jDcAWzX6Gb4bBZx6ACoAiKpkmvWTG4kEsEgQA+pLlrVRkdKe+1EvGMQG7Qs8caIXz2JKyPjjqlcHHSqEjBkT3uteRR7TILIill5yaKz5wkFnVzNquPl+IMFeTE8yx4TeEiE6dKy5LLXzQ6eoUaGHkLhnokpLs7vB1j0+mnR9Os9Sg7d4XWqK+IOcMx79fdURILrS6QFz5p7rdRgPz+++++EifchDWLdx8BUJvxrjavyR/grdU4/97691nQVosyhMqnmWWp2Wg0lcAhmqVPrDAeFcSJgHUFdCIYw5q5NamBQ949KnisW1Q28V7y8yJ0MmF0I1wbBgdkKkWimkk1CjQYNVGgWJXMza+lhElfikHGieTIKmeRUVkNzN8V3prIuCeSdGaO2j16zogsgcetRD8ysNgsTrZAEisfTa56NHAiQIvfAUJHIvhc2N6nQMDp69IK5aY8bqIAIDnaxnVU6oCLmkJQawA1TjKZHT3gET1YlacUkmH8LWb9YlMIxlQA2aIIR2toJv3yWHf6awc6cnAkCSHrMUbHJ8399mDNM809p6SL+xCMynQu9fFZK1HN9qWQnPcHFgMYNfssxuQZNfcUM1c7N/o89gQMQUMnOYI2zs4JAobl4LRFDsRYNg8OoRQZiw4RyJgMGoL/3klht6PnUOucdYRpcY4WAO7os3un9Dg5NOEEAM9R8mHwD8xrYe6FJlsVg+4NQYjrOrrjermGSV+KQVJf/imau6qg6vBHH7cSzR7/T2hzmsLPTK4Cnow9STCV0wIgorhukvkBRUkgo6PCiBsowdxl88R7TRRlm4dARElXFF6oKFwMB+Jk87jP4Oo7BJJxf2F9Y5FBGTOiGOuXisHOJQGSqgWkEFw6ZCnJizMLCiARBrJHMiql/zma+2hxsmozRXXNJggB/vQy5+I9aiXatisI6z7SZsjnTsJiyAUibZtjTyCMQwSSR6O564D7PKcA3kezZz8OGHyJmz9/khg3Au5hJgV4yWGVtC/unt8XrmgSR9R0llsyxmcVckYsS6aRQFDG59Ms51qJAC4yprCqRBd0XPI/TnNvNQpaijgq3PFyqSGtHmGCwPGf/zarTfeWPnn4+jKqVp9p86byLrl0nknEmb8lEyyWYBPwATqDoFZIySRRxuMiEWujbHHo0jQFMLcfaqK4PymsjDL1YCC5IoGyw+zGZ8gmguEgWJeA4Zdpv9UjKqWVjI0PJVBMsE1LUlXGmNp/Bc3NAyahJUDgsaeZEoll9vtWInu6gQbJ0zHO2vy69yHmH86pATBaxc3vzh6GdXQITBRm6beyxCumkFgKrwD9yE1m4+aMm+H4dBNF64brZcOeQCsKTR3m+bvOo3GysVQQAbf7qBUcUUaieaQLiUxgOtFxjC6FCjg6cEUOsPT4vMLxUoLTB/55mrtliCDdUFUUonmkK4KjjlOtIsX50QZu4g+1mR0tz8glkZx7ByLpPI2cIuZAkZiI4QzvMpvVctOG+IjGMAWLFmqGh2vcDAQoNJuVwe81Ubze9hhNQx8OAOp4PeK8vu+ve15mWMFLzfL6o08SzG0weit4E3Ao1r325h5iP2SEsKoCLRu+bssI30Xrf5Tm7o6R0lZBHB3bTYamk/2KP2xOeD5oiIzW+cSxUjcQTFJKV3Jp5Ql4M8/OHo4bovWZCxVPZKt2upAxr/cUN7fWuY0AIqQa9QUAzk0UGHozj37bLht6d+ytjyHWDDEJBsd9elgI+veWbQtlOYzTfYascnd1GONuNOn3ionwg+aeYWn6Z65M2GLj3iGVJLmbtNLEQ/XbbtjQcSDg6FYDKNRPsINzA99qs2KVbtyRS+c5NSwKrUVxO2IYVPfMpyMTHEoAxGxYzh8KaYyGyu5Qng/g93HzjzZRzE3iieKC3oKUMRUUKA7YWKdSWEeQamKe/QLUp0zXsp7SJzonmNT8vEEGh1+KjkmhwL+O5pasCaxmwJGjRpAgIQgDfGoDb7fbSRjSz3yCXOICUwDMn5w9rARcwQWoKLxFscqWE7vjzCImkORN3PwjTRSDznaHWboaB7YtupaOPi2NyRJxCGsYkyVki5dTKx27szh1rfqNLWNrXlABOgA2RPDt9cDYTfkczT1OB0UknLYi8AzfmzlaB2otK0uWffsqn97AZ9pMJgr4eE4Nn3t09vAILfOzqgrrbWg/F5tFohwgucbNP9JE4bmZrRv2ZuBc/QCFjqNbHBmTCrf3yMrVPA+RVcGhs3Gs7NFaAsEIHWvdQqiM7WwJoBeuohSglrlWV3ZUp/W7o7nXWUE9agTZyznAXyngfCZij6JAvRSSBxIZpWFJ3t/A8yj1szaLRkfPZ+bUvH/2cGTVhmnLkOuOV3cB+76VwX8upIj8WBOFZy0/MgcCwWVLp8HjdBFWRCXq+GKGkg43xrAvLEmespKbLXDIOL/Y8zo1p5xOKliDRhuWeYzEkcc0dxGDw/Ik88c1DkXjFjgVvbtENhDIA5jMEA28jkvVdzfwPELmrM21KPajfUgu8exhS9Cynj3cGb/zGDa3PI4+PssqpZ7oP+jkNJse/EEsBNBJ6wrvt981UbR+X4/QfaRLg0zRMJks/HTIiI5669AVUGLm+MNel5Adj97ATqHIzdWiYzJrzAqK8fq1EttnA7v7oLlv+21UCf90rTC6mXT7b2ocwvcBiLXdaoG3Bvn5l9+8pr+PWruZCWMhxLMN5LDlR9oMzJz2R3Nqzs/TK47ZAKBwySA0AKY/Z+q21hJn/aRgzunbMzZn6tZP1xGaKGPcPMmgUoIkg8SmHq3daR59/7yH+BwxDP28Zy9jTEbNtclPbLXO67QeEYxI4oBY4009rbPgtu8jghCVSLxREdMFrqGSiqO3Ng755vVttUD+8pe/uIjApUD87WZE+vTtBv7+929PtTmWQbBnOTKAN+RSzKnJJshhSebZwxRFy4bIccPCos2JnJkOFoleeppKuP9QEwV3wQnOfFZBDw7dIn9/qWXgAFqR9dEzL/J69IjN04LF9cwiG9WYSBYDqIN/AcfH5fcKNxQMIWcF9my1f17jAABf62zgHSl6d1SOhdUsgjDkbF6pQYM2xyN28D//7eu9oDzQ5u83z5bnSS599uxhCg4Ec0RsbjRNueTGaSnoWT0cM4XsH2qiKJl3793SrTA97HlsrA3BaOME1TnTEEiqtpToEKK7yXCQx9sztvcs0HApSbdrsn0O1TqjCQcKSH4BquXOxWxFIZXsYwzkyk0BaxzEjjuXnUsbzaGr7zOJgY1SyziUsLkO6fSU/o+0+fUwIM8K4kiW3ntm+nzMqFnPHuaA6fDH93V/Q7OybIqR8fV6AdOgPauEVvOo2URhvceULTrG9K5bjl1jFRIjAOuGzqZUJ/OPGSYLD4L0oXEhgAIX1iu08XuK2QbHvdES41/ZT7neb1ihxDIWI3DnZDLJ3yKIjCiBeQIM7iIWg5Q0z29Yq7DrHVIEUNDjzD+fGTsVvzs8+tlJ4m0MQIrS5prLwlpAk5nj52neEw3LsCRblQRbOVpuZNNSSFMLdavZJZxLpjqkP3wzc+/x+8+aKGKLiA3SrdCmJ53L33AoarE8aSwXNkGrDTMd2UtW/RLIIfFHIqvxh0Kk6U5NZtFGNwPPNgSWTc1B3GaGTSxPPHtc47ApgAel96WUaMtnV2utYXZUIhQix3/ewO3JSeJXFfyxRzNCCGLGt5gpY63Bkq1zaqbwRaaqGV3AqHHFqKJjzF7ivAFm3Z6ZR3c8baKgRYnSbR2LzIVWINyI0Pyy/Z1aHNbrMB9WhHkLS/87Ds7wWTIugmQ6e9K5IRiSqyUazS/XIlDZQoTMgCRwriV5mgwvDwSH0yyY3JdNB0dz7DcIyrjf+3vvqC6K44iCxLtBiAha6vXwPPo9NrAmwXDWZlHFLaWQz9UyeftxwITenz3M6Z0Bpoh48wSv3HYOXAo0EkfJxmwdGQh9NY+q9c48zpgYd00U4Rx1bJAIhYZCgkGFQ0jJZjl1iYhBkKNb8z6hqdnuKKRoPQ7R1AynW8+B1BLj7lRGCSd/Kr5LkHUQGcOvz5vBu6FuG6w3NM+KZIsGVVVB847LdhlWceYNMI6vqWC4dxduxcPdcSmA321gTPs6a3N7oOFRCSuDXELGwubrpvD3ZrYrfjyOcuNGGBCND0ACsJRmf8c89kwAjcuITVeJ7+rdRmeywEcv3XBNeWXEEcE9pKCqJjCWdBunPL7FuhVRCDiCtuAwx0vB3bCGCSDnqWeXwmgBaenswfMO9Z49ERHZvCn98tluFqFtnNhuWjg1NYoSz0fCrhfWTxt41ubDcnDj8tztaDG2bdCdyQAuZUqroK2EUvwd33tka/R1i6aJkg0W8yhZRgRZHVs0ilyTxbMsFT83UcQ5yMQTcR0EiZHtc/Tu2DYFuqOUEJFSaNZ9lIFzail9USD+SIj1DAZEBK+tZzWOn+6VQDJwTC06eAher5THzzdyG3wfZumXYJa2WwLDLQWIlcfy+++/+5rEOdf8sw5QwA0sd+iyY9VwHzlvADgDTPqlR4K2jpfhI4glQ83TtHZOB5PoBQBmCAlMPMFTStJa4micMhKQa8/UMHkEsonRPRsVUEi8wGLYNdTrnXT07FWAyJj6RcFSyRANwC1LubYayH9UOg+OIjZw27ZRRTUyhpJa++B5km2tE18sGUYAVeJ39jwcE6H1Y3/kt99+87vYcAEL581q3YaEc7qFLVLP+Bu4P2OP3/lI0FYBuXcJ87V1BA0HMFPrJU3wiJlHjC+JL3gOUFbxtjnjgH6bPntm82z8RoyOr4N0sYw6HEFRl/QNPLd3VuvwnjASZatCHMcxsQYm/mE5uPuko4vi7gS19fneg77vrdHUDKBMjFZlJsfOSldXrWMi5JI59fXETBHBtmwQ3cYdcFxcCU8H5w+tgrD+eyVQ+P476TYbi9RTAxjGXSsxQR+bx7UXiTg8vIRhKzFariaSZjEI8UMUw4SJRK3Ym2HDLAalfyfp58uGiwjeHo0Z98iE2SrYMYBbRzyuqtETuFgtqGDzvOdVpE7Pk64vtYz2uLXD+eiGBuDiUcm0aXAiQzl//fVXB4Bby+FQy1n0lNLL5XK3MXysY+H4GjfxdruNG19HxfG5s7bzeaL+a8b4jLFH2bNODQv2Mc8zlthYztRzhJDE4Ok6QreDQzE9Z/shAJlBoHWL3zOD9Rat1QnWCuv983Nrowkw5yHURPoiecYAAWiC7J7XxHOZVZcGF1kmgaap57rJIoTr873F/XePEbtr9u+WBSzDclhyNn5Mq/TXv/0f3/cDW5kFHetZgPu+v5FgSi8twDoLQCTnBCwDJKnN5+9ZhQHAOJVsy+nZvfuQ8oGYxyeDm4dHxk4gk+nLcGhvlr6T84nj3z1ZTVbZIq9TM2feWgM5+RjjLsPCUIAI9Eh8iWDgCZ7yQfBHbXSPa+L3XbYYIsVmUYJYuhvPD67t9ufni9jY3DFBPU8f4RG65ENmHUAcoWvHjmqfOEL17K/XKV98fh03S+l89lhN/f3zWQuXiJUnZJZSRj2Cw7HvR1oF5CmlHHtGIB5a+LKli1p+UxDFm1oucbxNNzRakfwFSTQOiVRtlKZFY8ulBqHE79yPNuoVTcJ9xmnduRkyj7lhwKHEE/lcYCiDyByvS7o5PkMAFxosAfexuwH9QK0XQLIGMH/jM0fo1sslkkHc/BWUcMHOPmz17Xw8A3Trn7NgyOKzYw1isJFjDj+UJUNHbb1uFeXlBc0M3155ICMTSCkiFieYHwvaZxEIr3OEsO7YSPckHhhtYicMM9dnFqNcU4uD35j1ilEIEhsyjoPJa7nWEIqiBUxedQMcETrL0FshrpuWarFoX+HYoVnJ5QCCR9AfOEK3sqTr2RGqZoa9k3JdfN8Stj3S5vNJlo/CTBITUXzCNDBGcUO8n6YrfOqRufjW2UeXdQHuY2NZu88RrrP8WgYWaMcO0RK8AtVGMJpdRzNHmcrQzZLqjcxd9Qw3zXHLw7U1a/lYTptt+8GQIsNOlSgYzdfIq5iRgmbGMAE3AE1sdtuPcdqqJaa4VgEKj76pua6exaU+flfAsbQ8CUbmsOh1wAPR6QxRcmKXJqds/W34dtLm8fwJOBKcrcRES6bJhsRyKvYsBNmqYt+zlMqyNLsHco72abaBZ4bhiFCuHXniNoBagkiS1Ma+N5RaE2vMXDrXoJaCoxlMffREvt729KN5nJ5K1gjGClTLaiqP4lQOwFzZz5p8hLhHitl6blC4t1JrxO/pslpWEInIQPsThMZB1rHlMoU35DmVghPM4/vWI3Tl559/dm7W+SGJVCE5NtUxTO566rc74NagdUOFRfmSGQSGDqYd75H/SkxASKHSBfjoqo3j6MosEUsBOloDrMeIeJGcqRfghyRNVO7Qz4aVuVYiZQIzA6TcC9zo+ElwSD+eEtzz4MtS2MM/UfmWM3l9WBHMzcDkBBwBbI+jj5kDw0IJCSr2EQR5FWcn72FNaD7y3zxC1/xzR+iyprL+9W//JwCCPj5C9d///T8AOF4uk6ECwqe1PBghLx3eYr69gNM0BZ4Joi4+41MIXi51FIAMy0AsMZI/eZ4O45gEPz01pmSCRVSxtx5TM3gfJX8/NwCCpXZ/FnG4axxMXWosIMvAwYqjFITUYsg8H9HTv9c6p6gJkEU1MlLKJc2+Y/IHln7ZM8HTkKSVCEQm4ymi6faC2v4pJ36Tev/9738MjQd+/Ajd+qeffkpNw3hyPUL1+23HTy9xmMPc7JBOzhWIXACncBMhhxncCv0ncEugdt2CaInjXWyArbvJnx6Idd950kg0RfAI+KBbw2KIzyNe3cMX9/SxPXMhZcTiGJq8/n8IL9NtWUQCj94CpARhvr8ZMnQe34gE4cN6SYLPnhaIxaxAZhl9Nt1GFIABAJnFjBBYExgDJoqr5ntU8O9/+il/mn0MnKgmnztC9+V6GUiXtXDrEarWG1zf7/P7kqiSsX+cHnrfLBJDHaL169YCWFaNtq/WDV83xQ2OsnTnOqLcq0UIMLQAHl1AqBsIt8K1WNb5hTAWjfP7vlwrdmPyWJPAasM0j2lgPcvZnYWlGIWbrEwWyBhg8LoHTqjpcl73PtwjshhkYJB0eUXZK5iho+WEMymZyhZULXDNOQDgfMZMrbtj73FdG4DDBP/2UoY0c/7AYGyXIpAzUAcA+fPPf/H3jlCN387SL762+vJTn99K456bRdx9sHXdHFJqYsoM0ZyHHM4Ss1rK03KuwpO08loBiQ20SBSRM9+iYOFNoaXCMkOYQqqxoO/hAR779ggnMEsZSaVpN7pRwRKDWBuv3hoiuiobLnn20ehRgGSjDDdPIFk2zkKZqj5IKYEMNzJczIJA4ismSdXNUaNSNuvw8rK2PBKFZiiozcUE+vt9fuQWuIhPW7/aPj7fDagiI82qWqHi2cr8uJxLkdVMvWNLvkJF0DWpZwKMnLO3FlpehDP/wnKEACkuFdhbmPH4Leb7Z/n3I5zQE+V/vdZoJk0/M0vIOC2lo2uFeMe3PTb+ul3h1vDo7KOQV6awO142icJPibKzw7LkPFPtklZc8pow/h9g1xQHVpsjBOCjI1R5IRSCd/v8fJqdlR8Q+bj1q+UiBnJN1G/RJfyonMslXM9W66CLw02l+xjHzAUQiLat+PctNepRWMeZ/8AMB2PwYpSpxxkF9zhhFJQ28uxhM1lCZi44XDP8i+HNP70omklsfOYa4kvn2Ud8FGUNpYzoaNNsHi1L93R+7rNH6Fbzj49QLbUO1/CZPj8tZTCGP9r6pQ5wtoQAQKlgSvdcztU60PLEjPdKu2vJKmaJlGl3H8Ogv1wvM6xb8vixkHNauQrLydOHx92HwHSPPj53lFIHP09rZsg0tBMcC/r+GsfNm+HLy0tYuQEIMwZMIS1Ci1TAwzALgpvgvL9Y2gwNnfgr/xeOZ0fo1kCFjveOUPX8ks/2+X3fD7Ao4R9p/dp0MnYcb9Z6T0IDkKLYGyLGhy9nCCu2ougOFHc0AAUCLVllK5o8hn0irGNzyttw8FoVe7ckfIAtj47nMIjX3iMRk2Y5lKhk/V+ItlxeUthqQCyJBtN002lBiHZS2ZA5BYqfBIm21his+OulziwiH+cjdGv8CEY93KMTpqK75eMhUtxsl4Kv1zoig/UCNpRxS29bv9K35fvZ+hWbG5zA3/+4RTq2lDel3WaCHY7j6A/ZNeY47xpP8Cys80koGQFwnnTKE1Brxd4aikTen3WLF/IRBuyt4TiigDVm9fB+0pIVxZVV56IQNoFirk24BolMomfF9iiCfX5IZp4+f28dgDxAIq3N//dfv/ibI1RPJ0zRBXy2z6/Z/2Dr1xLrzmxkxMSXLUrHHrFrRcO19R5ZS/INrAVA+sRxb+64ZfXQEr6PAlFm67bCCqgabJyH2a/iuB32qWaUKtOKft+jde3Z2UciMvL6UeousN5m7gJcR4CjcLq/tQ5AzCasR/t4tny5KBaE8qTPj0OhApkezf7HWr+iWYNZMx8kC/vxSHTcs2vIDdtinpAznA1+IhbcYIgeSRWEiReFegyAvFbg1kOw2BxScnT+ecLpntHXZ5pRdpagpfF57+wjcvuS1DZSKZ8dktld3j1Ct17qx7PlgyeRT/f5HX2eZr22fmmGH0TMjNKmv0+rkShXgTgBI2cC9ETnpWSBRIoAy9ZoLkU5o48IPMa0V3FAPIZAJA65FkfzjNEz/dw9aOGtsCwtK3eSMAoNiny7ZyDDqaRAfIcCP9CMEt9ByziiC26wnoZCplXZriSAJFlav9tkSODsi1b0ZCTPR+jWUOz3Z8tP0xzadHnSGcTN/rppjDtJLSaJQfP0z7Z+dQNEl165tNEjhORvFYW1Y1gyk4IqftfJAxFc8u/jdoMT7et64EO8FjULGhM50qUG+LqfSsqO4uHaPmhGYRg+mDq+Brx79hH6MUJkEcwilHzPOj286BjihKIxji4yqUkBA3g6Wz42P0M8pDnL5571+dWC//HWr7nx8b2PRqXvZctpG9RujJJxILOZNg91MLORs3904EMtZRwk+WwqKa1FXHPcF6OXczOKOVeJDx8h8EdDIY/mKDotH6XS8fEhmZbPxalhy4I9mi3/7bDhoD7T51cLJ2z/z7V+XcqSr2Dy5cHNAh5cgcaETiip5Rj5ej7UARblZo8OfACC1/94KmkKT3Y5t0xTsxmlsNM3o59SKgr6KHChpQQ+Hgp5y6HVwASKjo+nh/NYoopFwygdQ8oyAVQ0JIou4aM+v5UbmAmIf23rF0uuhpQ78Nrub5a+UoSVOOxjCEGPIMLvDnVg1kziBnMectQvXFKD+yemkq4mm4dBvVTeS7x/neOrwwgwpJ3WjGv2aCjkSxXc2iL4qYmO4FUePiSnh5sFFSwSY8mH+T3NlifpQztMoX/W53cuEXtUEub+j7d+eevogqHqq5QvP4vPdAp7P4YzAiKBEodmxz1ztOxFHd0kp31UvDeVlFNIzib72Rxf8gIjMzhXLl774Oyjh0CRaD8VR4YAUcAlLYCEob3UnIgpy2x5KC4y0eNn+/zWA6T53KPWL5FE52XLYpAQtZetPm39GpKOx1Ie/lhGfcN7ncKao2iL5+ELyeFXBzzTyl9rDMgIKjk3UATmFa/H46mkFtXquOhbk/1ojm/rcTL4P3r2ES3bI6D40fRw+V9//pVjFcfCAIIqPQ8vXMaTnTT5WZ/fDMvutf/eJczXPtv61UwY3UDknknk908pz5tmP0B2Cq8ki7vjtu+w3GCRiE6um0KS3r1mfR83n2aYIVv4ddYj3qfFL1nKHb17hGcYG7i+9/ttTx9+PvtIRtGuCo/OkVHnuM4F2hTD6oQALMrmS2FLCo+IQP78y2/uHvTi0QwvG0eWCS6a7UTl/hRQ/v3WrD8y9XOTebNrzcAstb5v/XLHXevX633bwVjHkPIld6B61yg5il2GacQIvwDgdttDYKAoqglge0wgTbfCCZ5I5D7NcFxseMN3ZvPm9RoVdwgwwDKtf8XZRylvT6wO7qwOo6hK334p8cd6x7VWBi+QzBqpzU6fVRDWf69VLqSG7zdsov7w+TFDx/zU+pVWyMzwbZ+a6+vfn/CtSCtCruDhxFCwTmiGZtEbaYPd0+wS4tBqofQtZtifzOZtNi3cw+Pq/V939tEYZ4N7oPje9PAahyBphoDxhqmJM/7vSxnTedPPpv38PN/bEx1vtaC7g3UTrHujZPbsxzc3fL0UPHq851sPc7xUjbSyTvP+aGJoMGIkn+K7jx4TPwscrbdE+I7Xbqhi2Jvjs0fQ8YRTg5xvAAdLxi0EbJi//J4fPfvoWuWHD8msntOjVTpemwzpXYs/i0qMLztZgdXMr5s+NtvmMIm853dbv1rv0Y4tAiBTxJgj6d8LhzhyLdj8TPRkVRPHwIu8nRi61dAq1QLAoIgzEs8p8WAwY9rHJmQwVzP8djxb74aCyXrWO4ziWb/oc3bgP3n20dHsh6eH194NXyqwd/nwkAfq+NpFRPN2tgAijH/nhO+txPzgZ61f4pap07eP98Ihg2Bv97+/pjy3yuPcwnQWmwUfKHFKt7u/mxIHAM3DsVVn+Zmlhh/d0MfsQEdRw7Xes54s+lyROK/J3bCpwzNq+dGzj15vewy07j92SKb88ssvTjAGDilcFn0t/mR4R+1hadjwK1wo1TmTzmfq1xfihGYJQF4wRnXtGgZdtjrCoSi+TMFJMWHUAEekUvm+JeXp1geaXyeGmlzG6x+lxPlwMKvnOFCiACX/P8BgTOriuTws4ORJpzF6xoZ2VgWO7qEcXKvEH6STKaxj41f3C+Aw4E/XUMrvO6udHwPFqZ3h9v8f6RnNvGU3etQAAAAASUVORK5CYII=" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_4", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_0_17dd05d5fab241209a5df4833ec53216_wall_5", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_1_d701bce81576499499f52dd694cb912b_f", - "url": "data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABlzklEQVR4nM3955IdV5amDT5bu/sRERAks6q620bY2FzCXMTcyNzzfPO1qExmJkGEOMLdt54fy+MQIARBZlZ30wxGgIxARLhvsda7XqH+3/+v/0/XymAU7Mc7jDMoCm2aaMZR05WcVmpvpA7j8S3EQm0dOqRc8d6h8kotF2otaKV4+UcpRWsNFLgQAEjLSu+dXiuUhgKMhpgrzgWwBuhoY9EuoPyIUZrWAWXoKNLlPYGG8hazVtzdgdphfv8TRjtq74xhwDiDPt5x3O9YzzOPf/sL83oltYKyGrTi/tVbtLXs9q/QvfHw/icMChNhP3nCq3vWXHn665/pXdGA14d77u7uGL//HmMtj+/e8df/9v+l9gZW0yu02gjOoZVifPWa3f0d5eEJ1SylK8Zh5Hp+YDWd6f4Nz0/vWM/PmGAxSlPWldIqTVt2h9fUkug5cr2cGFxAoRi9Zf/2e/SwJz490tZEa7CmK0qBGz2v//RvPGeFfv9XLpczu90dNSfOdUVrFMF5gtsR80xKK/O6UmtjFyytdvkBhomaE600ijXgDLZfuPNdXpaCellQKNh+GWMwRmOspb0siNbxLqC6LCBnPaMboYGzFrc7UmqRD+4d1TrGWCqKjiKmDHRCmAjOMxRNcI5pHPHDAB1aKzjjUDQG6znu75jGPdMw0GrD+4C1Fq01h/0BawwpJy7LzJoTwTomBkrNzOtCKhnj3O1zjLHEnKFr9rsJqLRWsNYyDo7zfKGWSmuN0iq9ywZQWtG0ptMwWvF8eqDUiHYO6yqH/Q6loNdOKxVnHBrQveGcxhlNbwVjDCiFNZbaOjkXem/kWqm1ssSzfD2l0R1iKfieIQxMYcfl+sRpPUGu2GtfuAv3aGVRKpDSha46znk6oLVGNnDnbn+kKo3WWl5ga3TVufOVpAxLrfRWKUle4DSOdC3fiPMBaqMBrVZqLfKDaoW2luPuntoKxVh07WDkQZec6DGinQelMIrbglPVkHJkP3mMVuja0FrRuyKVyH68Z7/bM+4mjLVce0fpDr0zDAPGWSrQgb6dVLEWdGv8fP2ZnR1IOWNTZfCa4AMpFbQJTMPIsq4o1PYsKs5bni4nXPCoKvug1oo3CqMVMVZizp/s0rv7CYXGGM0QBtYU6R2UMlilaUq+htKa2qG2RrAaBWilKbmgsyy4lGY6oNAEP2CsodYuJ2CDx+dncinbCdiwh/2B5BtTNaQUKUWxnwKKypotHXDWUXMBNMZr0BarFbVr5vlCLQM6F1wYua4zqkNXndIK1jg6jVY7nY4CWi3QQKMxWtM1LCWTc6EuDygUNUbKuuKHEaMaSoG1CqMdx1J4bFe0HrddWlFlh3Gys2vtKKU/2qVLXG671JvOT6dntDMcDve01nDGglKUXDC1cjftyGtBG0MpFa0VNng0ltwU3nmMsTw/PJF6IZXGeVlRzjF6T+9Q5hWrf9mlPsgupVbWNKO0XEG9d0pT1K6gd/ZeFlcuhSEMlNbJBWoFqy122mO6QnW5YpU2hMHTUiBfQaOwtxNwZNjfMY0DOjfebydgK9A16AboOWOtQ2t1O/ag41SnPD1yff9MLxVVG7vBsxssx8lBbQSjsKqzxgvn+IxqHVSn9UqrlV4bztpttSqM0vTeMUozeEdwTo69Vmi9yu+3fysNJa3kFNnZxjgMuLxwXa7YaIGGNoqUMzFV0LJLrbEENzINu8/u0vOy4ILH+xHvHMYYWi5opTHKypGAku8FJadgV2ht5O/eXjCt8Jcf/8zD84k5zTQ6xlqM1jhr0OrjXVq2Xbpuu7S0Sq6VXNhqoobaaqMpDDjrSKUyuIA3Fui361F15IrVmt0uUFsnFTlRQU7A4Ab2uz2H3YT3nvpyAiIn4H63R2tt2O3eEtPy2QfqX7/BjY6eNK1knNFY56AjO3vYUdcEGAYz0HqTF6wNxlgAWu0E77Fao1Gs64JRDoUhl44zjtYavTdKLXSlYPtljUXHmZwLWquP7rnTfKK3/skuHfyAUhrvPN4Fnh+euFyXj3fpuMNZx/VyxmqD7qBqZ/Ae7wNKG8b9DkXHaKlLdVcY41HKoq3nfL1QasYYS8qFrayh1YbFMA7yfSilb7s0jAG1lUnGGBqdnDMdRSsFWscoRSt1+1xDLAVjHVoZBj8CGhU8zlhyrfSGPAfrGMy31ymn+Yw+cCSnlet8YVnnTx6oy4lAQCnN6+kNwSqsanht6LWyPv6MswajFU3KdOiyazrQWqN1aK3Tu+b59IzGcI0zg98xDXuc9VjrZLH0hlLy+b/eQXFNn+ygf3SXWjRpWQnW47QmOIvVmlwLaVuUf6SAe3mBPni0teQcP9qllYY2GmctWmloDWpFI8/KGINCYY1BebjOF4bgUb1jtSLHlTnOQOf5utCU5nDY/e4T0C7rhd4bRilSKVhjPnmg2mi0NfQO9ecLT3nl/k9vUbs9Lb0nl0JrDaM1uYI2CqvlISst9zytc7k844yj0zHWcJ7P3O3vqa0yDSMxJYwxcgID1tgv3nMdMFp2kN7aSGugdIUyjt6V7NLzA8V0/Gd2abAebTwGRVpXRjdgjSGi6UpTW0ap/ocKuLWsjD4whEDtHcYdyzyjrcM5j+sday2tdVTKcqJ2WezWOIzWLOlCLpngJgbv5GX2SuqFwVhyztTWcPOFZCzD6/vfXafoUgupJNYcya3S6N907M3XdHug5+WKM1Y+TylyLfTeb7tX0bleTxgMTjuCHRjDnuPhFWtaOUxHnHbspx3BOpzZ7s+v3HMvO+gfabNedmmvDQ3M8xmllPxdRr7G19qsLxVwqit6baSUMNpxtzti9PYp2sgpqSDnRKuVkiOGSu9FDoImX6v0SmmV0gRbQFW6MwzKUYz8vE7bP3wC9lyxpUpfXbe7u7SK0/qjB6pbw2jL8+kBWkQPu9sDjZdnVBCwQ6GoXU4ClOzQJa44o9ForDKoDsf9Pd9/9wO1FNZl4en8wOu7e0pr9FapSlFrpbeOM5aY40f33Ic76Bovf7jN+twuPS0R6xw9z5Te8V9os2qr0BW5gPmwgGtSwMUYUShaV8zLFaYJ6wVYM6Nj7HBZ4u0UuPz8nvHt9yh1Ip7OVIq0vcaSa6c2sNZQciXrjkJRSsO4P34CamcFtPuw6q61fnLsXZcr58szl/mJa1zwrn/0QHtr0MEah3cB7wPeBdacMErRm2IfdlhlOe7vOB5fsd/f8f33f2I37fDO8+e//bj1vhaDxmiLNeaTe+7XOyiE4Z++S+flLOCPsX+4gAtbS/olYK1ivngKaIUsSCUnhteaUvO2KSqtVeKy/sNAU5sTuvb6SdX9Rx5ozIVOx1nppy/LZdsR8sVqrnz/5gcO+3u+e/sdRhtKbHg34J1AxM+XJ6kZjJWHVyK9d2prKK2JKTONgcFaBBcGevvjbZaxaPQvu1RprPcMw8gQBrRWX71+vlbADWErbHv5BFhTQHITRunbz0BvlFql3VNyDbTeaDSUURtUXii1kdYIJf9DG7ZX6bi0UuqLVffveaACamhB09IKsP0dGTb49zi95vs3fyLGzPl0Ia4LuWVSziilKK3xcHpAKcV1udC2AlAr8EaxGyytF1SrqK5QTb621f8xu3Qcpk/aLOekzfTO463/pIBz1uGtZQxB5iu7PffHezSVNXc6YGtBxwtjcB/9DDkWlDL0Bnu/29q8DChq1Vhtt1MS+oaM/tENq7qi9cYGC3xQdf+BvjWEkVozvTVylVZNN6BUaIrR79gNR4yTvnXwntIK5/XEw/PD7fjqvXOc7ljiSq9yrXgjcCilYLXCGc0c5w1R7Fht0crS0bTL8k/dpYqOf333xevnawVcLIngHU+XM+s6o7SSE8VolqKoLTPXhjKG4g1aWVK6oLRjvzsyhT2DnjAo5mWRU4KOga36r/8w0GSMwTqz/VAfokuKT4+9JseT0+qTB3o6nbBWMy8z2tqXOQ7BDShteXX3lt20Zy2ZwWjAE7znr+/ekeNKTLOszHGP0grTNYMPpLKhc9YxDhPWWpalEdyINQPZNHbDILCrt3jvmZZI/cY2awyBWmfGaQ/GUL8Af79cP/sxoK6WNcUPju5+O7qLglwq3lkeH59wIdAVLClhesdaTepbh9Ea1Vo4vMYtmRhnfG00p2A4cPnprzjleBXueExnnNPorolRhkHDMGAqv9km51bJORM+PAG1ppZKsA7LGFCtYcrWv2O+WnV/7oFmk0ixkVvFNs1gAq11wjDx9tWfOB7u6Epxma84a8mlcJ7PlNp4vjzRWuXN8bWAL7VgtNnWZCWEicGP9G7o1TCEAcYDy7qyn+4I3lJqwfiAMhprLSEPRBZyTig0vRcM0j+3BlU1Wu8f7dIheHy4u+3SdJnRWuDgu7c/SPFV8+36oTd6E5g7x0LYjm5jLEZ7lF7ItXDcTcwpcb3O3IURbzUrjdLlOghWE7yn9UrRjd4KpYFXGr8fcK1zfrx8MgwqOaN3B47KE+P1d23YlxNwrhHbSyaVIvcCikbHOsfz6cTu7Q7TMhkFqn/xgarayS1JHUFnCiPaeO7v3rLfHyitSMFBJ8aF63zhdHnicjltI2PFnASFrF3hrGMMO4wx1Fox1qKGEWUUYPDDHucCp3nhePgelSPVyui0s80iYkVZ9Yd3Kb2SYsVahzMamWNqnuKM0YFapUXVykoh5gP73RG6Zo5XnHXkXukKtBbYXKkG2kiHYR1Na4a1470lZ01ZI2u50r3HDoGfumI04LT/ZBg0Gocpnbp39EWRrxdSfIKYvglousZFrv0OvBruOM+nT3ritFyxzjHYLx97qxJELdWERqO15XA4Mo0HdtOBVBK9N5x1GBQPTw88nh+otaC0FDQCF3dSyVJYKTl2vfeorsklQq24bRSth5GeNMF3SmsMfqQNjjjP0MEog3cD0DDOUEpief8TJgzfvEu7UmhjURXy8zPh/u43r59liZSaZMdhOIyBjiyqoqCWSo4rQxiovVFKQRs+QR9T6ujpDt0zbgiY715TIyxVNpI1BoaRcPeKcjmBqsRrFBDIWVTtaG1pWbqIz52Aox/QpaDv3YHrcvlqT3xu8ZOqW1tDnq9yHNIJzmO1YfIj3gW+f/U9Vluc8TjjsRjSGrnOz5ScpX9FjiJv7Law5NqptQkjJmdaK3jrUL3jrSPlijUGqy3f37+hl0ZwBm9lNuGtxSjQMlhAdYQc0jWqVF79l3/D3x9IJePsNoncdikf7FKt5TzZT0f0B9fPOB4orbKfjgzDhPOe4EeUMduOa3RV2e93QKcUQUW99xvzSdGW5UawmY39BH3EQNOFUiLLGrHWMEzhNgwKX+k+VhSoxhA8sedbi5nnmfWyYP1ALpXzPIMHq9Q2sjX2s8iVYsRoRc+RWjvT3R37t99BKx8dh6MJlK5R+yNJRoCo3vnx3Z/5bv+Gv5zeMSnD6DW9e0qvoGA0gaoKXYEzwqLQBkqtcs+aStcG5Z1UwcawLGdeDTtaA+ekbas5Y4ziEleMdQSlUapjvSfFSKkr3jtarTjv4OAp5/bZXdq0pRuPU+YPXT/rulJq5rDf0UrGKo1qlXlNWBRumm4EG9sKp6V+hD6+1AY5Cavqer2yG3bsJst17rT4+V3dekeVzP7772luZAgj+fyAd57z8xkfHFYbrqrQHPSssDklBufR2tB6I6WV2gouDOwny9MiPbHzE83mb6rGj8bw//vzf+PN8TVaOX5+/ndqqixW0TqkmhntwBiC9Kgxyy40BmsNuWSeLu84TG/opVJ0R2s4WM2aI7vDgXiR1qzTWXKkNIgpYoxBb6Po/bQjlkQtDWOy7HoFzjvWS6EP+rZL19RxTlFaxCvYD3d4OzAv5z98/awxU0uj1YYhE+4O1LQSDkfmuWJaxHioTU7a/EFtoFAYZTHaUmolp4hSGmLZKEyfr2teUNPdq92tbY05gmrk1LiUM2hpj3vO2Fw6zhqC96RSP9sTtyY95XE6flM1Ho3G2sRf3/+Nuc+EpgmHvTzA2lDKyAQuJ4zWtNp4Xq+M1pOuCWssMa6sy8Ju3DONB4KeWNPCq+OOn/76MxOAsqQsx1xtirgkBmOkXNOG2jrGOJSWKWNtmU6nliI7HajTiLk2ar1w+Nd7pmlP0JrzX99jjeb17p7HPOOtY46J0Rj6dv0sy0IYDNUa1u36qTneKu2X66fWijKe9z//hYO9wyvLoWme/I6g2kcn7UttoLpF64bSZmNDQs1ZruEvdB+X9YpSCveVtlUrw+sf/hUVV+bTGWuMxVvzmz2xG9wfOg51sWAUpmpUU8RUcK1RgN4quUPVlfvdAUXDWU3JjbvdEesDYZwIJuC1w5wrZVl47Sf++4//TX5YY9iNI7lrpv2OHhOaTq2Fp+dHwutX2NcH8t8Xdn7EW8vluuL9IJyFLDzCV8fX6HMm9MrgDO64o9XK1TbuX7+hPDySTxfY7b96/VQjpAvrdlKHKE1KkZojRzugVSIcXpPe/cx07rx6/T2rr7eT1oeJ5fREKw1jHCVXQftKo1wX2le6jzXPN9R0GOxn29bpVwvHTmFPzJff7Inv9ve/uxrX22r01hNTYjdOWGMoKdKtvh35ShViTjItVLIY97s7psMRP4yk60prheADy7rw94cfKUWGI815VG+0caQ+nkglk2vGOZmXq3KHtQUmT7xcuPz5irOeNS6CVTjPm9evGO7vibVjeifFE0PYEfuCdoY1F4GPW+X88I536d/57u4Vxz+9hmDpKbFcZjIra844t7F5taZ3MNZtX68yOSdU+d7xPsg8fzXsGLiSmN+fuHv1C/nWPLyn+QZrYvDTV7uPcRipKd5Q029pW22qCeA3e+KXajxv1fi3HIc5GzQFeqdVQaRaacIXqB2l+OjI10qzG/ccDneM44RylmsttJywxnG6Xvjb+7/IEV4LWhvWGDFaMY2BZbnS0aTSKC2itMI6qTu6UixxwfuRh9Mj1jisMbTeAY1zAT85RmN4+uln5nnGjQ7lLGupXONKLolYMvvdkVgT13kmGMuSKrl1UpXZvW4yFq4I/JqL8PhabQy7gDGG7998z8N5JpdKa7KYdZYqf37/jFJnghsYhj3jd69Y3/30VfBrTReUcjinvhk1XZaIFiaPR2khckzBA3C9CjzrrWZnj5SSKCWjpAKRajwujMMgO/2D43C9nFjjCsoQ/IALO16/+h60YS2ZrjS5lG282ai14pxnNx3xYcd0uEM7K1Mv1TCDo1P4+fSAdwOpJGqrrCmKeMQ6QKODZ0kr9E5tlVwza8o0Ol0bKvB0fYYXYAaE7IImBM9+fyC3wrouXJcL70/PdNUxBuzogco0jqQaibUyx8yaK6VDR2PDgLWG3prQ2Wuj1iIs6A6D8xz2B6bhgNKWKQSZCaxnYl6wRjqXcdgxDjucCwxhYHn3nlw7x8Md17QQwohzMsfQytDpjMOe1/evUXb4XW2rRXXOy4nwFeSq9vpN1fjfHt8R40LpScAWAnXo7I+B9THepn7Suxp67wQ3YLRBa4d1gVeHe4yyWKdpPaO0QzvNT+/eMV9OArQgL9j5sOEVAkC1hvwctVB7xxqpOVZV8R2Udez9QFxnGaQoCM7gnMdrzXy9olOl1SJ6AO0otYGW43gad8w5MowDqWRiTJAay7LQcsb2jlOW2goxRlKMQrHrMm6rrRJj5H4MpDXSlvU25FFdGL/BDzjjCGHEW08uhZiFReWd+ex1a7Vm2h1Z8spuOmCMRX9jnWaNMox+B7180hPP7zbErjvYKk9rwxer8doqa14Fim0dbT1tLjy3E6FqtJJRrNOapixsOiJjNNrIt5RzwbtCaULQfHj/RCkr83qh1YQ2Cg14L0SQkgtZJyZEENJbvU02c03oWmm1kZqMS2vt7IaJNa4yb28yUSmlkGsjzRdyLTL1rJVc2gasjFzqA1hLqg20ohZZ0EZrIXHUglVsR76i9A5Kcxh3xJyZQmAc9sQ1Ypyjty60ra7QxmGN5bg7yvVkHSlnOuC9p7VObnx03Za1stZKCAdKrzgr1L3H0xP9cqK1xtvvvv96nVY/g1yF4chkBox15JJZ85nSCqmsDBsdOaWV3RQ4Xc5crmd0k+Nu8COtNmpt1Brh7o4DgwgkKvgwEoaRYRhlRGoM3gbGsGM/HhmHHdbJ/ZxiovfCkq50Ci/D69o7pQqBorZKzpHrfAEFqQhcWluTh1uLMH2NoSlFqZVUClMYZXiSC+fzhefrmdYr5/lKaaIXqjSsNcK8UYqupZp+obJpJTSsMQiap+mo3ihVqKpWewa/RynHfrpD60FoV3Qu61WaO+1wfiKEPeN4oClDblInaWvRxtCqzFcU6nbdkitaKQa7I5eVGBOllO30WjFKxs9PDw9fRU3th8iVCo4hTNRWPylejkfH9Kd/gasMfaSzyHQMy7owM+OModTCOOxQSjM6j02NYiumB/xWP3S0wJ9dy4NyHmvkTqtdxi4lJ+briVIjMc2sKcmgSmuMkoditJY7FkNMkZITWgs0XWrBGUurlWChdkWnkfJKURbVOlMYuKxXSm+0UXO3aRjXnASmJghTp3dUbbTWb6dGbzIcM0qmqEYjBSkao438PC5szB5Q2gBQaiMog7WepZ6l/tqYQa03ci4C6267vmlBRlNeOEw7TvOZ0XhSKzgrPEwfRk6nR2KEcZSFkmsleI/WlvMaeeuHz7atcgXcH0lpga14cdZ/tngJwwGVLyzvT1xjZFlnuYu3F//rOyyuV7T3LM9PvH11j3eBXDLXWlnjQtdqI30WtOkMzuKs43y5sCwXSlppRqp5ZQwa+TddUXvGbBg4W98v4jNpv4KWu/hFoYO2pCj4OaqTq1CqvXVo3VljZKyFrhVNCQRrjSbVRqqd2suNT5dzlmO/d9ZY8EZTitQigx9AGZwfmcY9pTTWvFBKYT8dGJxBK4NzgeA81yWijMc7R22V4DzOWWpt/PjzX7nbHeXnVp2/v/8bRjusB+280O02to5zjpQKpVb20x5jhTugjWA5seTPo6a5R9RWvKjeiTFyvZ6lit3u05fiZRwD2jlpnT5TvHg3ctzdcdjdMQ07OpoSM9Z63j+/F0CjytElNDRhGO2GieCDFI5Gbx1HIvdFCI9ojLfCWELRm4hHepOp1+gHrLUYY/nh9Vv20wG6IGZUOfZAYZXefqntmijkWhjHkdw6lzXLva1lMic1g7BsWhUgpbeGt4ZShOqmEUjWKEH9tLYEPzEO01aLGHbDRMmZeT7TWiU4xzCIUqojfD6tYD86Ul5QNH589yOqd57PT+SSeXh+z5qyyOys5bwuPMVZFlcTsqj1ilITXTWMsgxhwBjNd3evuFzPpJxIOZFzJi6J9+efsQZ9K16u84rzjlTrHy5eUmvk1ui1sBt3KGMYciGmCL1jjIa0QZm1oNB47/De4qyITZflTIwzyjRa3XakFv6+UppCQ6Mw1qBejmClubs7cP35PakkuYc7iJr/F/i0VWn/Op1rXnHWc0kRO46crlf2QYQrWkOuDdvqNid5geC7qKaQxaSFZkdtAukabSg1U+a2nU6NeREModYkKGNcMQpKzbSeeDxf2A8HevcoBX9//ze8EcAI4HR+JJbI4Mfbf1NAjAuxw/3xHmU6we65lDO9wel6QivDd2+/J298jNIyg7HEy5WcE1457DTtOV/PNGAXBtAySrVac50v3N99vx2bnytehCfnnfulePngDsutcNgfySXz088Lf/np33lz/1peRGkIIWnEGEvwMhhaliu1RkovUEBbqTf0xgLOOaOVQSnhDyqNnEKt83y9ELQilyIQtvOij48ZpTXT/o7GzDVeaL2jtRZSaiu0lHjzp7c8PT1RW8N08zJzwVmpWWalKaXK/99OMWHXyA4erGdeF3IuqK2Sr1sdFcJAypFUMku8iNeAeSHjKi7rBaWPXOZnWlfc70cGP5C2zzfK0npniZE1ZZYoOI1znmVdmIZ7Hk9P5JzQWu7/0QWeTycO00Ttlbvjkcvj00fTUp1SYjeMdDqxJrzzokrNCdXhp5//KsTF2mArXkpNUuhYtylS2sZKVdwfDwTveH76q+AJPdNaxTmL1oof3/2IMQ5rPMfDPUMYb2SQ59MT87owr4vQwenkrS5RCGb/YmgxhT0hBECxphXrRIJ2mk+bOFJAKGsFBj3sJsZxT6pZ9PFFWj20wnqPdtJ17IeB2ispRVISMotWirZ5G9StnaR3em+kuGCtYbfbcVoucgTTyGVlWa9clzNLvHBdzvRWWdbLrQjLKdJKwWlwGi7XJ5a4yPBn2+klZ6xxTCHQaiXlyLxcGfwogy5lWNf1Vv0H56UQ1laYXFqzrlfuj29Yt3vfGIv3gVd3b7B3x9f8+cf/Rt++6PvnR+mhS8Zph7WBOK+8+u7tV4uX/bTDbhSup9MzrUScXXh4egBlqJugAdX5y7s/88ObH3BG7vXWGu8fHliWEzEtKKNoCqGaK+iliZ1Ml6JxCANaCRzaapY7dRyJrTP3zSHEDnyLPn6332ONkcp/mfFGE6xjWRfRHpZKNZukehyJl5NM1rQSwmWMHLmjKg3GkItA2y0XSs3SmtaG0kXmGWbgMl/xk2NeZ67rSm2dMYzbyfLxTtfaoLSFlrBK0XslaM08v+fN6/+E1YbTfKbU8lH1H7xnDAMxJ9br5Vb0hhBIvWGboraOnRfRi5VShPiBouaEt44QBoLZM017StW09ycO39+R7o4M7ZnS5Ohz1pJS5Jqlb98NgbhYHp7ekZLUE603UpHdozTsw5FlnYV92zJPzz9vyJ9CWyMSNWdppWC3kahGY1wgOHlYKUVyLv8hDiE5RprStFaAQlea0prAyttotWvNcX8k1kbpYAfPul5oRVQ9bSPxl1pRKJw1xBIZrWFZM7FE2RS8aByFJfWy02vdqHTWoDC8fvWadb4yB8137i1rjJzThdEPlCpHfIxF0NvapMovUjRflmeCD6wlE3YT2lmeHt+jL+cHnNIoq2m904qskjFMODNx/+oNx/1x69vh+acTMc40VajtyrxcBVVXmjmunOeZeZ45zRda68QSWeJMKumGsP3n7/8v5CJ9esorz6f3NDJVdSqV0gpKa9a43OYPtTR8GNlNd4Rh+sTQ4o/4+JzmsxR4m0OIUoqyzSjuph0gs/naOiklGoquZAHf393TFUDZeAYFjFToGIV1TjwRjJaNtZlmlK2A9t6ircEZQ9+wBZHGQ255WwyV2jKlFKb7O+b5TKqJ74c7ztcLKUcRg7T8UeUfvGc/TdScOZ0fuc4XSimcLyd6r5R1ucH99ppW9IYa5SrGDkoF7g/fwQZmdKUYhsA6z1zmM9VBWRJW902dYjhdzqitjphPF7xp1FLZDxPPs0jQe2/8X//0/8Aay7yuXK5PtA3pizWjrYyHX9Su5EZvwki21mOMxzpHTElwiw8MLf6Ij4+xcoUpbUgpY+24OYQkUIrDtJeeuXRiqZjWUcbw9tUPtJYYx8AcI700Ws04rTDO0prCanOr9OkCD/cu4pfWGlpr9tOBh/m9LIBetxMYvLEoDQZpRZ0xt+FNyul23w8uiPKndRRmq9U10yjdwloyxSuWh5nWwDsv2g0F1+XCukZsr020gWhar4zDHuM8426HtoFaK7UVztcrjw/vSG0BZ/G7I9lahiy9pw+aNBd6rSJISFmQt5IZ/Mh//uE/M8fI5XoG1ZnXmZgWai903TH+hRyp0MpQS94eohYShFOsMdHZfoD5IiT2/qlDyO/Rx18vZ+7v31B6vjmEtF5RVcin2jkSkOJKSws/HO+x3tOaIZa8FYyNmiNZCW17DB7TEOi6QxjdbWztjMVrS28QjOf++OrG5PEuoLSmtS54idOorgivXt+GNz+8/YElpU/QPjYQylqB0de4cDo/itagC1+w1EQuHYW0rK03rFSsMlQxartr7t5usiPpnR+fH0jrQsxX1rzg7BHbxeTpqSXKknhrPXGVlz2nJ9m1SrRs++nAw/MjzgjQUWqmUaVyV37zBRSFizHCVEmtyU5R4uTxoln4vYYWL/p4M02kX+njlVKo8otDiNIa74Sjv6ZIU4qeFjqKrsAHT984BGrrHtZcMEbTsjB6hg3somuR2dOl4+gN1WVHpxzxfc/zPFNSRGvNmldiyTgr4/jWKt4OjH7iqByXGhnDyM8P7wjj/qP7/gXto1Wu8wJd0XshxQV/HLm0tmEHbXNu0QKmobAgQEpZKjYYWs/EZSEYi+2KNS/MlxOnyxNad7pSdGWIuWJVRSmFVZX3z3/D65HrfGZ6+5YWF64P77k/iOIHINdEzPG2AMI4CbygttkAXeqQz9jIOR82dawgeAqovcrL5j/OISSljrYD2sA4jMJmKgljBEBLccVsI1ddC+saBRxCo42TLiCnzQNJrqJaBSyrqpNy2kianiWu1O166LUzOI02liUlar6isIzTgUrFKM8QLGh1q/ZLSygFl+Uk9P7Da7IXuXluldbV1mLKn1Xr2Jwyymj2w8BaEnFdOKtHxhBISUCLGK+gpALOpaBKxlhPKyI10kphxh3r0wPGjqguQNL3b/6E1obLPAtdOq6C0jUhnpoPbOTqyzfH523k1iwVf32Z1P0Dhha9dpr4f3ziEDJOwy8c/fYBRz9GlrVz7w2qa9rmWVRLQTc5+r2Vl8VW0ZcOuWQxbFRsNYBCKYGym1KULvR5EFFuyglvB5z1HA+vGIdJFMOxcnl8omEwzn5y3+uiWGP5CEh6tooJjXEW1TR5g+G3NgatFFZbcZpYa6X2SmwRUJxOjxQlgEjrv8z5rXWUUrBKiXZdC4/PaEc7HPHOCxkyV5S3WKuorVB7IeVIaQU0v9jIaYMLYoemlQA9pYuNnHcWtx1vvf5iI9davYkp/hEjxm9xCPkSR7/WQq0Zpw2Td5ulTWU3TZyfHnHGbBwJucoUaiO+GGjClxj3E9fnRzHcLFlMtrZFMg0HvAtM48jj6YQl4MJAymWz2Pv0vu99YYm/QMa1JXIH6ywpFVEQ1YQCrFZoZdGdjncG7z3aaMbg0QbOyyPLfKa2yjXOIrKwgk+rzQOo1s28wRhKBZ0T+Xpmns9bIScIoVZy5CrFf4iN3H+kQ4j+FUe/bhz93jq0jjVCvdoPjtE7jFZ462iNXwZSCGTurIyH4/lM70Vqns1ahw5GaWm/rcj0c4ks8yKbIi8y8HGKXBOn+YmUIs+nJ9b1SoqLLNIPgKRdhO4cFcE/2jY0okm9lUrCKqVvQM3myCADl95xRnNaLmJGZGXo02ULylw+nolPM8na7ZuXnVTGPTpmlnXBWYOzhlIV8Qs2cqojBpNdczo93mzkfrj/QWoMA9ZmcpVe2Sq7MW5/MaL6Z/r4fCtH3xpHr+LRo1AiDbOOyTke44nBTSijb5Sw1jJKNUTlLx6AwXlaa3L3W4Mzgd145Ol6Yj9NYuAVV9AFZeTY1k42XCqJJa6Ukrg7vObvpx/RmBuQVKaBuhRZhJvfEpvljDZSZ+jBDduY1dC7Yq1JwJuy8nR9YsnzBjjIy+q1UkpiCha0o9bCkiNrL7ed5Gexdum9EVP8yEaOjrRrm43cS0X+oY2c3Ua85/mMUpraOtMwilfAr23k/gEjxm9xCHkxyP41R193Ia3YrYBVWmO1YlnXzdBBloWzA2M4YI0XJLGzoX1dCljVaQ20stAtwY+sJfHdq++IObPElVwbNWWpXZpcd2Zb9C/Yy7vHnzaKvQBJeRjofatX7A4/7KnbwGo/7im54oxHa20JNtxeTk2VQt2OiIx4UIhoU2NwxjFNR66PDyijCeMo7NIMp7ry94d3mLuJth2PtVaZEP4vspH7Rx1C7vZHkVRrg9UGmgyHeu9bQdVIuVJK4+m6bj69lmBkZ+/HI68O91K0bXWA0YYUC3Ftwki2niFMvL5/zZJWjLakkrHacllmTtdn6BUtFfImBHXsx5Hj/o7vjm8x2uCURU+OV99/xzQFgomoeiKEiRoTwQ7gA+flyt3+Xoy46CLQMNqitBZ1bsz43Z7deCClVUiK2uCsJaqMMxVtR1SXVgagekUpGTNYHp/ese+DMGTCIGYGSh7A/2wbuX+GQ8ivDbJ7lyuwW0spBYfitKzsvKEohbYB76zIy7UAPPf7NyzxwrJeUGjcRl2zfgJlmcb9R6zeD3H+2gpr1uymQKkQ3I6qkWyCDYIPfuT13R0//fwXamg3Xae6zIQ395wu4JUnLwt+Gnj99nsuTyfsbpxIOUmBh+DWBkMmY7riMBxZc5SdbDtWCSEEDaUkAUW2I3nomrZU1GChIs7dpWzgThUbOaTF8s5/YiNXUmG/O9xs5IJ3vH/3E/N64c9/+3GbSVgBPbXIoOc4Y7T+RBD5NUOL3+sQMg1ejKit5vFn0dw367dCuFJqlYWmwDlD0APO7RiGgRA8l3lmN4jvcCtVkEKt0DrgD5oUK6U3pmFHqV1YvRt0nltmGnbkvLKWjWSjNNPkWdZ4g+C/f/OWUvsnJ5k9jLiqcEOgq87eH/Fu4jDdYatG74edaPitJ2x2bcNuJOhAr5Xh+x+4+9MPDK+OvIRBGGPI68zLP3YcUC/iS91Iy0KrVSjg1tJ7/19qI/drC7ZchOr2+PjEaZaCcUlJtARWb2ynSorx8wbZL0UdCmUNpVYmJwTUUjvWee7v73j16vXGSbDMaWbwI7vpyGF/x2HaMY0D87JIZxATy7p8wuoV9pV0ar1BzlXG2a3fIPhGuX0uavjIkcxZx+n5GZMyZs0cX7/Ff3fkx5/+THAB7bzH+c3gMQzYrRfS2jDdv/qsQWFcI7p1clwwdOI844ylWoFQR+0xRm0ImPDy/1fbyH1owfaLQ8iX1VBGKbyxGK1uBtnGqo2XIDe6tXbj9IE2mmFLLmEDXunytcYwgtYsZeHV/SuGQdJOYoqUUlnjuglJ0kdzfbddZ7yczFv/L5tJjKF611DVR5/7oSNZfLoKYKc0zg3kIu6k43Tk//jLf0VPw55p2G3iELBD+LpBIR1tDak3dDco43j73b+CMuTrSgdmMuuLlm7zG/hfbSNXa/3Igu1bHUKMMVir0XqzgR+CAFC9bdQzhd1avd7h7viKrgUBFKFqYxgnnB8wdhBMRQvzuXfNEEaccygtyOPLXN+7AFrqCJndiifwEhdSivzlp7/wt5//Jsjsrz639o6aL+gFWhABTgjTR24nZjdxfzigL9cT67qQ0oyxmxnEZlCYUvnUoFBpKbSsozeZY9cixYh1jo6SsanqMikridorxmrWOG/+Odxs5AY/8uruLYfDHWvJG9SrCN7zfDmxLjPX+cRHNnJabOS00reV/SKIzFUT3MiwiS0O+1cMw2EjnvrNoCJtn2s4TJMUY1akYi8+PrnKdFGIHUIG7UBGcV2XW0uqW8Nb+ZnKNvR5dXzDmtYbWni6XNgNoxBiUTIFzUXCMlA3gAfdPzvX987SUHjvSTnz89N7vPGSHVQT+0kKyJfPvTcHdv6e1iGoie9ef4+1A8Za3DBuXESLH/bY+/09x13b/PgV8eEdrRYMQp0OHxgUrjmzvxt5cRazSmOb4bquOCc9vVNQlSKvq7Q81jKvV3qSOfj/DjZyKSe6qhx2O1JZKUXg6Q99fJaS0dZtuEeloUQStvX8MUeRtCkI3rIsUXiVMeGD57g7cJ4vxFw35261EUw9a4qEwd+INb8GeH6N8w/dUNTw2eKw5cz7x7+iMegGS1zovUoruXEGvma2ZUvveO+kMFoSgx8pdRWq0pZW9aFBYZPbDacNYsXRMEqO45eWUCkZ3RqFsHuNpf9vZiP3Wz4+nc68LsIDjJFunUwSu7qdiMsys/eBXppYteRMzhUVhDo+hB3L+oRCMYSBN/evOF8upA5xXdBeiCi9dbrWWKPo7VOcf43LRy+UD4rDkq8MYWIadzxfzgxh02N8UEtc14jWlp37VN5vjZMPbqYz+MDl6UlcuNTn06psV5RW0Q0RRwYrNUMpMsrtEnfmnWOOiyRYOEeq+X9LG7kv+fjUKgu5pMwcC157chEZe+4dqpyAOZdbERucp9VOKwXTNU/nK68P9+LW0aDESG+FnBZqi1jMBvCI+YQLIxoNTUgmLxzLx9MD98c3nyeBDLvPYggxxU84A3MDr3+R9+fTBVtLoZTK0/mB0/kZ3Tu5VQb3+bSq0jtWaaFHI8eVto4UV14wWKUU17iKGUEXFw5VC9T+kY1czBkQTpxFc12Xm41cRcAWa6xMHr9gI2e0+d3GFV/08SkVbzVLBGcMuSAPOHjWF8KpUgRjKdvkzltHTpnD8U6GLFqxXlcGYwl+IOYrHaGz5VLISdQ5a5zxg5xK1g1fBHhKSQx+9wnp84UE4nT4IoYgtYRwBlTNZAyv93ecnp8Yph3ZG/S6zqzrlYfn91htpSpV9rNpVTZ4EUnoLbxgS7O4ETGV3tSsBe88ShuMEi3cEEZGFzhME4PVNxs5XRtljTw9vWO+PjN6mUgOXo5Ao4UNpNAScOkHduMkzlk5/y7jCmMU64uNnB+Yxolp2mONp6M+spEb93vZ7TlBbxyngFUdrUUj4LTAyPvdgWEYuMwzp9OZmiuH457eDM/zI7VL4TzHmTXJws5tM3WOi3D7jSYMYQN4hJQyz5cbzv+l4tASv4ohXOYrpWZ248QwHfDO8vP7R4KdREvQK3aNMzlXvnv9PafrBa06qgoWHkthtA6dhepVYsGPhq4ctS5yBP4qzUJ1YPPAMRtm3wFjrdClukzolnUmpsK8Ljxd3kNv2A9s5HIvqA5NVXqXnnoc9kzTjt6FZmUU/6E2cq1muhI8w/aJITjqrGgoWhW3ELOxfnqHeZUi9rifeH/+q5BMjcTg9iZFcNmkabV3XLd4P9CVYfQj1rrtYz7mWPovFIelCHOqNdEgOs9nrwlvHFkVfIGH5Uppjfu3b8h5QS9xJrfEj+/+nZJWvBZ5sTUGrT9OqzIN1jmCki/ixwNlyxB6AYuM1sRlZU3iftFVw1ph9hjv8UY8+J/mR5Zy5rKeaK0Qt9HmnBbaFonSt/bLahljjrsdIYSNPazJNRNzEr8ga27GFafzidoznfqJIFIEqQh3/mYjZza4WvTFLzZyeps56K0OKVUxjXuCFzVTrkJfF7+jjSyTMn/921/FkEmb7YqTeYC1ehPAWoLbVEtNMY0HqoKmO2uKN4BHIZ5BH4JA+3GHN46k67djCMj4+q8//41rvFJ65Xy9yLM8Ho7My0JsEec9tVcJdLSSAzR4h18TvQtLdjSe1g3D4TVrvDAMA/HpAZqARaU3as7SqpS0gceAlhiY3KX6npeZ0+VZToKSMFbTtxn8mgRQemEvhWHEhXBz1fLbD916+03jiiXONBq5ZKb9DqU1WitqLTyenpiXeeMYboxdK+wZ1Tri2mqIS6R1IZSo7UoyxpFSZp5nemsYbfj+9RvGcdgQ6EZOkRRXShYkzgDLcqF3OOx23B2O226WmqbXyo8//Q90r6QtMBPabfonxaGQQPLz+ZsxhL+++xvreqX2graaWBZqW3l8eo89X88sbWUf9ixtwRaZ+jlrsdqijOFqmnDetCW3zOAda8oMbqCajm1Qu4W6sOZEoTA4eRAGWb1KaWKN8hDWWexdekE7TYvi+lEBtqJPfH71Rjez3E1HegWlxCBCNY3BUFvh7vAKav/YuOIzahhFZ5mvN9XOvFypdRTYVIkotuXKiw7phbPQuyCBWmlM7by5O/Dvf/+bXJPxSj813u7/jZQWvNJYOzCXFVUrvRa6sYDY7ATjOC8XyirDphACSjlSLjydfqbWwn/9839lN0iIduufLw7H4L4JQ9BFRnU/n58I48ByuYrP8yZvt+friZIzg/YUOkVXTJeBjVWWv/z3/5P7u9ebmlXfFoU1DaUtXTcwhlIiFcG+hdApJAdV2bxrIMXMGmWyaJxjzYkGGKPoGrqSAlJrcfjuDULYyeBvo5L13jnNl60wTezHiVwiLTbKbGm6k1cJwmy9k1LksNtT1oXhcBCtQpLvoW8ngzVSvCrtSDFjvScMEyoJkcSFkYeHBzlOU2b96a/UpljyCq0yHu5YtCEtM54m86fcyW0zaFCG4IJIw+JKaQ1vLZMLm5l05eEsmsymYD9K1f/dmz+J1+Gvpn+9FlLsOO85XSKH3fhFDOF0foQup0uaK34UCx/JIOzYUiSUOZOxWrjxOWeWpwv7ww6jpd1o25lslRW7E2+Y5zPdaoJ3G4dfbUidzPa1FgvaWgvKWvEdoIO1xFKoiK6wN6FbSSehJMbVyMvW2qG0E+cwK8xWtLhvGuO3+7nTYkTVQKmdOa5y9H9BDVNbFZNKbXh4+hlr5LozWmN2O7AOSqEuM70pVFoZ7+82SnkX67kurXHrndYKKSVUb8yrWOXoLkOGWjLKdNZYac3LqLlkcu4UDUYHfn56EGDs+IowjLQq2sKYEm/uXrPEC6vttHRFqXq789UHreEY3GcxhBQXalcMfiSmhSkE5pzRdK7XJ2zXnZgKo5aA53IRxwmjNc+nE9BYrheG/Q6yTL4CA0YjEGuyVC25vlobvBWfemPFaKH1hveW2sUQKsWV0rKAiMYIqoWS7qDUG8Rcc0ahUdpSW2VeZ3bTKAiXksWYckQ1xbxeMcYwjQ4dPKXUr6phekcIoVXo42obW2slqpzRedCGUjvrsuCUFihXbbl9NaO1ldxgJR1BLYWekwy+UsRqOZKtcTKwUYpWC8E4rEJo40mJ8sd7lPYSeTOOxCiq4GmYSHmByTL//DO1dqzRWCdMbrnzRR+QmmLy4RMM4e7wmoeHv9FVJRjN6eFBRvhG4+2Inter3NG1sc5XastSNTZx43hxv8jzzJpWUpEBh1Ji7zb4AZ8R4MHt6EgbF3vGIA90XSLGOlAi4eqAc47gHcbIDKFtoJLTBtUV3nqmsMO7ILS03onrSslRzCVzJK5XLvOZUiLX5Sr8fqXxTsbOCBMQo9XGdhJ6dqfxknDOZhj5EnypmuD5gmwKv39OEWdf+IxiAtW2odULBtLZspO7uH+X1uQltyy8h16JaSVuHIYXGzmtNW9ffc84BrrSLKv4+w4aVKtbF/HL1FD0m9z4AS93/m6c0N5+giG8e/zpl/H3xtCy2qCVIs9X7OBHUa0KC0L+x+ZzZ62Wlqk31lwxJWEOd1IRV2hWsV7PaBvYv3rLvMz4MOKMZ8KTt3u81/bRxDBVMZbKraI3T37TBazRDVrZbNa8E61erSxl5bqsGC0K3lJFBfNCMetNLGnpAuh8TQ0D+pMFXuomXcfRtRBRNY1Oo2zOpMYojPcbH0CEn1ZLBR6cYY2NUrKcCE24gX27IpQShVNuFYrGOUdX4pBmnONf77/n4fSI6hVLF/6iNqCU/N0fVPwxNcZgP7nzFZ2/Xh6ZgiHNhWAsxgVMV8zxKhS4Dxha1Siss5bTuvChWEBthJCXe7H3tq36Rk2Ja7wSwgGXQbkBVOc6XxiHgcv1IkIS31F5u8dr/WRimGsVxYoRXWAt9QYxO6MZ/BFtvFCikbHzsjmZiYePTOJKlz+LlX4laEX9DTXMFxe4Ahu8pJW1CiWh6JKhrDq5REwXkEtKIi20MhfY6ELbuEkIsaWJ3lJrC11h0ORWqarjlCiIOwICKdXYjzvmdZYap/xiA/fh1LCLJp28BT+e5if2w5FzTsS0sJsCTw8ncpU6xWl50Vpt9ZW1lJiJueCVwV5XsS7xdtOxlSS+db0hdPIif1adpiprW7HvI+FfRnCGrsA0wQuuy/k2D9i1wKXLfR+0/+zEUIAY6EVs4mlizCgf2llWcb4Yg99atryxa2VHo0UXKPpEYRevKUOpX1XDfG2Bm9oZR2Htyg633O3vxAjDbFTs7WHK7u6UlHBWkzUoa+lbPybu54KE6m1BHMY7tLZM48gQAqUIA7tWWchT8KzL/JENnEqamvJGpAXtxCPpQ33A62EkDhPvHv7Gfuex7o3kC9aVeZnpqqKt4udc8bVRXRXzDWcswflNZi2oFh+IRXrfzBE3XkBKhXG4k4QKRLpVdaVZjc4amlilPC+PcmxqfVME/XpiqLWi5QS9Y529QcwpJ9YUyUUgzcfLhd42li9yAkvsqXQQTcEwBAG9WhNJFpsaJtffvcB9c0JlU40lLwx5ReUA1lBKo1JxJkihCTQ6KeVN92/YHfakKA4fdFmspSXpnnTHB4dxGmU0JUee52cRntatcNWdtC4oraWj2NC8Xn8ZG0uBKa2fAlLr/PjwV/7lzfekHIlZOoh3Dz9+NP6+3++4Hkf6aRGbu9FNeDt+JBb4tViEFxlYrfTeOS8zKV5/aQ21vc0D2IqpXZgINnw0MSy1fzQxlCy+iuJjiLn0SqoFZTXWWYwVRVLbzBVeiqglxo3BJG2isx6tNENwH6lhdmEU3rzdNHy/WuCS9inoZUriugEipbLGcL6cBZVsfeswtkXsBoaww3mxnbXO3+xgjBKjaTGubtu14HHOc9jvOe72hC2nOJdKKQVvLc44nA4byLRwuV6ERdUruQGtbgIX4Qx+f/eKH978gGri1fgy/n51vOecLx+Nv7UyrDFTlEMZMaO0a068vvsOeuFub1iWBa2ttD5t3a62vlmYiDhzuNthKmQTb61hqWo7+l78OhulV2kpmyRVlA9OiLZJxnXrW8UMyjiGw2uW55/xzmxo4QuhdFPrbndva53RT+JPPOzoqpJSYRpGWtMoI3fd6Ce6UjirOV3POCOmEa2/vEzh59fWAXFLr1uNME57WinUF3mZV0zjQNndSamvFIfxnlQSDbd5Bxd6AaMd9JXgBpwXL2TvAz6M7KeDUOZqw2lLKiu1NNay3mRzez9yvjyxn44s60JXjmkYeHh+4M3dkVLB9QC1ss4XivqVkXSpBDztM+PvfjrxZv+K98Vh745vtrtpz2F0XJ5OnK/XT8QiImQ0wmvrDWsMz5dnpmFCDw6rFKm9WKpV0kYiNMZ+OjG80cs1pUOJid3xQBg8znvycgI6Fi0cQQ3oTmkF3dRWzElbJ2EJq5g3NJnjLzXhw0hbM39kgXelUbpTa4ZW0TaQm3AWxiHQ9/e0nNBaWsC7YeKKDK6MG8Vyt2Qxf+7t5v8/bHm99L4ZZ8KyXIlxpdeCRm8HpKZ2sbnNNdGSeAqlnLg7Hrmuhf24EyxkKxbHYbjF2JB/6SBu42/1S4qajZHLfGV/GLG1VaYwkWvm1fQWW2V3fU4s0nuhlIzrnawar+7eiKiyNWoXF9BeiwA+KW+UbZFulZrhA3p5SQVjDWjNMMl0zVpLbl0yhpQFZWhFZv4vEHNrDaOkc/CbL/ESr/SmOOx3XGOSRaYs43CQY/kPLPBhGLieooxjvcwKxHm2cHf3FpUipVbWLH19GEeer8/srKdrmRLufEBpgzeB4EV7UVvjdD4RnON8vbCuMzFFziUxjg56Z00JpR3WeVpfmYadWOV8APwUmgQ/bsVi31zNdOsfGUl/bfytcsIex70EKCnNebmyc4H9sOPcEMdJFyi1EPNCR8yVnbEEI/fsYXfgOS3yZxq5aYErN88hkXALvXxeC6o18iq2KLWLQTTaMIwTsVYa0pt3zWchZmWED+dswGwSr924w48Dp8uVsD/I+FoZhkFoIjHF373Aexc3lFIquuaNDQStWUqT0KXdGCitkdYZP00cdkfycsEqSR1traNaEw+kjcHcldjlndaFdV0obaWUVSLjUhPrGS1U7lYFUS2loMZKr+qjYc+8nD8qFg9hYI3rRx3E7vCa6/WZlxS11oSBNJmBJc/Y07Lwp2lEKUtplXfndyLGLAnTLD4MxPlZkLwuSFoqhdDk5Z4uD/hhR31+Znz1llpm6BaUMFPnvEKyKCeDpBcotyuhdpcG0zCII3etdNVvPIBaPoWYZeIn4cilZKZpJ5BwVbx584buPEPw9FTxuQDiRfB7F3gu4kZSaTduQCxgdWV0npYE2ArO306pZb3S0wrGEYKjdjDaYrQYZapSaK3yeH6klUTrVezra0YrTcyZwUtoh1Jb4qmxWCu+Ax8CP2JOEcgslJzYhT1LSZ/tILRWDMOOh40u1lqTYCsV0aO30CrTMBCsZzfs+LVYZBoOMijqmmu6ktdFqvu04fZp/YQ80rskaLzQy1/cxQ3i91tbpWm92dBtmQHW4awYPqzrIokZvd06iVSzkMOUvqmZUxFnMx8mDvs73r56RfBO2kpr0cazm3bSSTTFu6d3/FoNVakY67DGobBi6lS75BEZczsJBiOUubyZVcyr2MAv68L1cialxLwum9+f5m53R/DDLQNhzQvXdSbXzJwW5jgTa6a0tknHpTBUaIKf2O+P7Kcj3o0cpjcSoashpci6rqjW2PuRZbl8tYMwxn1Wchb8K+zr+z9RDwq1aqidMQxcrhL61Fvj1f5efIInQcOolWtc6LkQcxH1b+s38oiMGSWbvnb1RXr5MAzihKHF/pSmGbynK02bJk5PwnHL6QUoqXjrN92eIG2pZgYGpt2B4XBEW7Ph+1vRiHQm1himwUDK6G2B19appXO+npmGAzGu1JK45gueih/3gj0YMZ/MS+R4uGc3TFzTlbQuGGOpJYlFXLcywq6FVivrOoui2g3iLJIzeTN76CWTc6QigJUyBt3k6G+b6/gQAtMwYJ0npkIthTBMBGt4uJ5QutKU4Tqf+O7+LevylQ6i5E/oYr1Xapyxc5whaf5v/+m/sMQNfLHLTSzinGNZI6VksXGh83/8/b/J7HrbgVMY6eOOJa0yqcqdmtJX6eUlZ7Qf8M4jMSxNJmlIcKTThl4zVhlqLQTrxLkkFWqvwlQ25kYeyaXSUsb2jYPXDVaD6hVqRynzuxa4CyMtVLw1uHGgdIM3e6wZ2AfxUbBKszYY739gSZGwOxKsFY8j7fHOY50cw2uM1OK4m0ZOV8swBMI4MhgnrVkHb4LUY8YyjAOH3QS683wSh/YOtxidwY5c52/rIKxWH42OvWv0bijaYvf7EZrlusyU3piXLGrUTSxyup4ESgROV7l3B++gK7Jqn5BH27JuVq1K7rTweXq5NhaNpnaN2fwE6UK36rUz+Z3kCOeCCzvx3aFTfRFhRhUdw/3+nnHcgw8ko9BGhjXH3YF+PVP7irWa4273zQt8SStryry6u6cBTln6GDC7SaRxTXGeV5w3DINFNdiXAb0VrrUrrHaMgxdEsguVPMVEqgtTGHF+c1ov0srSNo9EBdoaYs6s75/Y7UYxldLqoxid//H+b5S04tz0mx3ENB2IJd46iFqXG4poy1pYliece02usM4Lx+N+K4xWztczZSvOShaL1mE3EYxHZSGPfjgMimmhdz49IYxl2WJl7NYLq9blGN2k3CllvHeEMNHnE3nzzEspEmMUa3djqWWllk6pneOuM4yBcy4UDNb2zTyy4gfP6XJmXpNMEb9xgaey0qzhr9f3DGZg3O3weUClE0+Xmev7n2jLRYI2jARE4Ad6r6gSqVUxDnt2w7jN5n/xPC61iMpJSQbA4AeCC+zCxHH/Cmc1KSZu4VQlYrQm1/ZRjI7xYNRAN4q8Ll/tIE7nR3yY6MDj6T2DC4wHEaHYhtq8/K74aYf2hhexSEyr9PJabTz8tM0FuJFHO9x4gi/3v2IjQnzmhBDpWcEYK7E0MaKdF9BIvUzskMDjbViTa9l0eIa4LrAxhQbrSU2xpFXsXJPMBQia65p5uJxYT88yRh3NNy9wWaQ7EVR4g7YG5aDURCNTeqWWJALaKuQKhcw5SsoY48g1kavb+I+SqKaMDH3YFEzeeAmQHPa8ffUdznuu84INDpoiq83ZazOreonR0R1Ak22TpPP715iuSHH+bAfhrYRkDX641QHnOfFq/wp7TRHbINjpxhNbV3Govs6LEEQ25CoXIYusl5k6+k/Ioy88wdYqxpgvnhBWK3Jc0dpilNjHWaswWti+VhmWWsnbrN86x5pW8QzsXXIMtFS9WhnmJdOcvKhx8gxB8fPDzHy50FMieP+7FrgNAe8nbAhbcOMqnoFWZhB0yRKsXQpUcf0Y0EZvFvOyey/XZ2KKKCM2cS+mkaJglOp8CjuGYYfSIunSG8ehaU2tGa08D88/CfW8109idErOWB0k58hYdO2SWTTt5V102O8maoqcr6eP1EXnuGC9s1wup4/EAut8IWchTV6XmVxkYocCpTpdWQmPGA5Q1094goPzv3lC+O3ozCnijaN3jdvm86rLS3HdskH10qJtA5APcwy892gNFb2xehqny0rKAv7UEsX95HcscFKlDYIfpJ7ZjUfWtLAuhaplOJU25FIpLSzi3lEVvBU3MCloO12LK1ptG5VtG2hPw54QRl4f3nDYi18BXY5xZS0VQTyXLeS6IxiC6p/G6Phg6VVR1pVp2H/SQeRcWOJViDe/spi1WimuUeLdztcLd4eJpzjTUTyd3wOKWMTRw1kn6Vm1oKoMJ/zwmtPTI5524wk+LFf24+HrJ4RSFAQrUC8cASOE0FqUjGm1h76JQ0tjHAPeDhgzcv/qjdi4bY4dqnWUKsxz5rq5bVjjaEoz/0oN8y0LvJRIroH7u9es61X0/hhc6FyLtLZaS4pZawUq1KYw2+SvtExT/dbCApsZt9DdlNa8vnvLYX+U1JVaKcqQ8oqbBkyHc5yZ1xlrA7lm9tMdl+VRpoK1EqxBaUVcRD72f/9P/8/PdhBrrtT6Bdr46fz4iVjgeDhyns+ivCmie6+9ssSZUpOYEMbIw8M7np7fE+f3N55gd4ZxN33MJNYWqyXDp1RJIafLQEfTxI/AKErtcgIYCWLu28Osv8oxOBxef5Rj0Fvjcn7i+emR67z5Gjahc6WSPlHDvKihns7vqS0Ty0qsUQQkVWxxS03bLpKx6Rolws5qRRjCbbImCqZGihHjtJBbleQN941HUXu9AVoK8Siw1nHYHzYfxIbeRt7eeWop5CxYwTTsKCVjjeHaLwwmoG5RZYoUG12D1QNluwZjzrx7/8Q8J2id8+WR+8ObT9RFNWdsistNWvUiFsg5sQ87Hp8fxA1zQ/E6jbvpNbVVrHM8nR7Ya02/XBn2Ry6XZ3ZhItdIjWLj9jkm8cNyZT+MUhkrAVNaD9Tu6A3uR8vVQCpZNIbafnuOAUdh5dC3WfwvahjbNI9PC8fDkT///ceNNtVv7OUSJRCytoaLnoeHdwy7PfMiTmQhiBHjOHiWDXmLRboKoWpLIKVWWpzDtqCrF9mZQhGsOHh5G0TEGsTcQiGua4O1nJermEgEyxoFKs515fXhLSdmKDCZsIlGDE4HhmkHpXPtn3YQwzDw9/d/IyZxMNlPxxtt3N4dXvPz09/F8GC7I9P5gjaGu+me5/lJlDStchjvuK5nuc9WRbUS2dr8xGV5lru0VbR2WAPXdaZu8K6t4rhhjJZIug0pa6WwXi5U7dgfBlAy99eYjYUkq/335hiknAjWfFYN83sXeKniBdhqJ5dOzeDtIBNMbUUO18vm3CUdDlpqmRf+gjLbFaAE8CklUUumaEvriZITJUcer0/owfHq/sj153cMxtC1JhvLw/Xh5qeYNkrwi2D2uDt8sYN4ujxsDuLHLdn0F9q4/fu7P2/j2cTu/m7blWKTIux98dz97vA9l3Ql9XyLQdnvXtOUhEKFYU9cxZGqa6nUD7sj83LFtH5jEnvjwIh7aO2VV8d7LqVDlsDp4DoxQ8FQVcegNkrZ788xiCkzDiO1to/UML97gTc5TcK4o6FwzlOtZ46LDHkEgKMrzTTIyNWoX6jprZbbQmtdWmNnLMsyk14KNNQmXrnSs+acM5OV2T6bJL3VKuNrukTb98642zH53Rc7iBhXlriIg/iWX9xqvNHGdd+KL0Xj9PATtWXM3YHWQGnDbtzzw/2/SCtUM6UWUks0VUlVcvZQG3V6u++UMfJAuoyLUYqck/TDpVCrBDgEN5BT4V/ffn/j16+5suRKUXKsKiXXRlwXzpdHck7M85XL5emDHAOJpikvES6lCrikhDYmuYBW3LxotwXef7XASyuknok1sZbIGAa6qjctYe2V+8OB4CQhdPCSXla3sffd4XDLW+6t3wyx1FbI1ralndfMmiOX5cq7x7/fRKwpxc10K9Fb5+H5kVLbRvWqmE1i94lgttdbB6GtpW+nzRIXni+PGGWZhvGmWNbK0FtDl4yFKrZvraKL4MlmidIDX8XR4nx9Zjce5E7bbF1LK6xpYYl507KVjQG7JWqKx4qEOhrLElcmazf3ToXZSBKv7l/xdH5CG0utmVgqeaOJtd42W3b+oRyDtCxbIKYhPsctl+eXBT76iWW9frTArTakmrg/HDkv4pkU10W6E/MSgxe3jMXCYP12Wwmw/yKpEyfUBlU8EkSHkGlJWkKl9ObINhPsplLygxhThpGn0xOvX3+/wcWfF8wao7/YQTg7sKQT+/CfPhvTpz+MaXsZu9b9hH9hCm+aveflCaX1ZkIodKNSC+1F5vUrh5C+7Sy13aGT81u/LbKqadrxn//lv/D0+CAppUaRqrz8piu5CWPI+fAP5xio7cUo1XFOapIhBOiQU+Knx79uEpBtgRtN6R8vcG01Mc48PL7n+emR1oWgkjdGkOqb/brSOO1u96/Z7ORe6OeAnDR5EfZuWjBKppgxi9mj84FxlKFQ74137/+2EToKtSbxVt4Es/vd/qsdRCxPX43p08oKwUJrTVH9ZvlyXa7kIs5eL5r46/q8FWXS6Tgj8mmtRc3zwgiWZkdk4S9yrJqy2Jpow+vjK+4Pdzw9vac08dldUmZeV3LPtBdjSSUVtHFO/m4lOQZKK87LZQuAkhwDbewtx0DcxLdTCOHuz/OFeY6gNGMYfvcCf328J+eVFBeWKLiIECsCVjvJHlBiBCEkENEaiiu6MIReCtreOrVl6ZaQpJbd5npmtYzIh2HYgjHkKnXmBfm0Hwlm43q9dRBGKZblyun8jA+WmFd69XjrKE3Mps7XZ+Z0JdZEUw2L+iWmzfCL5UvfB9TlWQY72lC0xnRLjFcGO1G1Qmsn9Oom49xyPuOnQEkFHTytN3KSYxmtOZ2u3O0PnOcz83rlGmfJzDEC/hQFvRSMDmjjKMuC9YbSEq3L1VNpXNdMrDIVfImefbnLp2AxYWCNIvVqWqGU+BGvLbLf70Sguq4fL/BWuK7PDGF3W+DW/bLAc87shwnJTdZcLouQPNEEF2g1k6KEWSmlbsqh3tm0jRtmgGgkRC3U0ErYSg344c2/cL48E2Pk+XTlT3/6nr8vV07zlVzyFwWzab5+sYPYHe55Oj98MabPDsN0i2nrmo8InEtbsF3EGN4GdFUUNKmsBBM2kaEWQoORE+D89MRud8d1nnHabMqdLkfpTrHkiFKG0+VZHEHotHgVpcvgN85Qw4cdcT1vNHPEoXtjA6eSf3EcbX0jPcoVlFJiP2yJH0UJEQkjR7/zDGFgnq/CL6T9vgWeE7tpz9PlQtBWjKKMxMPVakhGcU2rBFy+LEz1y4vfDsebrFyhN6SzgpHA7lf7t/z0/BPTa3FrzUU0kC+C2VrbTTDbeiOuK7VLjM3nOojfiumzv45ps4Mnrgvl8oxTkunDpoWng1aG1BoxL0zTXipLpbmsV9J8lmOvFN7s3zIvJ9EINOnbW2vEuAovX0FXXSJVlLCCrNKiA1ByDw9hEugUhAK+hTB8LsfAKA3GkZfE6gvWOYyqqF5p3UsEzpaLZIzhdHmktEyXGvObF/jD0zt2uzts2fTMmxxbm04Ijlkp1rQwhh3KaFnAXYitpTVSXtDKYG2QhaulUJVQC8UaF5RXxBTR2rHmVU5k1bcQieGzgtlWt/jZUlBt4OH8iBsdNquvxvTZ3ttHMW1qzeytY9aeotstd6dtalq1gTRaw/P1mX99/R3nGLHOk7XBactuOqLQvH31ht4qOQtqV4xlHCdSq3g3oKwRG7Qmlu6tyo6Ri0/hlIBBtQnokXMChF30YY5ByQXjpEUiRzRNLF20piZAwzAOOOdlZNuqVNV5+3J/YIHv9q9YV4ndbdu41liz2eMrcskENyD5v4IQ1t42baISPoV1GCsTwWWdWdKK6g03OEpJnGbxQFL8IpnfT68+K5iVcIyCPx74bnhFC0d+Wn76zZg+a7bC6tcxbcE5ek1Y7cS5ClGzpm0i15qm8ZJAZYDENO3QXRxGnNc8PM20Lq7ctSZsCFxLEksXGkENKG3xzgnzxgY6G4+uF+L5hf7VsEpk4a11sak1neCGmwuYUoIZjONAyQmM3o5dceYqtVHjinNui6bnxtb9owt8N+15Pj+Tc8ToLrEsbqA3edmxRIINKC3O4t6GrUaQUfBud08Io5wOJW8GUoVW4W5/x5wLGwoGTtG1YbFXSi5YZ4kp4kdLzQWrYD++ReOZlwtaa3Zq5KFevx7T97WYNmWEhHkY77A3PzyJbRGe/R3jNDCGcePXyz1ci7iANSU++rU1SqubEVSn6Y4fBJKUzwHVGqp27NY9TD4QNx/90Y84E3DabRM1vTmEeoIfsS8VNoifPxIKUWojjJ7afwmJyEVaU5B6J9jhlvrlbm4hTqRdcFvgis407fBhlBCqXpmXK8GJa3fvEvtmtcNaj9ZGFqWW4jRsqaTiK6jZ7e+Yxt0mEzMEH0D1GxZRW+e4E4fvKUyg5fcA2lrapqhWm2mnFJ6iqD7PZ1JeuM4nfjOm7/n0fItpG7wwZp3dwpRAEDljOezvt/ZIBB1vDq8pm5M2wDgdWBdx8LCjYdodbq4bOa+Cwae8eQlaUXvRUa1Q4oqqDWqTJCsUj6eLSLi0JaUIXTH6kZ2f8G4QAwclxNDjbk9rBY3o+lKMOKXEFrZ1jBNeQqmb5XsVrn+v/R9a4ArECEqJbZw2Fq0czooKqHURoJRet+vFsgsH7vZveH3/lrvjndDjW5PhVi3b/EMmh602drsjKRfoIo1vpdFyotWMNhplAo3OmiOn63vO8xOtJx4vD6xZSDS/julrXXSCvWv0t8S0rW2ht0awAXrn7fEteQtsuFyvYvS4rhze3EvVqwV4GcMgmIDSZIHe5JvpiHagii9QQGM6DH5gGgPzGjHG4rTBGS/DjxS537/i1d1bpmGP0fJSjdabIlbIpwC7cQLEsqU2efEhvBgqyqKdxgP76Y77w+vfvcBTkplCzhGN4v7wiuBGTDfbIEuhX4yuVcNb6cWnMHK3v+ftq+/QDXppnM6PPJ/ecZ1PbG2/xPI2sc6jy8KrOUEV25nfq6j+WkyfdVro1s4JrrzGhe/u3xDjzH7aCSOFTsoXWld8d/fD5n0jBYsdB1SL2BHq3Aiv7lBolnQmIILFVEShU6toAnSv9CLT8VTLzabN0LkuK4M3WGBV4pYJijA6lpj4/u0PtPa4ATzCk1PaQBdVT/BWOPvjHnqhv1i1In4+61pw1jPaQNZSYJoNGw82sKxX3h7fsqT1tsB1GMmrAD0pRYIfQSkGO4AW/503xx0Pz+9pNFyw6ALVCww5uoHduCOulcEPAo6Zzun8yHU+UXOmITkIxgVyyuQKtVm8CwyvhRr/RxXVDSkSxQtJjDQu1zMGg/3mmDYj2TaXfkEX8M7h7++J64JF0imtsxIUMe6I64w2imu6MhiRO6HELjZfL6L0tZKwpbrCOktLFzGpGN+yPPx3Xu3vybmjjWFwgdoqP/79L9zt74BOSl08hRF+REwrpRp240CpUnPkJIwhq2QoMw4eHzw7F7g+n/HGbAqjRGn5tsDVZsQswyiRjStj6FsRa7Skfu73RyFgqsbd4cjz/MDT6YGmfkku1UgKuPgCCzt5vV5Y4rzN7ddtg4gdfm2FQ1DgFJ5ATP+YotopCcv6XEyfPe7vvjmmbTdMxCZH4L9+929obYiD5unvf4EigVJaa+LpcRs6bP0v4uVvrOP553fshj2ezml9Yhz2tN4wvaPCiA9HLs8/yulQqlCn3bB59jZqTfzlp3/nu9ffofTmPNIECoXGsi6Us2b/KlD7ZlrRwWqgNMZp4jgN9NQoj08iCTdG9H/G8Lw882r/Bme3ts0aMNtAR20++1n++zDKLH4IAymu/Ncf/086RYq11glhQBmJ13l19518H9ZQUmKOQjPLTeRuMqrt5JcsIzYPo6z/YUW1d+GLMX32JaZNq8/HtO2m/VbMdeblLIrg/YGr6kyHEd36F80YjILBCXEil8rl3Y9A5zw/82LGEHXGOEc2nclalsvPG6hjiCoDmXk9U7c7fXx1z4473j//LHOFuze8f34Q0ojemoFeKTXifcBqjbKNea6S1beNUyXwSfT0l/VKCJPM6rXjtJxwO8cwSy4R20xCg/AcjntAMa/PrCoycGC+XjBecgqsc4wbXy+XQssrRmuSWklr4bJct0zixnScBNZ9voiIFUEGrVK09cK8LP+QonrvJwqNy3KR66cjp3qXmD77EtNW0oI35qOYtlwlpu3t/Vuu81nuHCXx5v9MM4aWIs0Pf8hE4jE90wPoZHDKYbCYoggdejPEWskJ6IopVjg0Hv/yjqYUVXWeTu+opov6pzV0sDgvDuL6bqKWRWhtSUijw/0BVzS5SET91yzwfJVirMTK0+mv7L97A7t7xqvjdHmHU+G2Y8NxgtbIl4TZGS6n94Td/T+kqD66Tf9QVpRWlFy269DiB4npsy8xbU/rSsxXLvNlq+QVvfwqpk0pvDX/VDOGXQiENjCr9o+ZSLhGW+NXr4Fupb1amTnqPT9fHwnOU3v+2LG0i3Hki4eRcR7tO4MZJcHcK/gGC7xmjIA0h4mWKpfYoV5o5ss71o6bY+tnAru0U6KoNi8eg+6WzxBbJ+eF7oWG3jf4/CWmz23xNCjDOP4S02clps0TvOev796R40pMEqB4i2nrsvJSKRgT/qlmDDGurAr8MPzjJhKm4pv65BpwXkAiWwNr7oz6wL///D/Yh4mFLb5tcxPNVYrKmtKW5HFAG01cr7cBStto4d9igWeMpuWEUo7SMzWr3/ZAUPCPKqp3yjLHGb2BR71LTJ/Slld3b9lNe9aSsbXWb4ppSyVznA7/dDMGpTSpxn+qiURVnXWdBer0I3jHzngRttrMQ01Y5zjllWkIX3QsdcZiSqNtWcMv9nZKK9Z5/iYLvBd2VDJIdtLXdizigbA34R9WVJ+XK98S02d/K6Yttoz1bmuVxIzB+oHD/g4/DeSSKFsmnumK3aRJOf8utxGjPp9R+LuPvO0BfpRV4GSRfZhV4FunfoNjaUtygiw5sWmvebG3s2OgRUHnPhea9XJ9aG22vr2ycw7X2296IIQvBHZ9i6J6WWdUMNzcVPl6TJ89nZ+/GNM2pxkxxoHa+n+YGcM4hn/4yHt5gPv9kbquv5lVUHICrT86rr/kWKr15+3t0m9Z4Gn7UREbrzPeaZZqv+qBEDXsTPhdiupXm4dxrx3lDKu+flNMn/1cTFshkRGV6X+0GcMpi979n2EiMfgRWsXsdpi1/HZWgZYX9q2OpWrwH3UmyjRy3aDWz3UvpRLXeCtia56x4z2qCH8wjBNBWa4lcdw8EJ5msdt9XM6YPOPH+99WVK/vOffOvjsu8czkjgTnvymmz45e07uXgYUCYw33w6v/aWYM7//88E81kThvLU8bNHPP3Pv9V7MKPjyujdascySMO3KVXrlVCcu2Tpy+f92ZKGOEW2AP5IefPulePlfEGtdBJboydG/RrXJOV3y0NKPI1yvWmm0wNWN3E3FeaDWR14XjtOP68CP3P/wnjHasDytOeYpt7I4HVJeYPpXrZ2P6Yopc4oWcEjaWcotpG1z4n27G4Kz7p5lIXNKMD8NHL/Tn9z/z9ntJNy+l0rXCOSdH/GY9/634eorpq51JqZ92Ly4MlFK+XsSqhnfCdio5bfr+LzusnZ/fc3j1huu7v2IGRwVyuTLUidE7yjigyvpNMX12TgtdG1RVlJT+p5ox+M3S/Z9hIqFHh658dmBymedbEfnrrAIbvGQPfgO+/ludCYrPfowJgjF8rogd7g+itjaKphx6XbEmfOSw9rni+Pz+bwzDxDovmKrwOqAUaCN8iv39d9TrM7YHcq3E+ZFUDPZ1YH/3bzz++39lvkR0zYW4XAUgqUnGvymS05bHt6VnfWTGUBraKMbJs5sc87pKKHJKN7eRbriZMaSUPzJj6K2Rs3ytL2UUvphIqN4xSnpj7xQhOJzVkphRf8kFbEp/cP8aurGUUhn3O8LgORz3NM1mnlQxL1RyIK4y+Pks2GQd2nmUsd9kb/elj5EitjI4Q3CWaZqkPVxm9t/9C8PxNb2utN4I1uGV3+Y5Uhw7I6EYQxgYh4HJjdRYcF0oa8fpjv20xyhHb53n6+UW0/ff//YX3tfCZX5HjFkmmvsjU9hhcymkVrCuMx721Gv8DzdjSGohq/pPNZFQG0fut9BDrYzAtx9U/t8KNn1LZ1LSwhg+8zHTjnVeb0Us54VJeawV3ARtSVE0l3OacUpjlSbYEZUy+/0RrTTz8yMlZ7x1aJQwkpQjhLAVrQtuPFA7/PT+J4x2Mse4zBgXqLVz3O9YGzw+P2O9D7QCsa7UUxaVyn+gGYMdFV1blIclxX+OiYRW1AbpG9FD9UHlvy6JYRh+E2xK8/WbOpOWK0V/4WO0p8xP3GnLtfdNMtYIzrBs+ANK33CRl2yiX88bTG/0KmKRIQxoJfVBq5ngnETet87cobWCswOKxmBHhv0d0zigc+N9bVjoDMMgYEjXLOflIzMGjP/IjGGdZy7zmbqCGjypFTErZpup5/xFtxEdLLkpvLebvfyX4+gG56kb/79vJhIuSCyc0upmIlFSYQo7rvPyzeih3XSIrVbGwVG/AWwKuwmX/Fc7E1KU6elXPubY9MZb2ArOLS6rv1Dnt2zhTscoKyP1X80bVM5oNMYFghOBakqRnAv7ycvU8yXtvCtSiezHe/a7PeNuwlhZgEp37Dg4fjo9o51BZ9CY/zgzhmtCuU3CNYiq9Z9hIrFentjfHVkel29HD+noJmmlzn8b2OS0/Wpn4qd70vz4xY+ZbEVvI2IZRXt0hxiz2Lbs72jMXONlg5U/P29QpTFMO4bhSBhGUoqSol4z81pRZYdxAWsttYoANeYMXbPfTZvvUBFF9nlZcMHj/cirH77j/l++43NmDKfzM09Pj8R8FSVt77QOHU3KQqYI47ARGyu5yFj5fD2zD2LoPO4mMZl0BrSAS0tcPhtHZ7WmOIPbT2AM18uF63XFGYM3htrUzUTCWctyvsgd7eRKMUZ9sfBqGzWtGysgWOto40XDWBrrWpiXQv4AbBrdBOhbZ1JivMnAXjqTFq+f/Rh3fuQ+dIzWnObTZqQpljnWyr182E2M415a8lJIpXCpYvr8Mm8oJW01jRf1kXPElLB7g73boY0i5UxMEq4ZfMAaS3Aj07CT+mrTVdAqzlusco7RC/37ejlzf/+GMirisqAHx1j+eWYMVQvMHFzArZ3u7GdNJLozKOWJy3or6KZpkEHPr0wk9m/ecnl62DjuAuvW1n8TPUxrQykj1qzfBDbVz9rb7faB+aqE/PFB96K15Q5FmS/o33kvv9RlXZRjn8wbtFKsMdGRRNTHP5949Z/+VWRyRvAOrRU2eDTbteskKeX54YnUC6k0zsuKfmGJOmuwaNKyEqxHGc3yfL6ZMSzrM3/UjCGSyE7m/dpabDRE175oImFTI60REGas2wq63cEDkSUXllzRDrx3YsWyUZ8/fKEoT8eKB88m3578jsN4xBvpmz86rpF+PaYMdKb9npIjESs8wd7xxqBrJT7+TJ+fCM4wBMPlp3//6GNe716TcyHlIrHxWqE3hq7Q3SLBDex3ew67Ce89dbuXX+qy/W5PafWm2H6R4C+m0unUfOF8+Znx9f0214COPIfWZUJqjd3MoYFW+MuPf+bh+cScZtFavvDPLQZvPAZFWleSqcTB8tRmzneOEMTObM0Ctfpxwnkrkk2tpIL3bpv9W8IwiPX5xkd3zrGbdgzBU8OWttWkOFvTijFCWKQXFv0LoBK2gs57KehilkWXTn+/Vei7V/cbHh+++kJDmOi1kVMWLn9XXz3Se2l0JaGMb3/4N0YzoLv+YgHnunD5jNJY6zYDysy8LqQi1LfbizT2o3sZ6u1eHgfHeb5wms+fRO68SPCTSXTaRzt+f3dgFyaMFv2n7gpjPEpZtJXCvNSMMZaUiyiXexXpdCtV5My1oYF5PrPzGnphej6zpjMKzeHt90yv39zu110wBK9Jy5NEmTVJ1SoNTAhUI5RsZ8xNHaStiCI7H5tIhHFkifEPZQqM0/E372itIG8gl6Ce9YtgkzcdPXr83R6rNM/Xy28WcFr1mwVeTAvQ/tC9/GFdprXBb4rt+gFbKi4rudTP7niToDycaFpO4egT58szpUa0c1hXOex3ghz2Jj3luq7QGoNzeOcYdwdOi3zCtRfKoLm29bMFU+qQc2M5n6hpZb1euK4rassF/hz6Vkv9xESCeSWMO3qTIm3cQJffKuhKynRdUaZ/O3pYVpYoJhg+WJxT0KoohbzA0+ESMedFZNXfWMDFkim1Mc/PLOv82Xt58ANKabzzeBd4fnjicl1u97JyjnHcoYpYzaktcifmQqlyPZquaIiJ/Od2vHd76py4Lldqs5wu7/G7O7wTWboxkiOs935EdSVp2ilhtONud8RoYVbNy1mOL2Nxr+4/e7/WpW2hhplrK3QLvV7hFjj5C03qRd6klJA3ShVosuZIrQli+mgc/C0V+ttwx+CPDNM998MeVSrr4+PthU6jITgJtNpPB7w1m2JGCwl2i39/9fae1jNPzw9Y72/AyjSOomV8KeCM2wo4z3F/xzTumYaBVmWYc0nXGzjzR+7ll7ps3O82/6BCrQLJCzFXiumy2dC8cDhfdrzRiufTA6VGcl2514H7f/0T+/GI7Y7174/ULQ/y/w/oM1fMXaKE3AAAAABJRU5ErkJggg==" - }, - { - "uuid": "Image_room_1_d701bce81576499499f52dd694cb912b_c", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_0", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_1", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_2", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_1_d701bce81576499499f52dd694cb912b_wall_3", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_2_24993318fd154d40bf9444582cf583e9_f", - "url": "data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABC40lEQVR4nL1963okOa5cBMjS7Nov5kfzU/mp/PnMqJKAf0SAmZJKUqm797S/s56+qCqTxCUQCIL8P//7fxVIrCOBIsYLUAsAARQQDGASSAIAah1gBPpXoYAC0H9UA8CBKqIKmP+6oY5EMVFJIIGKQmUBVWCWvg8E1oGIwJj6sORArjuqChwBBPtLUQQqDzBuwJEgCFTt58osfSYBRiCPAxEDYCFuE1WFyoUYenywwKJ+MwgcBRJgAFUFBFELyARiFgr0QxD0YwULqwiygAQY1DOEPlfPVBgo3I8DwQlWgeXvmaF3qPKrEIyFAvbvqwAytO4ExpwggFwL1FPp33pbgAJGaO2rwMCbfze1y4E5h96CQCGhtyr99+KbxUTvQwFgPxTAor/U/38Bxz93/W4ObSQK0Q8XxFpAZuqhqMUqfzjrkF1RhoMgEgVUoGIBCHBp81e21QLwc3AQeSTg98kAGAMVRNZCkOAYIAqVKcMsIBZlEEEggLKBVSyQWr4AkbTBsF2BiCokQ//Of45cMqKUsaxKBAfozZaxE8j+PUESyQWU1nuMibUKWAv8twylViEzUbn0CG2J3gOykLJtPcfpP/vXLATqKAx7V6U3gpeFR9jD8vT8VcDQH5GhTc/UJgfOF7HlxrGwEDZwW+AhZwMDMdoD9WIMoEAUBxCHX2mBGKhYeAFQMZCrtAe96TZipAwBWYgIbSb3X8goi1j3OyLsxRVgaolY1KaXnk+LNuzxikZRQLK0uVXgAGoSrERlIdiOE8CRWhMCEaEI6MiAIGij7Cgkr1+oJCIGVh6y4yGjRAKcBL1flBmfuxsOk5z682MhImSoA8C4ASsx2zh2BH3v0W1VuZA8wx1ZflAic3mj2zpsPO+9Ix1ZSIXD0N/NF8q2gvszsRfvsBf4WTq8VS9EoqC/px9ce6klieHNn0QhMfz74A21EoWFygTjBYVELXvrSiSHI14AEeDywmChEm+8ejtYKqIiEnUvwJtUK7cjxQhkpKJQaeOqCmTIADiw1t9gDHAMRASyVr/6NhLaLeSoCYTSTEyvHQgea0eWcOouFupYKBZme+pXHl3r0MNNWX4dd+9xhxw9BAkwtfjvvQMgAgOoQoYNoRxmC+CMDx6Q+AdY8oBCKedr+THir7ZEfcbaMOX87OHFnQQitfwMBGUMmUtGFAOZd7BiY5M2qKiFCqIqwTGAlU5fANfUCyPlmZcUhKSM9C4DrYyNJ2Q4JWxSicDQ+jLAGFj3vxF5Q8QEx0BhgZVItqdip1EWUVlyMX5ueCCBcXVQ7d8EiYA2nw88WgBoGMT4z0ltlD8LDusoPQiWw9HVO0IhDX6ebcJVDnffe4DzAiYDx3EgGMiy11UqLMORocEcA4yUkRiErbW00ZmIMREI5FpALdRKxBwnQHVEYYXyexU4hp4HicxEhFPl0HeU/12tpUdOKi2SNoDcaSpinJZbxFr/JScrRac87opMtdCQjeUUMELO2e/6heGhjS/TXyUDn2OHfH3pe48OAFnOJ+1xeYn373O9c3pmAUxUETEGEM7tAzuXVQJ6zOc8gCQiXhQpptLAiMBa3gTjGM6BhBY5YG+mQn+VcQoJxg07WJIK8wVgDKUWynBqFch1ViEAcC9gEDF27pQxpwwRx5JjLIAjQQ5gBIA70ihcBhFAEcf6GywgGiehtOkEIl7k3SXcVEcKN5UqN04947OG1xUFImRSDKKOuiDwdx59gY/VNQawo8H7XI9MA8lQ2effsyMK/N/gjzyAnCjckRAq5wDyWDsFbHwSBR5ylawEocVbx9EQRKGzEkyHC9IebNdsNEkiCQxXP1VLn3c1BhsU1trvkatADjAKGMOR9AA7xVYDtsKBv51aE1lKMTECVYnADbnu2kgQiOHCYCkaef1/aniytsBs40Vb8icevcLW5j/vku2rXN8FqYoK/xsHDXECpcDyAw9AR6tefAY4hAO4IHwBABDvEGOAUK7dG90lbaZB27mZ7HcYAcxArQWMwsplbsPxtysEnMYUI4D7goovKHx2eY2Ukc6JCG2Y0lBg5F8bvdMWqs+47zXbntmOd3W0XzE86hmmzK02+BujzoiWQA3n+3zv6SXvfo+E3+f6AnIVEAnkUFoQoNhg7UcecF2ohMOuv5cikvJ+IOZU2upNbENkuP6G0T0/ePaIQJGoXDYc72bEzvFFe5mNX7jBMTACnEPGSa9VcJM2KpNpLJF+N3tzry3u27tlre1Q5x7gNwyvUGAOzA/lHKGU8K4aUEl4poYmSbBo/FDK9ds1y94F5X3GuX/bUADUTz3A3pqqDFDY5VmV6nQEdglbuYBcIm7MTuZhNwpgVGLt1JZKKwInSMrThQ38PpthVJnJIW9jBLCWDG8OxKFSizdFwzekzdHeeDhtGT909I11RhhjtADB8YLMS7T9DcMr78/cecSmFejc/6AauHgPG0xUqfaMAMzKZaXDdSFuw4j38oJ02HXu/4kHFIGosUupzVtXgVUbFCYE9qIEtNLAtZbD/l9KQZuBC1skIaPxelQReE2Fw4htgnrd8GP1mnVoBpDrS9LGXDFiEOtV+Zv4yP4VBeySANfxNtrO8VuGVwVMmsRvB0u8NYj31UAFlTtdFt3XQnACy5se5chfwL9vonm9sL35V3qyN/0ZD9DmO6+UKeTSYq6/E+MWWHcTO3PqDYMIxi5/EAFwAccZSlkAVqGmM0K1hwfSe4+EED9VLxPaGLHM4iiqcMETZiY/I232Lg7E9PpvSldpeK1jP2OMQBl7ZdH2mr9leHkUJvrXRudvDeJ9NcDllzgWFvGB0/aSojjelFjpUq0aSDY+gOrtZzygN7/WwnJuFq4NxGyW0Ymiyi+szW0rrjoEvvRg8uCOCjVR0bm1gHUgSymgUqlG1YgIF9bQZ3InJj0T4apZD/OItAmvCyuRKOQ6VMYlESRu/5pYd+OhiDfRlt7s3zU8RmJu/niH23cG4RC863vnhAo96JXTfk/h1ort4dFETJ0otux9xQCRAPNzD+BUGKMWIDrH+b0rQxx3M5u9GO7ewR8VI7BNh0S92uDCz7KU5rgSGNPPBbGADSIDJ6aJyyLDRtUu1O/6jrSpLPBmrEMg8/BGT0e0Qh53EBPjdhM9faQ3nbvz+juGl/cFjP4oA5oIL6qp0P1eFCZQPY837WDOQIV46Pa+hX9QmOjmERGIGBvgafEMHl2SqcMXqOpQF/sRkArnMibnYX+GbNXdvNU/0M+vppL4cRlL528eMKkC9xgGasnbEgHGFKgaAUagkIgJxE2U+E5d/t9r/EPw5D0OVd+s3F4ZTakD2ugRmLcXr5E/7BhgTKWuXTCZ0QS83l4D8p3h1Wl4DDlOJbBq70HctMbzfefv6fqehmsPKFzEi6JNAuMlLqhV1l+V4DHAUQJZq9D2EoPKu0UwChUA4thLXSaXjkrMFOAUCFVEGSGzFsceah/7K5r1RJrdJFFBDAx9byXWsZyO4JQB1Lpj3AZqhCuiC6ap5jKurtgpphzdqqkD9ebN6edxN309QNCdWD17TTVmSAAjUXdR1OMWm1FdmcgEZqhPGgyMf0+t8QE5xXG431I2PHjNtX9T3oazbKrjufo+Tb48oHAPIRrHpFIr1JEmMhWCK1HpuppC00S3TDsdCWi218uCFmoRLzGReSi6cIEgxnArlvrvPLq5ZNHF0IuvokFdYNmrqCLZ1gHUEGfBVKm3ewIdQt9gmm6BY0cldl7eHVAgJs3GEXm84kwbQDGBUXuj5TQLMW8oBMZNjlNrOXpMpZH7gRVnm70jhrgKU79D2K4Nz0UTQDoC4Oz8GVN9W99XNKoE3lO4dtvdcqwlD40RZlnLjKsWhx3mxoM+e4OeASALwRdkHZcQJ0M5A6DeJV3nVAJYetlcC4iJUcThaIQUURUs/7QiSRKIzRI6Xy88xDRK4EMRqkwVQO/F20SuxEIhOICjpMKYL1CfBJt5ziDGrU3dDrS0qby9qOqJVFc2C5GBwECCWLWcMmQo6RAc898gEqSVXCvlAO78zve1vqwaG3F+Vt+XP+QRhduNo2pvNoYQ325PY0cVnKAG+Wn04SpUDLB1WYBzszZl/KVWLqNsgM5/q0SOlGIw4Y2vFA8hVOZ3TnVFjWSqSRaaQ/f7ELEj4o5Ma+l5CKUFEIjQRhRkMOvQ32c4XRH5mo4wtfN7YmG4QEsxcqjh73gZiEkwA1zAqqXlKGCtfwAW8ii3vG8ATO5tTEcM72WBmG3dDS5FnnxT3xPALBz1mMLNo8zAFcpNaDLNLAKDU+Vek0Eq9PXri+jDQxvVSBpIxMtUPittJCuAXCiIEm4PHDjD4mYxmeAoMFKs36xtWAiCt0Dds4Pep5immci1DsTthsrUWpHCHRP+ALWrC8DwWsSU0bS1Zx7CWkzUCGBJ97fWgRiqvGIM1FoiJhfAIXKMmFrzQWRJesdN4YeirrFLB/T5vtbnUd/W94gDKHxK4Y5YOE4yDe08IlH6zztSyKAUeerb6FODKmaqxPPfDZTMLmUtIF3KjYlaEmvkcpKoFIMXoWiRIaOghaeAWqtORZWqzT/DNHV3N3KGHaHADMRfEtpWiHqmFUpFI/SOursaUuucVHe0HJZJYuV9L2ZF4fivV/2sxSt6XsUOEqhlsmqIMKKNf5COisDd7zh7L+BaPwPf1vct0aItu/NisoCVuB+JmIFcQugjtODLqHa1Ahf2EAJ5lPR9DnkMIlmSkV2ULEEAk8i0ymFC/3fIcPTIeUrZENokqLu3tsEcQAbCESePlr9RZV4C9UqsV0UvxNiY5uxjFRgDiMD6ZyHGDVyi0/mqHFd3VwpFbYjzt+y5DelMlwwZA40qMw/sSq0Kec/tFAwDd9ROl1UybEE54wd3UonCUbY+g9p5eqnyVqPZZyVaA2NTuMGFGsDLX6GGy21gZW1FCjewAshhsGJA1XnW1lqr3MgS2MHQQiaAzIXI4Y0u4E4RNwDKeffsO8hTYwDHSswBpbduIbs05MXQm1zNYwl5g4hURzEPVQUCzm5XD5dwgzu4diGEvTGWkg2alEvRtC30MENaEdYJKiLMf/2FvC/X8+WKASbZCgUzk7BQpxnQSvMqYluTimAxpjqQdpAJ59rN/LGM856TaGVJ0ZNcyMMdsuYn5sBcdXJKVYhbI75enTS6F7Bax7aCzb4Baur0y7EGVh0AYkevPFIbYX6+srzJZ7idQzz6mLAw1K/d5VtnuxawOM/v1nOmW8JwVQJhoOwoqk3zjsqQrMTtMNwNxquV1AhVByB4HKgYJ4BukovGP1YmA7nBewP5AN16x6a4C9jpRBjIKcOPMWF2r9H2L0u0EpJp3Yc8kANRAalum2VUqO9YXsCu02HvPnBGAm6pMZFITA4LM7SkTNP8DqV5FOatvU6oOqIbJzoQwmbmoDKOde5I1bErCDWPbNBdPXQ0zNJaIJWS9CKu/Wt/N6CwLxilyuYM16pWdq7fTgWtLWhkv8wqas3yKKcAYMv0OkX3rtJgfZdQ9H/KOPJuADtLPMAVbf+qRGtAmjspfgfWvUDRTTZkRRdpDcrkiS05JP4YJDhmBwAtpDt5gxcWTnpMATwKOK272sd1GyokbHgFgR39VxoQt3JG7yiBpxs+b9bU5Vbn5nTlQsojWTukxwzwZtezQZGGSxaN8oX78x+h/ze5fgiEwhwKyqe3DIC7o9q21ZGvgbgMIdqTNl/Sv1pVNaVqvaBto/OfSLRa5d3SpMES9+KnU/NGpRcj1H0rcScJI0+qBcymCXaY1MusZTCTMljVviXyw6oTGVJhUe1TQDlVUXmonU1Fqt58RIHLjQyHdG32qdQJIaodKcVZ95oAQMvnuydi48qhEFV6b14P1jxA/82sdq7PTCCH3scK5iJQdwCZ+6gZIPyQozZAR79rOdsa8yjCWUBZiUnwTa2Pwg8lWvFBE7cywTHFrtkhIoAWVKhf7/NtAzIsuLvW6Ni5XQtZG3U3PimHTal2xfsDAHIhboEDiWCB0zkSyzyOcnafGmpJWMdOQt+n3BInEdgpy2UrgI0xGkhi2IC6THXHklOdzH72ExSdv2+j+yzXVwM7eFdRdrTYYSATGKOFvd3P0Pq043X2lxMtzPe1Pmr8TKJVomzfS5OipExB+aRKFlbyRLGdG7Lxp9lF+DO8SGUmMbs0dUyJoTKzjSWhs36YAwsL8XKGv4iBysJISvLda2ZxBAftLWMbXP+5dt9GPDp0OpU1eIxSJy/E6OEimx/t5QmXk51CsEFth/Cvcn1U4ViJHCa+nTajlIYqpVxWy5x7o5ECnvX3Mg0j/UUVwTkxawrinGgYO/R9K9FaQzXzA01cvfrDfDpnBz9CHbFL70U1aRua0b9p2iqHSz9fOZ+RkNKnADDB6bya2nxG7NPAdU+lqZti/4jh3rn4gjoSvFFQs8Nq6qnFCoY2YnQ9TXvtSV8qMnhxbQBjtCBVCpxqeI7SARaK+6BL3K9y/aK+lwsWo9AViL+38cN5PErreb86rLFQPx+AuU/MXAmFi2crL3+UaDHH7uI90sSRuZWpEYVxc4nSREojZyN0QV7nxYVGgSqbSl5QKxEvQyF9qLyaLwPruKOFm/EyQSaqEuswM4ZUCVt31FFIDJVCNj5QOCCPNIdup3dEatCOVfqedpLDPz+8S1ZokHT08DvY6HMd9uitr/I/0fqvQ3jjUa6fL1OYAHrGbINwaur0InU0dgRNXoDpMjg0SRcxMPMfh85K9dobqHwj0cKqs4t3kSZVDBCpBkyLNIyxOjWi0bFTPQmrNHjh9TsHdZ6EUTaEVVjgTRgiwmqh4XALMY3dkqVJk/YNdMs0gZjOq+laHcBuHFVKSbyWhSGNqvRgvImTr95Ix7kOwe1AGy0XzkhYpfLUkbYO6/7cqLrmeimaHS5Lnc6dZFhbwd0u2AblxspFCebKy+/KLMxhQWKHlmDIarKAeCxS3HxXczqNowCj+LZJaJhCAaskpDwPRuozwp9TgGVPUiPvTyx75H/wrP/+xXO7NjfS7zetUDqW+ISAy2O0Osz/0xvvdWvDu/AKZ4mjf6NWuH72muvrnhjhnsza+VKOU6UKpsTgppXM/SzsTVkG3cPpEgKbqqyASfXJsKJABHIRMZ1b6iY1zg4ptV+SCXPRvVUNmNo2c6eVfpD+ufaLtlQalZt4w3/7Wf9+dJ7WWFEO9UatgCLeVP+hmkacY/cvYBZuk1zpBYfXaZxSskT5n9tzC2pdFxyR4Ta212OvoUEwC7kMKr3+OuMxDPbOjW4cg5VmIvV5YxAzD8hz9lgYZyeHN3KouUEJFkgNlBDwqL2bknC5lNsiNge8hY1+Ox9pL3jq+EJe8t9+1n97bT+EQjBLG9MRAOtQxy/c0AH2eXscTgGbZzFAq9pGxckdPVktrs0dMTToQtilEhgvE+v11ehem4ZQgyczNYXErldo3xxOj3amlsCH9oIEahAIlbeShf8gvNHlB6f55CWraeBUUC++ESljvjGWTomEvLRWKPR10HA9/N9x1l+585ziIY95PEwhjiVAG/ayNmKD3drdTaBG1zzUKaOOhEdn6Aa340wPdolwS3fOG/JYHgmTyBFY/xBzUtXTkRa+dJo8sYZ8kDv6is3ciMGdyUKkzHvS1vxMeKPD65YeQ6lCJ7IUkhtZB/C1sZRED9m9deC/7az/d1M8NrL3ftUwp5+XHJy1ZwR4yU09a6zLRv9m9fYxu44umoxlvkjAOmaIiztKWoKCDnh6doOka3FJY+4/dHmeC1h+LztO463+VT6mD1PU8yfhbdV6KDrMLsHiDEnby78ylkal5TIt8B8/69+IRZiCeHaYAtKULYBcWofqvJvusmVdDhpzx+Y+ni59g7WDqysonNxDhMs+zwPq0nqJ5h0MHVRxGhPKPTWU2Qrk092BaVBaZi2HNRhHuiJcz4c3erjRQ9FhnDVu579njOU8zSDuuk+pb7b0T571Nyf+kykejZz183k+IGj6uTaI2/S4N5/9vcbBc057vsFnKtpGlrWDtTd3n/cvrfvuaq8lkO40loc/3BrKamq6STSc6xgxfEwsN2s5fxTeYgGV34oOlVafM5ZyPz3o/nyjXRuRfv3eWX+zVegd/dVhChKt6Duj6dwIScRIMOneQ6+Xd63EbmZvx8XI96EWFBaJtQpzYKuipaSqxqqOKHyTxvrom2Rf5nLOzLq9qb8zF1vEbBnkD8LbqL++Fx0uSj30hEKVqWZg+vdZBYyQfxHIdSDGr5/137+cKn5nmAIzgBvO8wb2vFyJMaSDiOWAkzw3jTgVSxZL7iqW3MCT0Nn9vDvnp6Je3Mz1b23BgzRWoq3zrsMibF2EjRWU9L2MpzSCDlYF/yC8JY8vRYf9wlF/4VmFKou7f0IfIRNQuiPgbiOF0q8DG3YnEzKaenfWX6Cro8HbjuWvDFOAQWprKBptR5euVhqVKe9mUzUpFbvVLKzjBlq2frH256PJtP0uPKNRR7IHaSzvZ3cyj5LyiU1M9dALEUpdf0zViT8Ib3eVINRHfhQdAphVOOAz6M8oVNOnc4bOwqnXf/cCu0uYeDiwoSzToqNUL9SfnOJRqN2S7h5FjNA0tI460Ob1UTRVLQ7x7fESWAB9vgFa47KSuVi9t7vCI+LSWxAe+N00FtAIXsCq4B+Ft7b8B6LDSBH8h8u3nyhUC+5bF1Fcuz5WdPt+YEOv+/shVET9kSketQ1H3yWZuvoMZa9FFWhJGS5OLQMo/xxlG8RFeBJqKXO49+I+BpQbMzW6Z5+E+gNpDIuNAX4W3vL1wEPR4fZQ+OfDee2xsTxSqPZZ+Qjp+bPcxhUXje8GNjweQvVnpnikiRyF0OHvuZ/YZACFRDSDtYGXuG+xsgPhNeroIEC3dqSh03FZbNjlbmZL4+rPpDFXdDNiPh3e0HQx5Q0bHNgbm5Do9P5Thar0oTaYdNywpz0zsOHREKpHHctfHaYAEOu4o+BDqTEdDmiApkMmDer6mHiZC+gafWsb0KBMubHXAFMnfQE1wPp4ekezP5fGJibWejq8PRQdlnMLAJTPzGEpFD4yljaSdwrVLurp0FbHAmt4JA2eH9iA86uMfTpa7rTSv98kVeHpKR4ARRgZvfej570Bs/6sGzrtonRo6ihYWRaF4qwGtITok9cALR4l6k7NJvhDaawqUHVg7rN8T4Q35dbbRqNaVL9F2MuP3BKwD8bi0NgNkv51ziQK18WFOgDOtKeFIkMrcxg6Qzdjb/ynQ6jKUai9u58BaDdE92V+OsWjtzbmTQCwliORjZ5AUN4nTke5pqd87B6+G2XcKL9Oh+iw4Lb6n0pjVDsXs/n1Z8PbHtK4RYew0kRjXqq5/h8qVCtze41mAhkKr0OnY0zTV+HrgQ38fka+XN5eXPgwehV1HaYAlKd4DE6DMmv8AOwpHhDZZasAS38H9MknXthLNcFylbqhG8WybXkb6D6yb1n9n0hjSFsLCsFSzuyyoHJoY3x+DVB4yzKYyIUtJHXphRi9/rI8asrH2bcXsYMY2ogIhyp5rLxeJNQyKVVNIYO431/VBaM2OzywoX1aSt/aXAWv8f5N3L/+d4OVOutwr4/6IkCByEO3n/QUj93prtRBVbOSBeyOpcDv7KcDInTAw3mnyuzdUk+gltcB5xAoy13hS1a29mIDLDxOY4po1GeX9QVQGut9vv75/HF4W+KZT+5CahTRMqdA5KcKVYHES9gD7UoJxEQinx7YIO83+KqLEzQ1u6sOu+sfmOJBf+AYQxEFCWL4NhQ7cSYwp6l2bfzKEvNZAq7d4+kfYm++o+yOMr+RxrjOP5/5w/BGm5lS/MXNaBGCNWuEzff6918oVJUPm+OXPLtVsq0irZtDdvfRq8Pm+4ENpyH1WT2e27Dp1Dx0LNzW7kMk8XiKxwWkfZjicTnJ0hGh8U9HBL0TXREB+1QvQtUSUvosNgMLOcwmr7y+O6L9RhozIVUFzGt4+2xIUYe3XB3uYi9pp9rMwrho1jIvEzO8OF8pVCXbapAUwK3zlFmwqKcHNvQQqlYbs4n3BTNpkDyqzwUypDYiocFUy8YRl0XnabT+rha5aM9r52WtpWjnSY+lOzPOxlFKlRrtEmEGtgAURayRb8rnfZnXtoFrGvvBMCrvWx7383j4s+FtvR5aJKAnteiVbaVtrW8f0uH8K4Vqd7/GCTZlfRZ4Ak8NbNhDqFz/w34Yjgp5+OIJtH3Vnj+E4Vzc6c1HwGBZc/F8XuVfzxFo2XlcSKc4MU5UA76yZlF1e/6T59pjOP/bQa3hazy3Wc0/lMbyUEk7x+3lh+GN2+vVwIfDKDcYO4Wh/UJOZl8oVNH1fOfzHjPo00RbqtCsML4eQsVBHLnAGG8bLO1lyjF6Rp7eLMMol1XGEI1iSlR0GU8QEHXba7N6AtoFfMEwBpCyiNrIY52KoCoNbkwCQQs/7uUKTjK8ZjXVAvgDaWwOZAGz8qT3vg9v7InpZ46eeojOvdzsYeInCtUT3VJcddfEPUVr5xv/OexpbnQ0gOwhVEXX4OznUacst0TKOcRU8iaoCg1Z22n8nc7MzjZw+5b7kVynos73avp5wad/AERi3ZUe4jbwej9E/Zb0fMNXqoTH1smpFLXOaWr8Y2lsdy76Rq79QgyxeQWQ4gUGh+Xt5ybnXbVttPfA6LMvIfKzVrcCB09sMQjM0NHq7pAM78C57vbK9hYBxzyOrVuQXXjODzSEKqBjYLFBYuddRZly1LleYNW7exoIzs9Hh31HEwDNbOqjZCoRw1O89ZllI1YWJNY9N6W2C66CY0VsFjlLQBuk+QR0JkK+LolMjc93Lz0NJvv9Cna8ztUf93k2KHgU3hZ6wBKAJbFj568998a5aZEXOYG+/VmFagsYe0ycUKT76v6/HBM4UgdCL5/RrqrvvQyhQu1N3/+aFpzISuU1fv/lcJtJNJAX8MBJ216gLyENpQSdjbzUxIlV7p0o3SnKKcyP0FQVEqBTVx4JdKry7gSICJkfeSBw01SUDFT/2z+QxiZ6OEKHOYc3uFPVp1C6GujQgTrdM0sLUQvn1XOZTytUOSkgl4o2b8iSKlUk9m4dWqp9OvjREKrmHdq4OsVs9VC7wDYG/0+/U62dOgjuBkx30GRLzqeEqpeWaB0yUPYhFgNOnTu0R5N7AKSAdLzZfM7YrOgpgE6MGrrENYAMteefSWOJm+Yge82v+zzXUb6BSzm6J6a+R/S9RvAplWhQBSjnWHjRPyPvu3pqPVSohkvD+OsGZNiPpOxZx10jaI4DDSzT4a1n/e4hVJWYGPbw0ovyDHXduNm//HNXqVVXJ26i7VC4W7qv5kJuw3J2yd3U3eZZjXT71UxoHgXSdwRSESZ9CCaGpO0AtmJIYE4inJPpO9eTwHmOEEpjY3e/sI01D691A3naoIbPGx53TM4XTdA6EvM2fOjAD3HkXni8A359TqCfqOAZeXQ0aK8jP1Wo9pQmHbPWZ608JANfhcCU3Km8YSMQQXu6Nmfso2A4p2R1/rOpp4c+1Ruh6X70jQGYhVZriC8wBAyVcfpK1/VJ7NtUI7CO5XMFjhqh/gmOHkyjZzpejxNoe24BR085pdc7cNTCyAQwNwMqHK3NXEff4fg2jY0RStl8rkKYlUvVXNON/lUWDWxE71UtiA7mDjD+t5R56dy6PLIcuj5TqErdAY+EK+SxLCtwLjbggw1rAy4XWHvwQosmFhzN6hLucRrIfsbTOFtqFYX933o+G41zN7pN3LeHmTSLFwDH6nmo+6w/Q4MjUZ5eUrVJncRoyIC1uosZ7gn4+acYwsjAsRbGpIGKUsgcU/cJ26D3yTsb2rMVwhRCPIkOKWvaKy6b6/yFzlnXAM9rCG1j56aFN0bCqVBNXxW/FxyeyUPAEyj371tb0ILHcB5rvZwOGam1ugdEepOrAVAAbYmlRv+eMbB1Dm0kdR4ZK9fjy5c/d4PKqEtn+C+qpnDoI+CbsW8gNUa2QimKgAmkskK3NiglS0CyW4oID5dsskvew4Wzb1NlvuTnRNeUxu+CEDONfHG+pDf3zWXSPVKtQd/erZ5xc9LC70EkiZ0+qlHq7uTdbFPnhnRZxkink/S5O3e5SMwe53Jc6OsudHu/jEt66rFEnNxaRTWngFpUsyT7memzE7WZwGx1TQcN+0htttvEWPkbSWQmRlvlaSbQVSdaw0JhYOLl5Yb7//t/7h0U8OJdShmg9ur3ia7JfvqdMw0airjeJwgvlKZhHWLdzHgJ1y2xdNUW9jWIRGKXW+XUUThQ9Q+aHHI80me49qYVQgAxHDov1oW0uvmcu0cvrIFawLXxcHnncF11UuvebBUE7flOgZVbKteFQ6enrFQJyKtWQsubfSLIsD7NlTAgZW+oGRejDafDppFbeXagDUjZ7PeJrvmBt+9oENg3U2QDsYJQ+3Rtu+vj3lx7rCSpb2nh9yCyr4wrom668KHWi4ZU37qsKijNfQScResGHUqzgRWGQruNo4+SdeAShJ7KZi146PDryGPL9TvLi+lIMIYrDdabhSQB32zl163mZCDd4pmgGwTWKOCODYg7QjaL2OPw0eXhVhGfC6pDN31Wsi5EF/F5hXAys1Ohv3kAe0GHMFs634NAciPdhyBRtv7536+2ZB00QVFn/UkNQz6WlUMNnnox9XC6A2h4Y2rr+dCHMlpzX/aC668MGegOv37nq3AAZ7hMh12EncI/4x6dcNmgL5i2wUD9Uq33NSXZICxvYpYPyGjzspm8VHMJgJpvxInNXGENjv08Vyz2U6JrhidfCbt0DBQI0+d8DgJ/5+9FhUo8Svrmi+oS1KVd44Bpi7VpDQycJ2dw8VAbW1t5nZuvCON5HDvddasYZ9jsjXKa6hQXdRpMaPL0XrfYx8Dq9PI7VXL1ztNl8gZU/R1mN7th1o21Cqy6g7RCiwOV9zMyEH+E6JrpMB4FHaVe6Y4dNph4CAIbVPzq31svoAgTWJmn2dB98E4fJpxUz2tmQffVdw1fQLeIm4d/kzbSudUbq/UIebYxhiRfrm4IaRcdqdoo60gDS6LZyYo2dCBu/UyaUdAjeGBUXyz0hU2oRE2IfzCZFMYUCSm0NrikwWuYxPFp69NYf0Z0pbmFyaFxplnn9GkQEiu+Q/hvQeD4rb+XnFtWWceh5JDyrrwX+jyAp0HbS10mVVoc4U5E+doMXDYYFL8O7EpjJycCjIEB3bVzza8NJu3HSiE0Hil6KJUbLpesIewDnDXWeQ7AuH1HA9qwKu14vJSwtbfArWAzh1jQ1Hxu7d/vEF1iXVPTwnc88kuc3gQUHtwhHEMPH/Xp33+4lPrd36OAXOdo08Yd2PJh+t9jl4Tbyi8kj6UiPlK1114L7pG4fQ+S5hVzR5PKazv3/NwuH7VJjlrJ8+wAAjmgmtuEmZo2tr4LxNidT+MVmBfRWUj/kwWxhlSTiXDACKXK5B1R5UGYdAQ81+BqhN8RXfd1McQaOh28U4QSKrrv/V7z5yrKiFuz989Pe/v37y+lfvTzZ4psJKv1GxaBdhVRlRZE2JIBbO10awt2ZukxKhBdbX6g6hyL30bZP9S6Olp0udN9O7TNbAR9fe1ZJnYUEph0qdavvf+714LbKzuX+yTIBnnqIXQPQmE8wj0Pb1Relv2nRNe14onoG0OqgYceT10rh6VHxuEX2SGT8eHvv7uDuH++au06HIDq5tVrR/TlDfuUr+XqWVAKgaaBxYwNctQnL/UcOO3lhaZ2aaavRv+MF472PJy3f+2I0lWIoxcAcGi66FqHmkJVOgLfJBeMEZwCmtpuA0AqSe+uoFMRoKlh8RKWdnlWoO26R8f8CtF1rXiqgLkT2d4XP7Y1ZsGTUbwaRzYAKgCXaaLS3l029BPjuv58+faRJil684sGqEG3MXt3zzyePmyxXcve2TqElQszhkiTKlyVlSyDOrbX1CmuuBhvJLbH9yEPIpHLtffOYf2DzS8YpQOoPLBnI1HXwjRnoAKnG2n9/qfj7MMhkNGUyZ1fIrouRgYAEzG+vSY2GqBcjEMI3DG7gUO4E9Vwa+f1j8b12c93mCszelsuZkvWOABqtOpfQ2Aml5jJQxuu/r2tyV5XuzQK19s4bw3/i4oYeT4rq8S1J7YwhX1jSp5sI1eDv9LN6l1JoVDD8whbXwmC4wZJwLCxQYSwhnoBbXVOd62qqnxbxhKoDBsAnya6ysfICLGv6gZW4ctrYr12W+V6vUMYKklaKSOw2yPenriD+JOfbwvd4dIvAXQNS90I7vk62c0OGlw1WQVN1Iyp+M72EEBJkMtDn+2FhS1E0aRzYyTqVFNfdtFl3Bno6Sta68Qpix7wbMzQAx166FP3SQymUcssY6BPcbUD6VKJx2VsAm5V5/dEV3CvdSExxVefjYvProlViM6HxhEY6Eosy6Wec8czxvXo5+ljVwyg7om0PrGy1PM2gq9KT+umBkF2GklvcBqFJ7Qw7pqpQ3ugb+eAw++OCjF987e9JWrTrQ34+jDqBmIZZwPGhza6/EuWjr0tgC9ypjEFiMsy99hu3JtvH3EE+b6MxbdEF1dKgYWNAWQl310TWzgwvjCOnMdGyJp9Yw3Sk8b14eerzPcL1LAHV0EnbGJ2uWTwVWUPP5s3LAHGGA1KN6xVpBzRuFnP+GosE+5QwmcZURjDi2/1b9f8jRPAwIyJv/51w7oLZ6SBG6pA3wGQmVoHRyZ14y/4wWByezCWLsIOflvGCsLUrmreE11BHabdwzEJzEh8e00s23W/MI5wuRUR0O0d2LX1M8b1/ufpv9fVKc3th+7NBQAWDrgO59nS3m1DlQmgExLY3TKHSupzIoB6dU49oIUpiTPGLTSu1WEZqTkBu79gYku6BDN9XTmwW+CFfF1ItPgjpZWspR2bCtmNKcrRSG+k0b09Su67MlZ4wLMd4/YmQkQb1WU4Jmdgrkx8e00sAGKpifOJcaz7gb4UrwmJZ+4g/uznNVlLLxQgKgbW6/1MR4OYoJTLpmnllG52dPuSAIbDd/CNqqaMz1pfWKE+QwwZ6To8aLmpt3CotYHt6ST9LiFZd1/4nKbVdbxR532bV3CR4lDfaaNTlVMb5ATDNPLTZWzSc4RKZ5RHbLxxnSqGozCjla7BbV37yS7XxBYJ3AD6goT3xhFjoodBFKnLo4injev9z7MG+mq5mNLc4aaRKCrF5Q5j2ricA3eO2aeajEOccvyFii4Luko9lQ6Wm1FsZWyzegUN1Bs3n/y93JtASr84AwjKSFcCQ+Prda1cgC8B3gGuPDEQy6onGtmX+wRtoAQPffezZWzcy1PCTpANR5D3U8Xqpe8OfvKa2KgpTfoj46hee/9MtAL2SeN68PNYl2kaN0mlda1gncAO3bJNrMYLxX2+H+UTuutyU9lFVTOKOAwukc0kls3UxAo15Ir1jysa7DmHmkbiSuQ4QE8LX2NDA2huEM4oAuozOxjsRB4mHWobcLjs7P/nXrAv6ixkpMfpAwMD+eaEjvHAJ1PFNCwaylvPXBOrBs14aBwEsFAYOZHrLhFjPW9c73++VvqKGE/DIkH6vqFt/pfAcpO3SIgZWzbKYRxgI3yvqukrWvqSqjdi1p5hEOGwzKY4EBE49rlJ594OPqHCpFqmBgiseowsCuhLMZTvHc/cA9lCm4IHbZ26qoegmQO433V83uheS6RK6tOpYpWYDWCevSb2/vpfD40DBR2FPhrgNc57zrje/zwJ8fiXQVU736I33nW7p2DpcGg63wr0zdA4utY6flDVhBeECY4CI9Vqna4W9gAseenuUC//3pcvxPTAxwZqBDRMyi/j3kcQe1y7Pp9nuuqDsCFn67qf2yAeg+b1erjhpX/37HDMFEbgDg/fXhOb9+/vEJ4ONVj4pTuI/fNqkFw83ZFqh/9yjc2+MyjQ0jGWSqY8jo2YxYytXZmcWj6IOIqyV7qq6JtH9yBmj1nfm6x/Iw3fEAm1cZujT4difbmBmNNidQPHn+V/1roCWIi6p6J9AZpDPWXbXke+74djMolZheeviQU+Nw7fIUwQmo008Ct3EBNi8upQrkUERv6FxD+7pEFBlymlgSMcxjdadv7dG+XneK+qaS+kFTZ5gHGDLpFuylUgLsxZCNHDBz4NGNk8v8EZT9KodX2VsMiF25jZl0m3cWe5Rz71GTYcEsJen4BmNmz44XDMWoX59DWx/SUPjMNcB4ZHytS9nAR/dgfxnkCm2Gg2kEi8ilBqBVHJEBOvtvluqC5U9Vye2gCy8eUbVY0HVklCFhqFD03VCOpEUln4GesEsn60XboV7mjhKRyxtuG5JM21pHU0G1egNY3AKX+Dx8u7pOW+TkpGNLrh9hE0717Hj4djFuaz18TuQVKPjKOPLxc30cDKH95BfHkGt16b/i8eCsnrLOP2+6eCH1GoPTPXwCzTUzi1SK2qCXQnDSdPnsrv+j83ggaR90NqKTdr9gnm3kjEmc+dkkQhq2zb6qVL35ZRp5q6gxMb9zQ/zhO4uvm17016B5p3vyaMjRq2cH/8/n3tigNAaYSNvGh3+wqProkd/PcH41CN3+Gl3hINBQz+4A7iftT0WNPCvtmrdM+MvNnPJec+ETQwUHlIF9+WY6tf7RmgwZHjeEvVLl57fRYd0SL2DeCjdue7U0yvN7N8rjJADFUx4P6uys7T3Gut6sH/OeKi5PGambwSfh67jud8C5qZBIej1A+GYxaBScte95TNB9fEjppAvDUOnqpRfEY0xMtzxtWgLGqcubAJD/P8I0JXyPuTtlENmz7uAmSJPYyCQw2scN7VUYM69xm96UArortvfsaYMD3MDRrzWGf5WdCVr1B93XOMAd2BsNQpstPVafNBGY1W22Vg75cqhgpfkLn/3kCwiDFeDH4v6elom1ek2um0v/XdVDEGMJuoIT6/Jlbs11vjeKPMfUA0zH87Hn1jXAF685u9Em1KVwLr7xQnf/edgHPKKCxyiLiBNbDqb80M6hwHoDzZPPg/kXUA9Y880tbfej1Yxd+dg5Z2abKIZxL77yJ0hkJSbrdaQ42fCcXY1vg32OvDHs36tQPx5ne4MJb7IsuOMp7xv6oQq/UCmuqaSM/6ecCzHOJZkjsj+Bp5h0+D0lkFMIns/qwJjb4mFihgTCNjFc1jaPIlnOMeEQ1reVm/Ma68bH6thdW8tlchpsmWRvZltQ9gjvuOrFdt0s1JrtwW9SydVf+1AZ1EqW4tGyHHDN82QxlFj8ntaGOjjDGMZSz4SLGELIJJHOvAuN0MQP3ZNC7yxsVO9jAnr+85W8F6c4l3+ywkdBcDSo0qeuhTqmfxHc+SSNDnD6+KLADGAOzeOlDVA5kdnnKAcaDVuoXCcV9PEQ37ZtBP7iAGjLhTn0foStRuFAFApYZVd7px8Febt3M3jHaqU8OlrHJkogIKWOGJG5sTROvy+lh27Vs8y//O6tzVzB8Q2UMg6Y0VJU2W5yn6xrrCKY335us7y+nNttYqJ5fKufpyjULG7c0tqLwNZOnY27M8y2nOfKPImvLOtwcPcUYhHHNhOMJrRMrzREMdBdLTO4sn+dLZMIUtWjErEsYz9+2hqEKtiZ5QahZIYTf7tk0/Hy+1t9x96wwZur4dLYhs0mb/T2BYksVpXFNA8tjh1cgTuJtVNLJvG4xm8CI3xNEhDqXMDtGShdl4WgavBUbxvB0Fxg+x7lgN7robWAvVt1s+wbNwY7C3iqypcDk2aMvj6mnmHm4DOLDVts8SDW+kSQHs8+wMNXviOC2TASRwVGI6tGmD9egjBhBqtQbCfXmfG3EFwnkDQpcyYy3X1x1KdEFCz/zfbGIP56UWTj2KaSP0odVGzrktDc4WW86lEl4erkaT36m9O2UEEdObZIEs3KcAgbh7j1tlBANqPrwFtfADEs/P/16RpZtD3zUX9q8N1ly3+vz5s0RDtRtsL9OCJ9Jn7S6nX2uhFvESE5keWU9twBjiFYr6732vkT18HxFLTb4YM7bWNPcgSnvaFtUbMPXhy3BrNqhqY2q3dWIqTjtypBHYdUilN1unHpyn+70s+4JIqMwT4+hgiBpXi4evm3H93wdISV8dGx9uQT3yBzxLxkNF1qwFfFDkcAGvzqst34YJjMLTRMMt/ocpx32W1pPcBrBRcgJZCL4gS1OusVNtz9rU91dq4kiTROjjYc7/OjPgK1bS4tH+1T9nhK5c30i+D5P0C7wC5RnG0dVJ8wUOweHna4l1XR7cpWvzAIHh6iTbRxDwZFNAm1+X1GgtpOzWMxRz+fN7Q4FnSTyg28IfFVkzHJI/KHoG5HXFzTEnzLQ9STRwjK1dr+PQKV8X4c3M1ZJWkLXQY1CaPz9v0IC/N/xV4fFyamluow6HT/Z/7/7MuUf+O71/7tQOJMqTtLtV2z0CnZIzAxhu5rRxZRee2GcHyjoGDki65QOiW6DZIpHQsa+dqqj42brVTTETp06Q54s8S+LB4FEh4q0ia9YovG8uKAIR2TdLXDhmES0X49q/6gPR8Fr/d2OBpDy2lg1lS9pCs/VsNOUz8uT0ICNvXhJUbam7C29THgpZMi+TNfocA63LVwRaZ0OmiPHX2PlSz6FBlLviCHpzub2ps0jtmlTPlkbW1eoh08gtKjol7TKg9pmEqis2FqAv3sjaxhMgMOYlxfp9eW7ue56FNXdEqhqnzH3v1KnImkKe3EABaPrSYA8tBceF866TUePbB+vJHsUQWKtX9IHHBrx1iFwaL9NXweovT8igSw8AaQF6HK2yqHLhXuz9MzCBUydu8dDG7TE8c2ytdfEUnyJeuuiiw2z2Z+kmRINBf2nqbGSwp3Y20hbI2sDeUUQdP8iJBgGME42vloaVgYmed8xhciu9L/7Mi9DjANQKB4Acqjp2iNfH1wCizCd258mKrPmouZAus+gzZcI2/CL0F6oMvOJ0FWJgxF9moLSEXSNjjo56Lo9leFWQxGkMT/vgvlatyncJZedmp1x7bef+c6X41nIBs3BaCHUNuXl6bAxhAyoCsRB5EaXY7gS0iVwHRkzES2DdU2llJWqMbZw9RZ37rIQ8qm9Q38OfeelV9BE0j5b9TOih0pbYp4UfiG6zm2JtXxdF1txHtOpsLkRfUtzrlroMYjmMvQ/9NQZ4x/a05hWEwNcu/7YHWSKeyb35+7hUizudfXoBUboyhreQw0bsucHCgN7s8mZZlGH8hq7rCVcGRQkjnd9Z+0ilgGdBBJhPBLWhK1JocTjk9TE0xr1nBzEM8Dqw7u4h9DBL7pk5PBcxdvptml3SO9iRXFriAf/yhOh2zxF6wBTO7k69UeTwsceHV7B2uuhvLCzWRT09fC2KRQShnKw9jT3zR89tjywh2FqdCtzQyBLaP8oDr8p8g3PATgW5PauxT28AQDdSuP/9HjXf71EQN1Hiz8uzi8LnFfM4UBOSeRkXxCDWq6aFZmnCaUDavxqq3XWDib+XtXv3igppz04326gpnp2CX8u+eUnJ/ezmX0jsZtCjEA+e+oGsj4quudYr3ityWriwc2uvkYkZFw44n6DxiFfevELdofJyDHDdkWIeUP+U9058gC6QkFdJguXw3ukkJRBVsDoxRxXBG31ChpfnuSzuaB7/ElnaT1a5rPRb0tMNLQ5R4End+DWIWC+n4QWwVmLhQB9hi8MearKm7+fVnGA3wkxPs8Fmd2uKGEJcF/5E4Lv6LMN7/oWhI+o/Ed1y4soUzpi3DRiaM27k/bbId3jujXFp0w97zqUVaIpB4EVNioQPUJRwQcTaYW4fic7ScXm76ChigbrhaufDtkunkSz33R0Z7FUtsmRMoG80q9CPHMu521Gtq4xyGzsXeHRJa8axADQd3bwBNDDi9q9/4X78DWK0+4hnsBJI2j7sM4gbY6zWATo3LwO9hAUthRqliNNDKt/xL91t/JHoNhPLzbOIl8uNIRs3bX1N0+ZvPb7DzOEhT4V3c2l189Uvn/RxCUQSE4Vyc4bLWTA8TMF1rRbRuj+BCM8SGNq8gHLuZcZPH6Io5yE1wLTliYk8CnMOjGnJyWECK+vhUfHAXwAODF8Zn1nA/Ti7QXlgvujfznkzDLIhYGElHaFS1PcM8Fggb+fJaphwtkRcwuKfKbo7xee6b6Zw7vC3i9MBX7aBr65cY+LTubTHKrV8G9iQv3XSJ12KTvfdG/EDH6sA5AIOgjcbzBczfnAsqB3yjqG7DZ3gWYcoWARwUBjA8VuVQDd4ZLS4K2dzuITMzwWfuiBiabLI5SR1kRqyNYnKA+9PVgv/6B7hXxLdkiD6RjVIw4AqRPrEKg7UE1eunXJp74LZu6DCdx3p8vr3TvoAoVs2LPGO+XUVUIvAjZ3VNidf+GTGT6cn4A1DF2yFxEQed02H34MhapeKiiCJBXncOFxvu5RrTPaV4HN36ly2NTPLMfDZyepuVf+K6DZ482cGpur+3C+j/T6Fj4nHV67V6JHntb2VNZTjEvu277rlL5/0ieVSDZ2KfI/OZ1VADODFKYzAszN+QHsi3BPwz9dBpM4gC6w6Dz46Ks778uTvA3UyZjtKkfhU8KlZjQ9k37sjGg94fPxYdKvSUbxAf+ZE9YBGWWCOgZH5/ZVrAADJqGvVp7d9p3dQC8CnTvrkTS/xSOK9T+rgQRUA7NCG/uTCL8/4kTdOCyilxmmc8f6oOEegXhMHgeGx7BtMfyP4RAw8LNu+OFldNX7UDAIGHo0CmM5g2wL7XNp3k6hFl3d9WZ/e9s2e3oXvT/psyhb1qcR7QB6TfZLnUgXUCxt34k/N+IEPc9wYWBCYhMHl9aj4+ucOjhtISc+fFXwqiD0u274kedjB+LlmUGQ+PK0935/2JZT3lsPi40nUvv27loQtZcGDzfx+f1WIYQKvAP+qJ076zF0aPSvxThrlV1Od9uY/OOMHQUSWnrWd6cFR8ZjOqxWqap4RfIJYef+0bPua5GkC7WMzqOjxNEkAAyv/1iUU7HLy/MyplHqxQIflr65c4wJ+ctt33R2+vzjpQ19pil+UeHcR8qdn/BRS41nSPvbJUfFaQvjOHd8KPvNVAxy+LNvi+JLkUZxaGLwhKUX0Z+cxOfUB709rz3xngXVfulyoS5I2um42tIc0f40Cnrnt24cjH530oWfa/Y7EOxj/kRk/B0oaQEeHL4+KZ3pgZZ3RqID3gs91959XoVg48Io4TIW7bMu6u6fWjvKY5Il5Ewk3b2YKH5eG3Wh8TxzN9xaIWF9OomZ4rLvVsurdx/e3fWMglsUhH0761O9LvA/8R2b8MFP9EZzcQ+fXR0fFuRJjDBylTXgk+CRxmYaqZ1vu6m1mNt+Wf7WOD9Ei0UoiO8IXpaF+9zE6zOJb4mBWd/y0cNdJ1LyNC4VpGvIHt31nSSPAOt6c9NGhojpTiUEZLt/zpcQb0jT8J2b8xMCWlv3kqPhgIldLxogWfM4MA7n4WPY5pEja9rb8U5VWyOMfNEX9cbBWfVoaRjw+rT0T6w1xsJgYPeShrbVUZvTcWVlAbBT609u+Jb7VSR+Mgd+VeOPAf2TGD27KWeVW9U+PiseQ510Fn1+N2AkGmN8P1sIqjPlAxof4tDT8LDpMjvpAHCx74QZHAQCp82Stk7uUNb9y2zdWK2VaefNR4j0cbpePptXoKHBKvNVxNrpN/NEZP6NCGw3gV46KJ9UYG36OVu58VvZxxW8N1sKBT0tD1HgYHSbxgo/EgXNT9CIpdGZIa9YdWZV17r51KrKRopty5R54LmOJYetMxMt4KPGuDA1WZEcU4YWspqAhNm0G8BpALfwnZvywStfQgb90VJxTI1+F6l2SfdGt+6xUe1v+vY0a7WRNt3M3uASfuzREPY4O8yFx0P1rhzx5ALd3/qnbvm91w2v9/UbincvnAE7Oa//Yw8meSBvqf2DGjzFmN2q+OyqOEmWsUbmlE1Uxn+/W5R2PSrWvosb7wVrlHot4kvM8pjDOx+gw98BE//9qTcgqr1eu1aEQ/Odv+z4l3nUoIfx4sicDGAt/YsZPgfv9JMxpN1M+f3RUPKz0fcNVxM+7dbxUN78zWCsWUVx7DO02ZAP7a3SYQDw8rZvHHUWf+VsLCPXs//Rt34SR96sbFMQvTfZcw17xwxk/6BQ1pK5x+9Beq0XOWuij4sylqBRTvMnKnfbecBX8+9OS7LNunRpvvz9Yq0hVXMPON12Ow6nzEh1m3RdW6wChhkd60sCY02FGpYbyUtfDWqjfve17Xcq77gf/ymRP0dDPzfgJA99nzh5wKuzGTVUMxgTzQOYrsjoifOQqUD/v1sX4/cFaFLTXdBVXYj29vZZBdmquAAHMPtWbPtUbHuxQbhtqT9r7zKP/wdu+l5s2vz/Zk7v0fDPj5yisVhRXq29VMn159uBmYIgGpoCRKBBjG8peYF4Mtj4HXV+NyPnVHj8OSvsfvkyzI9Jurp010XtVseYEplBRn+pFApwCfc2Q/adu+8Zr4k9M9uyOHlBodXAtnpXU0H2DPQyqHOHyUArDTj8CGsPGPJLqEO7qTtwAx3Q5vByuW8iitfM/w3vQ9Qh0MwPhFPzjwVoZOoST0L+hKp82sHJk+0xVPC9nnmWH1QuPyzEt4MNt395Qrfna3Loe1jb3xG3f80Yc9z8w2bPLw7pULRu7WQRqabnGyupz46afYciDx3wBWKh7qoS7SR83Ysix6Vl/R4I3Yv2teQB6XHMG2dfPfwRd6GhKS7OcKpvs+lHUaEe7qIVRhXUUkAM68l74anzc3BGLl1xU8nCvZOOLfRwr5q4pZPlHblEmUThWIayfe+q2b8ZvT/bUxRRqMLHZP+sFmm+I4ZbzlKePIl4LmG701NDsHT1eCvTVHXXoYGwtNbRASmH8j/eBMqBygECpSBqoD6AL1IictY43yhwJXp+PGlUTqp3PHsWmY4y32k4syN4cRf87APj/nChAzeq0SKYAAAAASUVORK5CYII=" - }, - { - "uuid": "Image_room_2_24993318fd154d40bf9444582cf583e9_c", - "url": "data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABEWElEQVR4nMW9W5Yjy60kaoB7ZEmn7/wn0P89gB5Wr15SJRkO3A+YwYNM5qO2pNOptVX5IIMR7ngYAAPc/vf/+p9pZjAzrPMOc4ePCawTgCGRQAJAAnxdAkAE0gzuB4BEJuBuyExkJpALCYMBgBmQwMp4+BkGGK8dMLgl3B2Gus6KQKyFcbxh3X7DfMAyEQB8jLoA729YIpEwGzgzYJkYZvUS6OPqujBDZP3J+HczBzKwMvsN5g7TC/RZ/S/fHAsAEAlk5v5rBt9r9UzuiKg1+fXrF9cWMBu1HOfisnDNUdeLiP4cR6Ke3uDjqM8zQ2Z9HhD1vRkiApGJjAAy6/mQWJkwroEBmGZWN7cWxhhoYTADUreCy0KAi+gYYyIy6uktEfzW3QF4fbAPwAy5TpgZnIsCo2C5IXLBzTDcYXAAwFp3RATMHRkLGLNePxwWieuXuXbZkNz8WswsATODc4NrrQLBTR38PbIEWsLiwym+JcZaiZKp2rzrBrgBGKMUIxPmsxUGMKx1wtwxDThvN2RG3RP/bmaITK4d+nvXuvuoe4yAj9l7EFH3bhINo5gkUPtsMB/9OzOTWsIMmOYDa50YTkk174tL0t1LGCQQYx5SvLqYU5qRmGMgYcBayFyItWhFtFj1LzKRBsQZtcieiHRE3GsBIuDjDbFOmANeol0bNoHMwFoBHxQ0K5kDnK+VItcGBn8XANLqPUBt3t5QYJiVNUJircBwCoE2QtYwo4Q7S1hK27I2FdELDyTWOikMoPY6gEHhLUu2zhNjjFYw0z1yrSRIiIWIxfehFBCGRCnXynMrnxkQQTNbzyTNl6LPtU44Em51IxGrzVlJv/a+HnqMg3qRLSxr3dG2Nuo9JUwlyTCjZNcCGQXtPG94e/tVN+WGterBMhbm/IWIxQWMer8ZVgaQVhboqN/leS+N3ta7XVJJplOHrf/VQkfWb+uZAiFTGXSAKWuVLfRjeClIltuJWPV9Jhbq/ZnAWGdpMgWsrBDvTa6UFmrOUeZaapVRSxoBcJ0zF3wMZCR3oHZojKOtG/JiqbVHRlcWSUGhXTPHdDc4vKQoVn1QrPps3lxrOp42GxIUtElJJJyuwd0x3ct3U+pKE2rxfr2VL0QG7ue9zFwEjre/I847Yq1yA1Ya5lZaBivTKJ9rY9aC6SaAcgPuxBigFjvfky0sQFkbk3hcXu+j3Fess7wW7708kLw9t5dCXFaF5j0TQGxhoUvTOmn98vxnCancnRniXGUxzWCIizAPjGmNDQaEy1xXpOt1PvNeE3fvx3ZzrPOO6TLHubAiMGi2gIBlwGxsaaLkbmXL9imhReOFS1KjXYduYq0TBoPPozYtE7fbb6y1MI83GIB1+ycitGCjzW/yIUA/6Y3xsi1NbSbN7QW8ltWw3uwMvodbcbUClCQKJ+A+Cx+0VfwcEzTegCF45cjEwIJhXvx+Wcdc7wRo5daEKcy3opgbDZBh+AEzAu6rEPG9biiwmQ3BeZ80/QmcseAWGGNgtrmnqVkRBWjSAJrqRWDle1W5RET9gggAPBdBa200zGAyleuU6wVw4Hz/JyICZwSO+YZcQW1ymAMDOyLQsxi1HtQUWaheiEj44A1J/flPUBjLtWx34LY12pLm2kuT2yJ4aZrR/L7CBLDSYDPDSsByYYxZJhhDYgLZUzcg/Gj/bkT4IQvi3vduXl484vwSLJoZbAzE2lFFA0kAZ5xtAc0NMxhqcKkRCQyXf/oZqo4oKXV9T4Ch/2RGvbEAEOe9fp+Jt19/R0bC5GutHtaGX8zmRq710IwuytnDzhMAUHufhQcjEDL92qzLZut6H74ykFFgEHRl8tWCXFdM0GaWbihTC1wa7CZAVjjBjlluJSosjiUgXIIwLiFe32QGzIAV+BQsXvSdf0e7ApjhXKujBDPgXCdmRuKYv4CkVqyFhANeEvwdqi7lIFhCXr4nHrC92fKPeuuKwNvf/r9Gyb1o/dAJGxtUKc9QwHQhkw+tWNdHXz/k/7QkWbmGtiRaMKL2IIgzfrZMqkI5c8e5Klw1H4g4+fcSLstE2tj3OkqBStNp9hktxO2fcJ9tkcxkxu11iGcofGaGOd8+BYtpe7PHPHC/30opM+AJDAm+G90zMId5vTkCEeUXFKNro75F1XnxhfpeD22OcfzijVGjpbX3d9zP3y2xaFdkTOLsxJKZvcwzFAwDMBznEhKJvfAPMX6WpS7DSEHgwhu+jeMrSSXU7+UWJGA+amlW5Rgsjesga/No9tMMPmejiZGB8/7+ZYiXEbB1b1fzCizue9lA1JT1yiCw98ZYs0KhAFZgDCaFCHbALJU06BWqBirM8TmwzrO/p6GEMl0wKwTvye8X7Nfft7YDJZWx2nRKiILZtozYeYZY3GguoQ24rQfL9Bzj676F7vU3d/w4js+kULhAYhCHMOtmJZIJ+uUMuik6nYgGsRFnWY5MLCTGNyFeYjDq+gQs9r91bxGrlNblrq0thKGyiTNoTtzL/CyFU72IW8M/oGpGDzDDeVv9t/pe7pYLRQsQ637RDLqFC5qds5I/AGiqTiCBFat8Y6zO5ClA3QtWOy03HxlfovtEIiVgP4jjkZUouiL+Ci21uAblGGqDFUkVEC6tZioWFY7KFSUjge9CPHNvN1eWYYNFCWzjBwpsu18EMgPTHCcCkYFpBvg44Ga4x0kN+BjquKQcAtdMovDGfdBn8Xt9KdMFc+S6Y779DcO9nKQ5fXnQJJfvHUSxyAKDaYkxf5XWJ2sB2NqNcRSgcroN3cdP0b2ilW/ieIPCnUfEH4m2UvpI52bNt7/xmqjrOrdC+QgfcGb59f6vQjzQ6SkqQGMewGkpzPb7dV/IWrvjYIKN7mWOeQDuOO/v1PJojFyoM+Bj7GSJHpwp2CT4ihW05MqNP2a6LO4N7NYK6tmqa3mFN8jcD64cgtHs5dlJJ22OCiPb7IGLhddfn6F7dwLL0upXcbxZLeaniL8uAEJfbmZi3W8Xa1fgdIxZrzDHOs/tEjKRLsF7HeLVcnqDwyt+imwj3wBT65iZOH79bYuZeSXqMhNx3gvgEFQFEaBMf8f0DMdsDuQ6O+xLmh34oE/CowR3pkvhy6r3ZWX5sCTp/Fw+xhgTEed2QfriYidDK6WqAkxU9Wbgx+heYC2zrveQwnX529eIHwYM1ObtaIPPkQFgEGzS5dDFJZ9R63T14Z+FeKqjtNCcd9iYpf2qlsaCw6qaGguWieNvf+/1BYA5J+AD82SVSj6mtLdc/HcxvZljOLWVUcBXmS60OasH9vG3jjiUnEiWkTMTK43fR/vQBItRxk11K/PGjdmo9edVusHS8qcpXIbFaQYjSk8QD8R2hUZMMei34aUoVlcrrTMHctX30IYwSlBIl08/X0K8XGdBXytHDfMSvovQmxli1Xq6V87h/v7els7NcBpgsTDHnIW61wnziUwCrFh/GNMnjl9vlVwYrzNdtQZMjsyJjEBS+2QBKipZWysoSNQ3zPkGY1gnc5dXM676eeaPq3TSslem/2p2JGCVEAssfrj7LgyZBJaYR19yi8hVfAtucmZ8COmEZT7UA2jcajm9vy/lLEwFClyh/qS14doTiGutAGA6EhZVsnV3ODYKlUL9aUx/OxcmpdSwM10SHHNHnnf65NUalCDmuFqbCEwANkYtOhd18H46vIm4BBw/r9I5TfU1hSswKxdbNmAD2wZifCYlwdBgzhuvSJDdvEPXKpSNtghhsUO6xiP4EOKVC8mOYKZ7J7cMBiySU2KhdDqgkK/JKQSTld4HJrLMvQ8xe7JJB/9qTJ+xqOEES111rLAzzcuUW4E3NCGkzGJEYq1VqWlaw9EhT70uUtKNP6/S0WR/B+i8XcIGIsZFT27GqwKRSs2FkRi72wHPCmWVG0hubmUBPw/xPFdZRzPYRSCT7q2fg4I+54FznXBWY51Ktc4b3At7zIiFMccurqyFMQ/EKlP/r8b0UIZMWiaUa1bu31JQi4JxiS4MmMMJxMbGEgbif6v14Wb9SZWuELW9BHSA8jxG7ZVPvmAMhnW9NvhYIDKGWtffW5xk7mDjmgjmjg2fhXgWizSIA8iiywkHmDmztKx9YNbaxsIxBiqSEr6oCm8mU8HTwcpRIT8jksUlvm+p/wsx/br9LqsCYPioiGNMmn7A8mxTrqctckdi+MCKRJOz4izNIGCELIvKqUZMeNmE55g9KR3KaArQoV1WRTsCtqMtQ/lUqidkbNom5MYs2boiIYt+j/nA8fbG9SkhUm6gL/gU4jl2ckf0PSnhMK/rxAIQtGCbE+gMlxs0IpsRNcwwkw8uvySAZHxCgZde1D+M6ZW5Mj3sGFtb1rnr7PRVSdRrPis96gOxTpxndCQS5oAFImnes1yBpdKsfFAKa210lboLNSt9bF3wktlfa8mGbWdCSxBwuG8ORIe/soKqOmqpkBi5sFB/H+YIxMvcgCmMJi6qdan1PhM4jqMyoKx6gsDvO04gCBg7SsqE4UQywTYFvrRkGScZp+vfEtPP4w1uE0k0GvR161aJp4DRd3PpgktHjYUZwuwa3bUmRiZmDrKFDFLQ4usV4i40XkmkXFG1cncMabkbphlWLIZX1DoCX6NwVWSSiGXM2e8wEQByeJt0cCNqcyt34uY4172SZiiXpjXqyIR5AowDJzcWsTCOX7QWta5OllXe37/lBBa3clu7KknTBbljViqypDnWvcuR/46Y3qxy+EVSONBGLRM+WfPW3fB6ia1h+lzjwykqSAFJs854gZZAaeAxJgxjM4vXgg+Hzzf4LKviY5am+yzWz/negg0k7ueCEXBqTWwUdQtmtYmhQpFy9MQXa8HdmbNgvmEerUixVqd8r6Y9WSwa7rhTaYyMamATQZJk2+eC0StOoAQ7YzELac3Ymnne6gVuHxinO+P+12J6ofGS7NWGsY1k7Jq9YuHBvoDa7KpNBFW/snpAotK4VTkji+a8V1hqdd+3378xJrNscJRrd6w4kYsZOLqUtdSvMGjNkgCvXFIJlfW63N5/l8XsR6nr9TOb3F5gtOWqsnsxhRijp38w7U2B84Ejq3JZdZHszwJdRvr8c04g13ndKpye8r3ghz2UIy+hyjN75buYPhjPDlf8zd8HU7EN3rIfbvMRk36N90Xtr0VPTKtwaeUCQs0T9bbKnZegxKqkyxgDGBO3+zs/O+CxaE3QAJUPWhsvjTfDKR4hMaX7KEURSKP16TI2cYgzdZ7mnbyCoo1MjDk/mHZKAa2qFBEPuAMMn51uQ4D7J5zAgrXR2GgLgE8g46Ec2Yke7OKCTH7FuQGEdYUN5h3Ta/GVuKmHXm0DypKsi/833Ne9qmh2veECqFXEARkui9pekQfjFahBRAUQ99l06/fbu66GDMc9b40xJqOSElAGY4y1A4FJVwEAg+5jzqN/p/sQm0mYJC84oiU0i39xjErRPpt2ZBap1loVkAmM4yiuhI2L8qD36U84gbPizBIAG291wTjh4w1muxxp81UZMzrjBNvAsYUEm4mT542ak5WPz4XBpIQ0oSS2QhU3R8u8wFUvXmAQMLZ3YehIR9PmLaPIFapirnVijiK4zuMN5/29XEvW6wLbvbT2+cBSUiaDlgydU+gwrc3r6PfKwl29cdlP8v+XbY1/Mu1QhKQFpkKs229+L59em4ssDmcliAZpX9aX/IwTCCrxxLpvVP3EOJUfpN502hdmWJmYs9LCeb5jEbk7WBwZE1PIlpsoINjVOb8saNaiqMrVeMGsS6cN+PrewKylzHeFq2MM2KgNOc87HAH3CZ9Hp3kr7D2q2shFM0jYx6avm0tKS7iU0QNQRNairssNtelOusoODLIsjZ5R6eYn027IjgignEpXIfUe4LNagGohn3ECSyGpOH6AKClomh4Zp2kDRiJBWpmSk9TuQVQp/54A5rhueN9dgT3XgwIGkRrL92ZUjjsvGtVAE3tjt0msexpzUntD24dhpfk2Bu6x4D4wmD1T44v5KNTPZs28hH9jDGbZSlNK0Jjbj2ggJaDoY9I0c0OYS1ETRhJXzHG08Ar1g2H2p6Zd1dBg7WAlS/VleT/UArLiAlwsKnJzAi0TmG/wdICFv1ldO/sXmdqgSqwEqkAz51tdRMzYTNzvNxzDyvT0vu0NH/OtNTkJuBRytumjxRKZKvlwF51E4tLtmmIdzQ1YqXVjvsHMcDtvmGmY88BB079YxXQ+596MKvNUcMmcAxsxwfhfqL20h4icod9OPepxyp1efsVwcTX2ud1v9YdVPIKvTHvStK+1cLhKyR9rAbLVA8AywOCwvANpSBRYTj+AdStscr5j+MAMJX4uqdJam0UrVKYLubBCG4MiEzBcUd8eHUdv+Dr5oLF5hgo5m6kia0PtVyjVIAqGQHQolCmiiFB4mbsSgAP3dcecbxWDuzGVXGY+V1YuPk9kROUKFNauE4HEg1s2lDVRJY5hZmv4WvDjDffb79r4VDmYAu3OxhdumoRX6MAGDKs38yvTblD+vyz0tRag8C8TeI+F6ZUXdKburwqOHB0JrbhjFgegTM+rtKKNrPwAKrwYPrAycRxviPs76cqrfKnMl6A0iyxt1nDh1emJlTjJDSKnE3VTICpxUSZ7ZXLzaTnMMAhQb9yIFYExD9zer0i/UHucLKoAVfCCoXsMmGjaad2sbmQqhVG+RYY544Z1fy9rYfKv6Htf552PaS2s7frGwEnXgcT3pt0GK6gyteuBjTXGAPLcjTFKycM+KniswhUJzLj/xmc89GtaUehUvIFYt+rZB/v34twPaOoAti6qbNuwQ07oHbX7AMu1K6LBlt4HonGFmzDH9J0fWBmYRtTLsqoqkW/H26aWK5/Qn32t2DEjmoAbW90j2Y5GHMSOpJPWTf58u6zKfiZ2+VWvK88hqr1Yv6pDfG3aMw2rfskwm3mZFFs6SANblV/QPXwySyDvlbuZ4vZzi1+mFS3ZLcRXihk0BqsEDpjPxw1PgcNtGm2+XdDtZqwuChxS1mSnVB8iEjOYTbiVz694vSR9Os0lNaI0yHHMgwGCd3RiqYXUotMkpMypXVg7SjQVidJHRRZGFwN3OIaMWQlxz0u4fCmvQbcHAuu6fn5r2pPA+VpWjwgc42hcFHQ7STo6ZC2fFFwNto5RrODvWo1BcPKKGZSrSIcVg19iTPnWS8gBRg3PxAVXHj2qQ1kPWmZ69WeWQJDV4qMqhusGpy8382pA5fLPOfueSn78Qm83IElytb3YhgKBTSZdq9hItGorFubbL7oeWjr3ci2yWiJoSJPb9XFJkiVaDIad8bVpx7rgpUBEAjjJ3jo73hdWcR9lrZB41WjSrfRAYYDvWo0HCygKxx6YQWtR8n/LbpUAjKp5PwIQNAC5EhciqziidHEjYdDa85vSukH3tGBxr5hf0QJrGT7fisVDoAbzSnNT89T51CEdDXhQOypFvK3WNuWB4ziqjqDUsVmzllbQEVzcyWb3gh3qLoRVihfxrWlXRFa/L36AdzWWqZML0SNRoewc83WjSW6rXKxgSt9XrcZxo8+jOZO/18PaE+IM8gNfApAn4kIzekysnRpmJOsDYJMmcuF+5zArdyClBVEVwvm2M4LnSQCWW9BSFoYWiL7ZXdSvXdqec5R1AkjwLO0OY49eayVwUjurb+K8CNpOHm2UcKmNXCzPZ6ZdHIjIqmxiJRZj+65Z0I3W89/h5vDPZgnYhMV7JYK2j5Wk5vZX3HJDVmZNv2n6UmmuYffca8MzPwcgr4gLqonrd9eScIdE/jTM6pJpbNPHGLw8yTWc3NFIyZZcUY3HWcIdqWeui7xzM03o/LyxQVNr8bZT4UT1qW6cWqFG8jLFMGv//xPTDgiak5zSTTn8vUgvYA+HDxasPp8lYG//VYkg3ZjMDNHZQ6txSfELZlAumvPyb9cN/3cPM4L5y2FWkexq9ksGE1cBTiCV7q1oQ+lqmGGMt2pyyVUEU7Jy3IDbeXYfn7vm9ChMFHPqLKG71CVUFJNChTgRrUCTioP+71vTDjSJpbR61As4Vwl2IdEk6eA2Pp0loNfORLbJ/KzVGHSBD2bkwgwy+vDrhv+7hxmdL4ZZiQ3rQ12zEkx0+NXCjeS3u+gzx2CPayV5hjtT3qMqkxndpu7jQKK01P24bPgCDHC73AM/VXmNZl1RgVSPSABqxPvOtJcSliUObnAs2qpLYw74nGaG4/hi8JTPotx/OpdG0qJiywUnbGZQpUbjXB9am80+ASB/cZiRD/8wzCpiETPIpG9MItApK9ZTQkKaX6lkuQMTQQTAfRUR5SChZDF6iWQBjMGNUTMyUYIjNpXMujKgdF/du8DfqV+gG06+MO0qqMX9HUk6We2bNr+eTy4SZrjfbhhzfFDwwrP1uylzUxrnDzz0MpmbyVM+6MIMytWC8zy96lMA8kPiwvMwI3Ru4XGYldxPk0v0usv1WivpnnrApbADqVqAYZ3vVZJ2UbwCBV9uGOPA/Xynyc7mS4WhJndQCKtncUGuv3GWabG1ednt46qQfmraUXggcrTFMBgWlBLPFhZdpyKrVwrOJJFPzM946Go1di7Sa2YQqhbwAnHG+vcOM1q6DyZlVkQzipUDMMttXbCZOhKIVwMuwe9tDKz7O8acVbYlUq/cuQozWVlMJA6zric0p9+M1iGIJepeOpYpfhnO99/VQ0hLF5EcJAUA8dK0dzWSa1doHgC8iTKQFULV/pEJT1VSK3fiVpNWhO2mKl+19iZVYe09Ojf+MOBAZoQYoF73vOH/3mFGyUjiOsyqB0h1cCVTeaks8jm+G3DpHFcL2yXYEhxaG1UQNROA2/r7H/+neXyyOuowGuQgKqIJpmeLIr7rDiUn0Tr8yrTr5zDve7bYI2/L+y4YGd3COFAEhWpDe7DKmZiIE8889PLBhmEDdnxsYgj6SJlJo7l52PAuq30dYfx0mFHmx2FWRtNtVjlwU5jJ59iO6/sBlxJOIWgRQzxNcIW3VFc8zzvcjGXyyjquSxbSyXMYc6d4pztWZml+qvsIW7n6fvEI6l78HJkPI28DVbWtCGVeQLCW/WQuYSupI6s1rF5Qvjsii8mzqoVJEq/FCySmGyIlFLzQi1GnZfH+PcOMBqeAXIdZSe/XhVsH4C8NuAQFUAi6Qi9uJv2w0pLn/UaKmGO8/a25DmNM2Dg6QtEedAhsVgWsLAKMProxQAPw7ZqSEqr/6Wdc/hWYVKg7CHhrBExZ0gUr5boo6X2dmLhIHGAcjlwmKNv07wEHDnBe77XAUy4ASoJww32OLyMMCdZPhhkp5r8Os+pWdrkVaYT/+YBLjVARglZySdZB93p7/yddxSghIbCFGRlUUT38ZBJH1Aj6g30QcQHVBfyq46g0WfiK6Wned1lHPPwMm5gol+CzKPKG6EbThSj8xlT49LGnt0qwxyxW8JXfF8G5vWkcPFCaFlzgqjI9FXhMJnUjznEc+HcOM1KIqWFWcMc6d4LlsXTM9Cs3UFYA9vnYeOnXFUEPY9MlEpmG++0fcBN9vQZl7PWY5XuRHd3U+6pLd5HAovC5c/JAr4MZO4pFK29LIC3fP4vn4A8Jsk1eWfe7PFq5mggEHkfMwRxTIZX4fZwg3WhW9fdMsP7+SCGTCSsh3hvOoPHLCEP8AmCXhj8bZmSGx2FWWcJACMfNZwnJ6//+ZGy8fOgDgnajG0usODHmZDb0wuDJhPnUFaHETXBDxd2vRFHtnnOT1HFUd9dJY9YJZa4EUh9/LoxyfJogU4XVCShV4bSLkq4qozO9ODjoyQW6SnKWECbya4aJPW64NPuzCENG+afDjErIapiVuACPM3VKUCNXW/tCzwoHacFaFFpcHnzoBwQNZz7CICKKIeHzF679gWYXYcvsruIuOME4E5Bui+GkWYXaMu+W5QJC967nePp5jOP7BNmYl0iDzxricJTbmBqvqnx1ppZuH6siAkfi8wKP+YHMO+sr9/bbn0UYfzrMaJ33PcyqHreFKkG/z02+asqfjI2vNzwiaCArI9hdOFwfVepUW+e6bbMe3QRqCqv5eX6hkdet7g1aUTObXIJKF6dZhPp5T3UFFeerBJk1WE8qIUj0ndfK1eVJdG9tot0KH3xW4Jle6Yha/4n7ukGxw4cIg4tk9vNhRudabTJ7wag5SqFknyfwV8bGAz78JYKuX6y9InlZH2kvHW6zoi5C12JD/BNkPdVnjt6kte5w06Q1uwgcLcbVpbH0/KMEGR5vRKoTa2HK3kuXrqlTdOWrzhAawz4t8JiYGzT5PmYh0JamHWEIbIocosyhltUKKbYgAICGWQ2j2yBRYviEkhr9gFkb+ydj42GbLPGMoHXPlNqLlayfwWcJhX7M79ciS7g4gof0dmQ249jMEM1dqHUN1snVj5HPP8N6SNX6YYJMYW0D0VyYxocImvleSB9FqsyquM16ik8LPN1A8mTyX0cYZX51skh3B/F6QsDXYUZuBsTCqQoggPn2C8AePoHcvYx/OjZerV9nLAKlNjD1Kv6i0rZgSpZgUGVaploltZtLeGEjXTUfhvv9dulULgyT6+woxcfBaWaPPw8BYDO229E9fJMg67kHVLXZSB69Z6iSaWmHqmeZ+PS0CuQd96Xut0eT/yrC0DEw67w/hj9JZo4XLshzc/9DftSqd94Uel6KOh27t+CSKHkxap+NjRcqNrDriWGXYnyVr7cASVuzq34K1xCcTJxRVUbhq86W1jPfz3snZuoZzgKASmQlsM4bN9r75xpkyY1kzgPI6onwiZ6hmDUGJmmRkrmawgh1vzNl9lWWlJmQ7+MhDpqR/1zggdVLXpn8HnHOCKO7n7EHRzBQr5CuxB7nMjJ/J5S0CWYBK7VawrBOdROXiTSvQyb+ytj4M9dlGGVuj2LK0tEFJ1pgxSgyCtJVCBOFdx7mLxlXlutyjLlp6owQFN0sFn4Azgg4i8vv7el2NlP3IMX4LDqyMQHGP6VLhjlcpVCZJ/nDXT83H7D59jHfz4lOCYMTfDyafIY9DdxkYurnv3qGoPiC5o4w47Q6AkNz/JWx8YdGUbLaWZbSm+61CSfe3qNHxze63lalDoQIcg4Zh2uz1h4yDWP4pqNo3BH3uzx6uYVFLmDfQmVY62xDCiuF60+jo6kNX9TeV/XzSioszDmY5VKu/THRY2Co0cMXjHn5PUlcgG3nv43gBn/tDEErAdwuSYyj7I366dj49qPmTTSVuQasZvKawemOXIAPZDWT7ArOASpsVEUbwWyo2UM5gvtJK8eIKvkkAnJmu7a/d6YFvjqmaqR+4RTS334YHWmGyhOarpso7r1LRjg70Fv7rqhfUhfk0aNR546S/nNnCKJ/Vwtn1CwCrgvg+2psfEcCTKgo+WNcB23M9r3EDgoj51FhJYmkjGdKLXLH4Z2MIfio4RKjE26VxOEezAPnedvWmUqV6RiZPfOwBMUQUTf10+hoNpNVwiVOvB9V04+F9KlYAsr3f4b6fdaJHkHw9N9+hiAt2F8aG38J5SScEpxQWhyo4o0XiFWCRrxE+XEQlyTXyqmV0uCyUBRUaFIbAzU3DrAA3t//ySoj09YPR9HseoIhURns4PSSn0VHU2vS6Jj/JSeCw0eRF0g3ltbciZifUb8SPQo3/p+cIQjscIwP/keHQomv0PxFvX6j2HZxkbAxEYukUkVNqFjRMwCWpvtcEeVMpAwSSqAo4VyHK3llkDKfbjBmAVNhm1LlWeC2ACQt+TfR0VQolTTNGvQEM/5uMjSUNpTfd/iXiZ5dKMJ/+xmCf3VsvA6F0kNtv7wauZcJj45MzBwTRQSR1WvImZs9Va5LGquIgFk8hheKmlZoPK8ilqxhk64JIsA6a+wdYnVr3GYf7eLad9HRlJ/6ylS3NTAHsHqT8QH170TPsOK6yT/pP9h/wxmC3CQ56T853Dl1FtIFtBZFbB8TLxwAGDJO3KMoXtqkArK7kabvFaX1cd4JVM8GwgKCx5hVhh6ikBmbUmvWwZhebsBb82j+F92KhLOmjnwXHU0VfL411WZMZ9ZGnuedyaHXiR5k4P/VGYKKLgVE/+RQKEVRPbadK5XcUFmXldtSgGoxXf55dLOn8JUPUcwZ12vGoUB3Bo7jrS1ERyBEBsWxLFzhzryHKXVdkZkbHo//tS7/fBodzZK+koKvTLUfvzosjIjiCxqnVrDx0i4ZsWYCmXxeSeF/+gxBk5b29v1gbLzp/V6XskuXfrYN6IUsgHVB+ZSFSGNTqgDeVUQUjqr7Z5HeSNQ+DwJ2A3yvfz3rqiIRyhWoMFVWlVKbwaaSXRDKzG+jI/YFfG+qvxwkEdXm1WaXs/X+1fMG/soZgrWEOy9QvlZJIIahxDNfnQyS0sLM/rfZQ+bwo0rU9NKFVahaDTAT0PEwHR1kcm6ywBkwx7EF6WL15MsVgkZaC6IEIwHMYZ3wCfEpn6zkZ9HRdATwjamWeeej4loFrBvfV0ww1o7reYLCift6sP/MGYJ6ik5oaWXFbIqfnQxSz/G4+Xpd85047NFNE8WsLR1k9SRciiyE1pVVTTQQrM/fa9lzls3oTkmO7RwL2UcXi+c+OdPAa+bRN9HR/KmpHnOHe3/U5vXffIagQi3aUyhSqoWPFi7thRD488kgaoS1ROcOva8jNaA/XhchB/+elQupdLf4kIy4CFylFNJUWeLCV7mriOblBsbRvn+xNnIcbxeBqL0Q6LUfREfTfmiqLTX6ZGvoV21ejU8TH7uK/5NnCGqDZVlsz8r/8ckgCuXMkE5scwFnzeghxqgG0T1238wZEVxD6FqAtIExDpzrzuEahYFkHZ2Em3XeoRauKdxA811lXQA+cJ4aj/No8QxGxfo6Opo/NtU+/6jNqzaTodVVaP5DZwhCoCsrf9E9CBSUPzkZBJkPKL4WvaxTmnOSSCVVFjOB42JBM4N1CrtsPgUhayz/MCDY6avP0RkCCWCf3EKlVOMoVAcguFVa+aXFy2+jo6kb/M5Uy2f8vM0rOhsooflPnSEooJjIvl7CHk4GSTya/Vcng7Q8OSek6qny+kp09y8fhDzH3KANu5KH3BrXeEBW6LJuVa8gelsKVkswMlbPSrqi+jSDjXIHOsnk2eIN1LQVw+4tqNmeB87zTkbQD0y1/B5gP2rzEp8eAkyG/8wZgo0dWFBROVf6bvv0LmXnAttkXk8GAZ4TLP0IFZFAMXkJWh0moVM4KgyrSOviY6QALT6tO/2lJlEVoRpc07VqTb6seTD3IOVQTifdMSQstG5+/OooalZa9HtTDST+pM0LMuMqY8e1q1grUDn4Pz1D8IzA25z1QJHAKmC1zlvBObM9qv3CmNGqVjqV4Ey6TGt2TbDsiicPvMptY5PCYpl1bkFuDZSmKoMAarJJeMiMTgOcsTuhPNd1S4qrSul17V1YfkL1QMf3DXippJA78QmLe1d1MxamwX5kqgWqysTvKt6rNi/gdVcxcptoYfc/PUMQqMLIedZkcvnqiOxYOAWE7JExo3nAEs7mBiR6rJo2wYwZRD5DZF6eaQuksp5gtKBDsSJ4TctLnsH4N1K6I6rsfYkAtA9KzsGAMUill8vNUoId4mGTbpJp+Nyfp0pkrBMx6txCpcOn/cRUc1NKAb5v83KfGIdCOeB63oA+6S+dIUggp6LMIku4tFEaji8ZM1eHXwpSbkwI6JpgeWDYXKyRAGSdVEYloUtQs8iyqqusTo5xHc0wso6IUfNHZyaNa2RAN9fQeoyLz7jOTqgaDt0G90Cb75boAZ7rhHNuInLv5/yJqa4awPdtXsgqia4M4H4+CJHOG2jGC8p04xJ2tacU5gjG4KkzBO9lobDLpMu8U9BXYPYZY8ZQFkzpMhveQxdKNq7KULF8NhfB6oRwsx2aMh5vmJjAOFTm3RnI7h9IoNHEIi09DT5nnWcEdI+fcyCWm3Po0+vZCe4TfbgVdiZUWVKonwKy4tb7Oau3//zSVD9z/rWpw8oV3O83kkLV1aJixuOx6eKzq6ZQD580AlnCRR9oUe3llcOeWLG67gBNJwFfhwufEZ8zZgLqrHUEKrk0GBWILxC0MMfx1kRU4YHrSZ8SFmUrkvdRo2IkbAJqRP1aY0j16cnTcHv/R4+7NyL1flmeWPl6doKlYd3vu12+wTpasTKBdKa8z7OmvxuqLyDirB73z0z1uiHi/gT8uPjPwK+1d8nzdFdxm7gyNvUVlT84z3eGbELexeOPKN6BEcWjWa1kGseq3gUKnu7B7PrwXAzhAIZl7QkYMgrgzTkRFljnSaQvgGwNCvuzGKXspJTmFurz2ydxJeSTS3gUGVR7PN1ZRk0Lk1WyRJgV0cN45FMCqbnGz+3yZg9jZATwTaNkzDvEjTo/aNK8FLngaqrVovQT4Peyv58CqWPTI7Q43JKIyohl1bEfmLJWpE/1EJqTEuJeBFJe3IT6t/7T1NFqmX1gzDQjOYOtVSD3cPLsvkUc4UgPKOupjXUBwE7rFnMXjALEISwFKFexh1pu7TegY/S2LIzzpQjNy8ACsqxYJBNYeN0ujybtPgL8Guf3DrCsn/nJuPhAjTz5l/r7aRK9BQvtWgS+T9bpjS4iyG6BD3YiOdZdzQxaX8NiVaxzBkDx75ipqy6i4JDnuvdnxoy4hQmwKGU477cK18z53OIb1Lr4qCJPY5jEJS0MqM0LEsfcylT7uU8bUWbRrNrbCE5kG7kX6KTTw5g7KtFn7fLF50wWFjemKfBaRTQfb0Csz8fF1x39i/39LHs2j9/qmieuCwZoqc0OzG4Xi5rAjQ1eqmFiH8823SujdwWGQAumtNWwGTMidp4CpKEuHFqnMaEkkr7amnBDdL/HZDjqqOwh8w4tAGXo6q3eNUScV7q5DShNBaDuUx3QtoGt8bnAlLHRsj23y9dIuXzq3yC2U2k5gYgiAH06Lv4z4CfAJDn/ur9/1w1k+hfNNrJGr1WvXwnBG6eKGBe4CjXVAq2S79DoN6JZgU7lxNvqNygKnNQaCUptZAnC8fYL5+1G0+17gJJRYy9aeUXyx9sbzts7gN1kCrc28ea8twshFFbnB/e1shQGrvnIBzQq1jUPWQIcq8fcmc9P2+U7QmgwaMww0hWt3Oc2YH0xLv4z2rf/QX//JXHhzoMWrKZ0ChFLW4aLoGxQ7VxxcCDhF8xhvF8z24OlGDEkeI+ZFY6CRRYDeuIYC0CTSL8oY0Dm4mGOwJ3m2aDziqkCVodNn/f3Cw9v45pASF3Z2KL0umoDTwidmjQI4mSuxeAxn6jxtML/lfH8rl0+gS28PI0FmQ/nNgw/MO+Uoqu2uhUOiLhxXWkheMjkwxjzL/r75zxqP21grXccPEjZxqyp2zAUs/tArDve3/+B8rV1GISJeiU/yEjFeEZAabQjjbEuLVRanfA91Nii7cs7o5ISrPN+60OYAY5zgaaZWwNHcAMjE8dkeCgNM7qyMbHOG9yP7mbexSP0ZumzlfmUP0+BXwkAI5+1NMXt3MLh88t2eeGzzBK/55PhQDAbcWJ+Ok06NWemUq6wucmf2RQJov6P/f2DKVEkcHv/v2WWZ4E1nLc6V4cLU5FA3cOYnHWXq8DjBSUHO5YDSc0IaFwt9OnO00dJr1ZnUyK7I0cWwGhNBJGSGzqIAzJ3GXjwcC1ZC3BhYZp+XgdViULX9G9UsmknwAy5oi2uj8E5BEB3EUM4udyGIh3+prXZkB/b5fMxHwLDhUzyONYnEp+Pi1dTyMuBUIzTAZ7a3eZ+Z/Uq7WpYt3/imEdprQ+s22/ocId51Ii5Ra11pqDNilyZMnvi01n1KZSEr0pbp2FYInwgzNjaTfEUupYvNA29IjgcO/uwSLzsDaTlS6BP7mj36F4IHBXJ1NjXwRPGclshNWJAMFu+ipvPDJ/lFcAKZsiNyjUrTDYM1PqdHGDR4fqLUX1m1XhzJfSCOGvO48W4+HnsDXx1pmA8nvgxxoDFwl33ytO2zvtvDK/BzOPX3ytZw8Ub87/g60Z3ooaU4MZWsqNjV5QL2SXi6zSS7PtCBo558MyhEmT5VOorr8dMo8AkeDgksrp4eDqXrOEYE+suHn/5Yj+Kl7fIBzSgJoyxQVSWTbyEEoCis3VKFtYZRX015mFiiA6ufLkfl9dXCR0Zu9+QVlxFnroHKyt6/+TchvvtaVw8JUWY4LszBas2Xinhidr8mmV/ZxmykhHn+z+hY1R8/sK6/25kaiD4MSFzQ3SukJ8mUEllFnwEH1pp5iJjEKQSEZcgEARxgbtrNgESrYEEgmjOuFDjevo5cZCpiscRdkLXdwE+u4500enouufS9B6Po2fgZ3ZHkKkWwXS5GdbJrl9WSrtJFehuYxsvcjeDbrcF5ZHQOwHgjG3ar8eYx/n+WnJsn/gxrAogz7P5nCAlswoxEYHj1391MqRy69oI54bVDYap4XN1kkhJnzMTQ2lVsz7ebSnJgugmDPPtDmDWXHsQDyxqUNiu6ukI+snFNPOi1pFgYagCjLEfYRAvJT9jcopKRRyOMZxVv9yED6t7V1FqCxzPAUBZVmcoqXmNKhcr33DqRDU+a1m7x9wNYJ+O9XEDZvEFdniyMUEC8w06B/dZcpq1YK9n81km8tI9e8wD6/57vwj7gEVpTq2hA3n2pquDt/lv5lioAtFAInn6ue1YDBYnlnytchTmnboVaHI1czLk0oFVsVb7dmn/lbXrPnrNKiIoITh4QGVeLJZFUhA3J0gCWj8k2cOabVzuw7zWROcn7TlCtdHXXsayxtviXXM3ZkVMfRXqJ6xo4dvsCAmrCXE0KnlFBR/Wd9xaBtTmj/l3oRms+z/qmnzdToF6uRkkO332PHwVngZjpDQDTPy6IPFmM326dgH07CEk09cXXN3TQw00u3KBuVPF3k5iv9Z1KhqgtvHks0RE5RTWWRgkSyCN2qgm0nYEkX0WYebCwOiQrWb6o3sNdD5S3GWNX/cyOqoy+Jy7qWEbL85tIBV9us9KU3YYok0nDpi/PkiOmdEM4+P0CZr3Or3LkOu9F04AKQH6MMdad3Q1LhLLKoZ2bvw1DOwHsDK/kUohUxisNKMmebAIYgW+qjgNwHgKeVyGQxOtO3C5VtUwSrCuoXK5leCY/QKBVtlEXF4bicBZpBGzJqkIOOY6m6SSLU5E8j6QsmEsMp2ZX/YyBowUe5aqM2E28Pm5DVW3mPd1+8Ex5nvOfFPBNWH0vFcXcBciCFoInhQOJgJLroEhUjmA0bggs1KY4cWRcxI0NXgxlqp0KHxAS5XU4uptLN8XQsMETLrvSoop1ipTvW63ela/hLIMpxJZPXz8ffgGlnMeWGfVOyq01IhcUuNiZzO1U7uLiNECLV5pINNAeULj7ksvdWgFLRk38aGXkfgtV8PNik5ejPHnluB2v2FWmPHdMeYCFYr3UQCDCPhVF3DnA0yPXyZQ41pC4ElaFewmhjJ8VfbUmTp1OmcJ4hmc60eU7IOkFj/QFblMJEMxDYOKHsRELv8oxs9xvF38Z1knzewzsIcwwY0DwM3vxo7cLX2yUnIjmgdoVi5O3CGtL9iJpHE45lYciIKnaB6C7kPWsr8MQz59RQ+kdG76lQB6zQ2kVYJvzp8eY25WZltUcE7r6hDyYobLfJ40bN7+aFwsC7P97YvBeXptNXAJ/cxbOAT2SmHq72vd2+xpLJpB4Q83Lvb+Sijv9zLbOq/YZfVQhSiVcberMcAdB4+fAbIHTDZu4VODiazy99RYMY5RGLoqlQUoI08WsMo8l7AVhd1pPV/1Mk7breAvB1LWrPi9Tw+8jlEDIv7kGPPi3TMbBgD+urVsvP2tNFdlYpI8a4JYxeWWu7Rryq8LQ7QlGpQphYw0qxoXBxQFDGCPQm2MZZJoukPBJIAEsMfOGA+T4sKVIO3sXbGdeCaC7bSvnfeL1eP9q9+vFg1L8rsCA3vABXhdjY1fcdIyUvhTfY91Wnmuu7wMFKWNnh3MNWgMZx8GUgbT5a94HXNJspH4yTHmpoWM+otSq8+tZeNv/4O+SgMh+XjddbMzgIupYS16At1vWJQoCd/ZkYqBbiDRCZB9liGAS9YtOyQygEyZ4Tu/TvlEHw2TwfSp4WI3yIHkzzb4bKyH0PXIZZ2R2k6M1tJtVcyAXCfOXEx7O8wTJy0nTLOZz3KfvFU3Cnw+jsGtkK4e1gQu6VorXSw3/sjrmMiEjV+Fgr85xty9kCZTF9AARODaWlYLdP7+vwCq3m8tpdLGAoXTdfxqWZj6kxg50bVxgSRPCgfpWvq4ykyq96/VoaKLiEtxBvQsjGCokcnf9bBnWFcJZZVUY+iu4QZ+wJm1KT2Vi26E6RZGMhs/6XkWgdsQ8zcWjGXxIpdqBhMHP7uX5aEh0KCnEgwmzl4MpERqXVtFO8KaBmb54vtjzBeqGjaGbbInd6EXh+Av475HmZtzWpa1fzt4cqeYt21ZAOhksE4AwSHKmWZgK8x0YpZH7bL9fSbyJHlUKVglg3q027qYbuEaAdStffp7RxQoLoSxchoos6rxL0MpdKCP3tHhFSeZO0ZBPONsyvkxBlJuIAGz6F5GMYdejcGFfz6Q0tdrXsdEnK2BCh6+OsZcySGBnxRxgaBEnb7wgQFsc0R/FWthsjetW8rZRj18VP3bmIwRiYELPgDEOnGe0aArzFGxvV0KPIUHunzLheiGSmpwJ3+oUR2htKLsGTsChvpaZCQLlmUEjOyqGmmz3ZIiqQRwj1X8ALqbjnpo4WYXxjZmCRudCcz1+RjcUpR913KrzQthOvg6zm/+6THmW7P4PTNVnZBBkSwnq4p9TRiO+VYhWKw+WdQISjKCiZW9eb30uaq0S+DiqvMzDyC/l3HFAeL6782WIFR9nqPUbUDFqJXopdRcvkajKr5Q0Dfir93lwNI6b6nXSUmqkpwzd+ewhFTu8O34VW6EGy/T/TD3v9Pw2ZGAxuBWoFH5lKDSdWyabKAxkUY2tpk9HJn/BSXo1THmER/JGYaBZKgh2rcOOwhSwSMCb2817jUiiVYZ2mWBIRVJiNG5cTUz8Gr4wOhDvX2yLNuNbI2VNYisYdaSdWQ204Z0HfTJKSq6QBtnDXTbOghgcVOO+UYXyZ49vwgw/z3GgQO1qQkmszjDr5ShNlICk8oDJLpBVDULCNzhYrWymlyWwlGzh9kIwwzwyhFcx/lNLusGDu6fH2M+ixUkpL/JGfsUjEKn9f0i4VNdNi1RF25ck0lliGLn+4+3X2T0XJqrL+bPUQj/Go4xBIB4Dsl7CC+0WDE3irwxBjRjEAxDux5AaSmMUOXd4+1vUB1fh0uhWIBYjAiazOkqoVfSKEjZMo7FlzbLLG9rcZlGTiGO817TVG1bgksA0+sYcx8bd52NUIpdLtA4t2B61SGmiAs/Pcbc/CM5o7J23CJ3IOgjI1hWTZ6CsaVXvIPy29Q4GGJbLdx4PKuxQFKCxk4kCuEF+tMSKC0t8828unmPgynzaN2zYOa4nbfS9CjwttjhXBvhZYnULWzVBRTsfdCxtLJTII4qc+tsIskGmLxTbJbyTmzVSLhak+sgDIWXAeyW8LZwNQC6OqhE1wNzABeOIzFejZItwZvdBdTEkCRafX2MuYYu6s6kdS6SgjYGooPz7D/lrzNqiFHstulkQ4hG1sc6O5EBdsokNV4NHfW+Mv9GS6UHlXA5x9v/Ov5etXN3hnc7FLM0nHEyjELXGiJK8MZ4g2hgTQoBQOgoVWUnslyp8ILT1QRk4jT7fye9hNqreabKtuB6J4Wt7u2ME1OI8qIA9aOEYbO1Gktl7JkJuLo8K1bwnxxjDvmY3OQMs8pWNaBK3hAXIfmAldyoJlItJIBi2aD64JGA8+g2y+xIQki59BEt+crFm3ktjtcBTEL7kcDtpNtiN+5jh0/V58/zXngGAYwDZkTz2tIVxB/JnLxflMX7+bpXwcui+hzIsG1dzXAS7KlqikskkHAcnCRK+g2AfaLJyiStPho3ZSvi4/G3siBbW08Fnhhj4v7+u2YM/tEx5krsRMKPt5K4ddLUQoFk+6syECV1g10/AIs8l7DteZo3mAhaEd3BaxfJ77DtMgC61uDEOEprV1wKVpzlL9NJCFebGULNBGj4iOZzWJE7OqHy+Nmvhk+bb4aUqqfuBlv5bSQAfH6iie5f+yFgalp7sGWtD9WWhdiu8f33P2BmmLABRQU/Oca82MITqqtHvD6yTI2dCXRHS4dNomKngObHzbTxVpIKdJ/BTwZAJ9k3IUGaEwdd2B1n09A0ewgwzOFszMiXaH7QTI85epN/OnxajB6FuGudmH58GQmoiCX3kshuNzda1eDGf3X8bU0+e22RfUwMd0xcBKQxQFeLNjiTX0IC69w+85i/oMzdxyPL7hisnCXBZGaBJo1EE/1cuQCMHeZdI4W2xgROrwZAT3OIQSxJz6wR9C28inY+OTlkEd37GNq9yg/ovYnuXbx+dub3w6czAZ/F3Q9NJcfHSGBowNPlvqBZQRQm5UAUHQnIV2JJcwsvuZQni2zMTPaEkDJCkiZNCfl4jHmSD1cHSB2lsVGIuYcUUAs2MeTJHYCFHtTU7cRCnvW+bWu4VWTS/GQANHiv11NBu2n51VcGnk8O0cL0xqUqnHjYEPH29Nk/HT6d5x1h++SzBzfNimKgyCTX+9JN9IkmZGx3tHP9svkQJbhc7cUix/29agHXQolKrTJxr44xvzMZNHg2cGGApyEFUNixXYkCGuXiy9dLgouL/2pkW5M4LmlZs22VBIQUGj6fCip38RnWeGbbzuEdjXwtKP702T8bPq28hoCfzPrJAzKysBr3Ifq+rieauI0Pgv58/G31RWbLgajxssjKmM5aaAkBzSu3LfDiGHMCwmAJF3g9pMCwzU7XEmBdZub+U8u9u2oejpiDwz17oxNormChZjJsExWiStJM4io4q81+gTVenRxi3wvKlo0/Gz6to+8MIoQ4ApUv0f2OKQA364AnPLKAr1XKz46/tTj3sI1WxHywyNMHJv7wGPMyJ6UR5b5fDynA9cELSQLYp4Rc/1Y8hNUgMt13Khpo4fxMmtsyZDaDCdhWSCb5JyeHDP8zQYHur5dOivQ4fFqAuDaFyTcfxYUgVhnXyMNU3ygtqYxlZSXrDeuDoF+Pvx0Acztax+ymVa4OAqhawHXBBCpeHmOeO9GjlOerIQUCkKJnveobUFkU4w3jUxD5eO7tV9KshwKS9K8dQ38FHJ/BWz3b94JyTaxk7tv4dPh05yWYmPGxD80yFwPmwdpUmJcwC3IGswAqeRnPgp65j79VMcjoDkyAGzvSmzbr2DgA3x5jXsjchIYw5vHpkAJJHNzx1amVYFPGVyCyzfgX0ix8EXvE5kMMnRSCV8DxGbwl4keCUrX/jdy14B+GT9NEJ5/ZDbAx6Ao3Q1iJJSj8ZKm8Mqc6f7jWeaUxSfs6WQSARbHKPVTz6V437UMNi8788hjzPapdCsZRaj8YUqAb+ezUymIcfQ0iu3D0hTSDEi+s0TebRDW2N+kjcNzgra748yNmwIVFvh4+fa0qavKou1e2lePf61yBRV6jaHZ7lpDJOlxwpcK/svizn+35+Fv17HUzjJTnsjbzu2PMtWHXMEzFoa+GFFQtfYcoKZM6BOLO0pgzvgeRJUmfSrNYMcOkHY+xfcfQxA7KhQu8DVNeDT0kQgWvr1C+8RlDZh6PkUy3dF8mj2ZwppDWxdAKqESUGaoAxtqFH2+433735xmMAF2fwTMF8ZwsOnv9Htwu3RoAzDHmy2PM8bRhXTV0aSFNcKyPQwpw4cdx04CnUytpITRU4WsQqR9fS7M2pKKAjyEb1RF9rh8thULGT/GA25coX1R6MxV1BJUlmCSV0Lr05FFaWSVrhgn88dpcWzPHGTes+zsF16BQUQWncp8nZyH4bqQV1f/J7YouoSGf89Ux5jrX7vmYUZl+RfiRjD/N++hyIfQO1RROaVhCXsmMVoMi/xUQecmIGZL8gNedtG5GqrgGQ+AbM79H1T+jfM1GEnMnzfakj4vCBIDnyaMlfIBzlkIGQ0S6K3EUzvNGWTJY4yyBdFoV34OoQMVccrNRgyOvbrcfhHhu4oqwm0DxesMMFXcbQY0eaMyd2VrnvTr0zTrP/frUyprGsf4FENnkH+w0M/J8HbK5OmmraCVd/drMS6j7th5QvqWGRxKtC5DRYiA/Th4t8mhdUK3tABs5rKqIPjhQy73qEO5w1Q4qNOhIQCNueNcUTq6HgQMmhM22FqUBuU7Me1SPvOV3G1Z+VtK21r1AHRFrzwJ0r3GliQ0M7dWplXVekGrWfwVEPktzj3N/Ctk6pmZN3vXeF3jgYzKn+hivKH+1Faz1kThdI49SwMVx8FcSS2mx8fyBzOQpXwTiXrMQ59svmKmDuv6Lcw+XRARsUGGh5HhucGH6rOyeyp4Ea6LCZx0Y8bMNKyG439/LhEXAxxt78phEgvGsHAjP8r0fyYzK3Y9j/iUQeZVm4JICfuHLtd/65jrQQXjgy2ROPtKyPxSVVIe4oOslcsyTYKjKKDaRwWDzjSwfAxA4jqMAuY/GL9UbaVih0NOwbr97fwIVtTTFTmsGKsd5r3shDtF6zfnDDdOBhEK5c/5iGpInf7lMH9kvhv7dM5lRCjzn+OsgMmJLszbYSi6MaEpcSk0kbz5COuf7J35ykpjCUuyXPH19jDw+C0nl7kSnm3OwiodqAYPRdwds3S+bCZyX963ztl0jFNptALpxFFqRpzicEa2w8ycbVotvGHPWGbnjqLbwnqPP9vE21xrxwlKPwrkrmTEC61So9VdBJJ+3QzHUrOAX1S8kWoOVwyV+o0bpbx+TOZ4hanQv8kOtIBPRZMbK2skvvwxJCfgsg3kicg+J3OO81ebzGc3fyBxiFdVIFTdtv+59tkUToGd+HW48UlYuhAsw1Tv23YaZ7zNs1+2fu7lSc2t5I+7efHTve3w63yYTSygfvo9Z+SMQyapaqp1NAZf2vh78Mz6C7kwcQOTXJ4m5wmR7XStoshGfqzTydUiqNW72se1jesGNqwhIrXMnMk5oIFUCMAJIuRDweYU9gIoGRDAtPudux3dvDsUPNgw7lFhxh0afDHGBOoAlQgeaIwcjQhVc5iKO4bif9VodiTaIehdZLDUS9nNMsjN7gGMRQnxdL8jLNcz2M58XwX8uS/vYhFDkx6JSqAFWmIAKk/GximjkUoBC6YYPx/QmSnGHOxB36PzgDvdA0kfmw+jXxjN0adV9XA03aoFvgMo1n/qV+wDW7cOG1UJna2h9X9knG7vleac9SVN+cWplHfy0c/zGuFwza1YE8ly45hl8jEo5Z8XNxIm7kULiavhRvcAIxrRUwhLDnA0uj8mcMvHRpuV1Uenpi5ov/+9jPoakhp2kMR7Tm8Xc/TDNyw84G0Q0uo5QFJ8N8DTUETI1so/td+QyqthH6If/HwPLW05mv8UdAAAAAElFTkSuQmCC" - }, - { - "uuid": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_0", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_1", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_2", - "url": "data:img/png;base64,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" - }, - { - "uuid": "Image_room_2_24993318fd154d40bf9444582cf583e9_wall_3", - "url": "data:img/png;base64,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" - } - ], - "defaults": { - "Wall": { - "depth": 0.1, - "extraHeight": 0.035 - }, - "Ceiling": { - "depth": 0.05 - }, - "Floor": { - "depth": 0.05 - } - } - }, - "object": [ - { - "modelId": "3dw.e1243519f6939b30601e9679255885a5", - "index": 0, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 0.003665975653096254, - 0.0, - -0.7131067762273595, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.9999867860876342, - 0.0, - 0.00514078302636467, - 0.0, - 2.0787320213298486, - 0.0, - 2.6028004824144833, - 1.0 - ] - } - }, - { - "modelId": "3dw.cc9b086cf5dcd3cdfb42fe3b0015a2f4", - "index": 1, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - -0.8586205949889768, - 0.0, - 0.011366818571005653, - 0.0, - 0.0, - 1.0000000000000002, - 0.0, - 0.0, - -0.013237304941503377, - 0.0, - -0.9999123830405773, - 0.0, - 3.2561498681612386, - 1.0, - 2.065567638097813, - 1.0 - ] - } - }, - { - "modelId": "3dw.bdf128e71e0a63befffbefa91d5552d", - "index": 2, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 0.8606551580942446, - 0.0, - 0.01173750797711543, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - -0.013636607507355746, - 0.0, - 0.9999070171449396, - 0.0, - 4.806237772897911, - 0.0, - 6.734114127143927, - 1.0 - ] - } - }, - { - "modelId": "3dw.e1243519f6939b30601e9679255885a5", - "index": 3, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 0.004982593785287175, - 0.0, - 0.6213539495849344, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - -0.9999678499318719, - 0.0, - 0.00801867212381252, - 0.0, - 4.163935044740086, - 0.0, - 6.147181709146507, - 1.0 - ] - } - }, - { - "modelId": "3dw.e1243519f6939b30601e9679255885a5", - "index": 4, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 1.609287746425358e-16, - 0.0, - 0.7247587695133147, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - -1.0, - 0.0, - 2.220446049250313e-16, - 0.0, - 4.168571878787879, - 0.0, - 6.115515724517907, - 1.0 - ] - } - }, - { - "modelId": "3dw.e1243519f6939b30601e9679255885a5", - "index": 5, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 0.0029258757383100464, - 0.0, - 0.7110922999714586, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - -0.9999915350520214, - 0.0, - 0.0041145867717053974, - 0.0, - 2.053023897641588, - 0.0, - 2.6019881614241562, - 1.0 - ] - } - }, - { - "modelId": "3dw.581c8baea2ec1161e8109480f4780398", - "index": 6, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 2.9503284244372485e-16, - 0.0, - 1.3287097992916175, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - -1.1882741514631745, - 0.0, - 2.638498645042674e-16, - 0.0, - 1.7040729476584024, - 0.0, - 2.5899110413223143, - 1.0 - ] - } - }, - { - "modelId": "3dw.43718f23c7d9083d7eee615e75bc3b77", - "index": 7, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 0.005140783026351292, - 0.0, - -0.9999867860876341, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.9999867860876341, - 0.0, - 0.005140783026351292, - 0.0, - 2.4372753335948913, - 0.0, - 4.832310157513868, - 1.0 - ] - } - }, - { - "modelId": "3dw.3111b3a7c5cb9355a28b16ad9ca2f28", - "index": 8, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - -1.0, - 0.0, - -7.657137397853899e-16, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 7.657137397853899e-16, - 0.0, - -1.0, - 0.0, - 3.268594545454546, - 0.0, - 5.205030258953169, - 1.0 - ] - } - }, - { - "modelId": "3dw.a490b13c799e605e54d7082b34825ef0", - "index": 9, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - -1.310509157735665e-16, - 0.0, - -0.5902008554443964, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - -2.220446049250313e-16, - 0.0, - 1.7794136859504135, - 0.0, - 6.080683118457301, - 1.0 - ] - } - }, - { - "modelId": "3dw.72863e1ef3c0a6fbdd5cf959690bb73f", - "index": 10, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 2.5509544903581274, - 0.0, - 5.93213046831956, - 1.0 - ] - } - }, - { - "modelId": "3dw.b808d1b9b4f187fd456cbf78e1e89022", - "index": 11, - "parentIndex": -1, - "transform": { - "rows": 4, - "cols": 4, - "data": [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 3.221021895316805, - 0.0, - 6.02213046831956, - 1.0 - ] - } - } - ], - "up": { - "x": 0, - "y": 1, - "z": 0 - }, - "front": { - "x": 0, - "y": 0, - "z": 1 - }, - "unit": 1, - "assetSource": [ - "3dw" - ], - "assetTransforms": { - "3dw": { - "alignTo": { - "up": [ - 0, - 1, - 0 - ], - "front": [ - 0, - 0, - 1 - ] - }, - "scaleTo": 1, - "centerTo": [ - 0.5, - 0, - 0.5 - ] - } - } - }, - "selected": [] -} -``` \ No newline at end of file diff --git a/docs/md/scene_json_format.md b/docs/md/scene_json_format.md deleted file mode 100644 index f0055b1..0000000 --- a/docs/md/scene_json_format.md +++ /dev/null @@ -1,217 +0,0 @@ -# Scene JSON Format -In this document, we explain the scene.json format used to describe a floorplan vector. This is an extension of the scene state format used by the [smart scene toolkit](https://github.com/smartscenes/sstk/wiki). You can refer to the Rent3D++ dataset for sample scene.json files without textures. You can find a sample scene.json file with textures [here](./sample_scene.json.md). - -A scene.json file contains the following information. - - Walls are segments with two endpoints with height and depth. A wall is assigned to a room using a room id or a list of room ids. - - Walls have holes (cutouts where windows/doors are placed) specified by a 2D bounding box on the wall surface. Optionally, the object instance id of the relevant window/door model may also be specified. - - Ceiling, floor, and ground surfaces are specified as polygons, each specified by an array of points. Each surface is assigned to a room using a room id. - - Materials are specified for the two sides of the Wall (inside/outside surfaces). One material is used for all sides of the Ceiling/Floor/Ground. - - Materials may specify textures or solid colors. When textures are used, the materials are specified in a separate section of the scene.json file, and a materialId is used to refer to it. - - Textures are separately defined in the scene.json file, each having a texture id and a reference to an image using an image id. Materials refer to the texture using this texture id. - - Images are separately defined in the scene.json file, each having an image id and the URL-encoded content of the image. - - Objects are defined using a modelId (that identifies the CAD model shape), a transformation matrix, and a parent. - -While the above information is sufficient to preview a scene.json file using [smart scene toolkit](https://github.com/smartscenes/sstk), we specify the following additional information for the Plan2Scene task. - - List of rooms specifying the room ids and room types. Plan2Scene uses room-type labels for texture embedding propagation. - - Edges of the room-door-room connectivity graph. - - We explain the scene.json format below. - -```json - { - "format": "sceneState", - "scene": { - "up": { // Up vector - "x": 0, - "y": 1, - "z": 0 - }, // Front vector - "front": { - "x": 0, - "y": 0, - "z": 1 - }, - "unit": 1, // What unit the architecture is specified in. - // Scale to meters. - "assetSource": [ // Optional. Asset source containing CAD models of objects. - "3dw" - ], - "assetTransforms": { // Optional. Tansform CAD models to match scene coordinate frame. - "3dw": { - "alignTo": { - "up": [ 0, 1, 0 ], // Copy scene up direction - "front": [ 0, 0, 1 ] // Copy scene front direction - }, - "scaleTo": 1, // Scene scale-to-metres - "centerTo": [ 0.5, 0, 0.5 ] // Align to center. - } - }, - "arch": { // Describes architecture - "id": "28025487", // House id - "defaults": { // Optional. Specify default values for each element type. - "Wall": { - "depth": 0.1, - "extraHeight": 0.035 - }, - "Ceiling": { - "depth": 0.05 - }, - "Floor": { - "depth": 0.05 - } - }, - "elements": [ // List of architectural elements - { // Example ceiling surface - "id": "room_0_23ac_c", // Unique id of the element. - "roomId": "room_0_23ac", // Room id. - "points": [ // Specify polygon outline of the surface. - [ - [ 6.377066, 0.0, 2.103187 ], - [ 7.936996, 0.0, 2.103187 ], - // More points - ] - ], - "type": "Ceiling", // Architectural type ('Wall', 'Ceiling', 'Floor', 'Ground') - "materials": [ // Specify the material of the surface. - { // A solid color material is specified. - "name": "surface", - "diffuse": "#f6deff" - } - ], - "offset": [0, 2.8, 0], // Offset added to points. - // Here, the ceiling is lifted 2.8m from the ground. - "depth": 0.05 // Thickness of the surface. - }, - { // Example floor surface - "id": "room_0_23ac_f", - "roomId": "room_0_23ac", - "points": [ - [ - [ 6.377066, 0.0, 2.103187 ], - [ 7.936996, 0.0, 2.103187 ], - // More points - ] - ], - "type": "Floor", - "materials": [ // Here, we refer to a material specified separately. - { - "name": "surface", - "materialId": "Material_room_0_23ac_f" - } - ], - "depth": 0.05 - }, - { // Example wall - "roomId": "room_0_23ac", - "id": "room_0_23ac_wall_0", - "type": "Wall", - "points": [ - [ 6.37706, 0.0, 2.10318 ], // Start point of the wall - [ 6.37706, 0.0, 4.66693 ] // End point of the wall - ], - "holes": [ // List of holes in the wall. Holes make room for doors and windows. - { - "id": "hole_3f5fb0d", // Id of hole - "type": "Door", // Door or Window. - "box": { - "min": [ - 0.12711, // Distance from start point of the wall to the start of the hole. - 0.0 // Min elevation of the hole. - ], - "max": [ - 0.905624103585657, // Distance from the start point of the wall to the end of the hole. - 2.5 // Max elevation of the hole. - ] - } - }, - // More holes - ], - "height": 2.8, // Height of the wall - "materials": [ - { - "name": "surface1", // Surface1 of wall. Interior side to assigned room. - "diffuse": "#f6deff" - }, - { - "name": "surface2", // Surface2 of wall. Exterior side to assigned room. - "diffuse": "#f6deff" - } - ], - "depth": 0.1, // Thickness of wall - "extra_height": 0.035 // This height is added to wall to ensure no gaps - }, - // More elements - ], - "rdr": [ // Room-door-room connectivity graph edges. - // For internal doors, specify each edge in both directions. See the example below. - [ - "room_0_23ac", // Room id of start node. - "hole_3f5fb0d", // Hole id of the door corresponding to edge. - "room_1_26dc" // Room id of the end node. - ], - [ // Same edge as before, specified in the reverse direction. - "room_1_26dc", // Room id of start node. - "hole_3f5fb0d", // Hole id of the door corresponding to edge. - "room_0_23ac" // Room id of the end node. - ], - // For doors facing exterior, specify only one edge as follows. - [ - "room_0_23ac", - "hole_65ac2d", - null - ], - ], - "rooms": [ // Specify room type information of each room. - { - "id": "room_1_26dc", - "types": [ - "Kitchen" // List room types. - ] - }, - // Specify details of more rooms. - ], - "materials": [ // Specify materials - { - "uuid": "Material_room_0_23ac_f", // Material id - "map": "Texture_room_0_23ac_f" // Id of the assigned texture. - }, - // More materials - ], - "textures": [ // Specify textures. - { - "uuid": "Texture_room_0_23ac_f", // Texture id - "image": "Image_room_0_23ac_f" // Id of the assigned image. - }, - // More textures. - ], - "images": [ // Images assigned to textures. - { - "uuid": "Image_room_0_23ac_f", // Image - // Below, you find the URL encoded image. - "url": "data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABC5UlEQVR4nM293XpkN64kGgC4Ut575v2vztOcB5q76S7lIoG5iABXSpZUkqy2d/XnLls/mStJEAgEAqD9n////6vMQgHITJgZbDiqgCogc8IKgDv4QwZgAgVYDIQPWASqFvJMjOGwSpQbVgG1EmZAVcFQWAW4AWMEYIZ1X4A... (truncated)" - }, - // More images - ] - }, - "object":[ // List of CAD models - { - "modelId": "3dw.e1243519f6939b30601e9679255885a5", // Shape id from shapenet - "index": 0, // Running id specified for object. - "parentIndex": -1, // No parent - "transform": { // Transformation matrix - "rows": 4, - "cols": 4, - "data": [ - 1.8006512615626153e-16, 0.0, 0.8109412350597608, 0.0, - 0.0, 1.0, 0.0, 0.0, - -1.0, 0.0, 2.220446049250313e-16, 0.0, - 6.377066533864541, 0.0, 2.6195593625498, 1.0 - ] - } - }, - // More objects - ] - }, - "selected": [] -} -``` diff --git a/docs/md/smt_dataset.md b/docs/md/smt_dataset.md deleted file mode 100644 index 5f4d46b..0000000 --- a/docs/md/smt_dataset.md +++ /dev/null @@ -1,5 +0,0 @@ -# Substance Mapped Textures Dataset -The substance mapped textures dataset consist of 146 textures downloaded from https://archivetextures.net/. -This dataset was used by the retrieve baseline described in the paper. More details of these textures will be made available soon. -In the meantime, we have provided results of the retrieve baseline using the [stationary textures dataset version 2](./stationary_textures_dataset_v2.md) -on [our website](https://3dlg-hcvc.github.io/plan2scene). diff --git a/docs/md/stationary_textures_dataset_v1.md b/docs/md/stationary_textures_dataset_v1.md deleted file mode 100644 index 83c9139..0000000 --- a/docs/md/stationary_textures_dataset_v1.md +++ /dev/null @@ -1,28 +0,0 @@ -# Stationary Textures Dataset - V1 -The stationary textures dataset consist of textures obtained from various online sources. -We randomly sample 16 textures per category as the validation set. The remainder forms the train set. -The images are arranged into two directories `train` and `val` at the path `[PROJECT_ROOT]/data/input/stationary-textures-dataset`. - -The following topics describe how we sample textures for each substance type. -## Wood Textures -We sourced wood textures from www.pexels.com and www.unsplash.com. -Links to the photos we used are [available here](../txt/wood_texture_links.txt). -We add the prefix "wood_" to the name of each photo file. - -## Tile Textures -We download seamless textures under the categories 'small tiles' and 'plain tiles' from www.textures.com. -The ids of textures we downloaded are [available here](../txt/tile_texture_ids.txt). -Then, we rename the files by adding the prefix "smalltile_". - -## Plaster Textures -We download seamless textures under the category 'concrete stucco' from www.textures.com. -The ids of textures we downloaded are [available here](../txt/plaster_texture_ids.txt). -Then, we rename the files by adding the prefix "plastered_". - -## Carpet Textures -We downloaded seamless textures from the following sources: -- https://3djungle.net/textures/carpet/ (ids are [available here](../txt/carpet_3djungle_ids.txt)) -- https://www.sketchuptextureclub.com/ (ids are [available here](../txt/carpet_sketchup_ids.txt)) -- 'carpet' and 'plain fabric' categories from www.textures.com (ids are [available here](../txt/carpet_texturecom_ids.txt)). - -We rename the files by adding the prefix "carpet_". \ No newline at end of file diff --git a/docs/md/stationary_textures_dataset_v2.md b/docs/md/stationary_textures_dataset_v2.md deleted file mode 100644 index b62c59b..0000000 --- a/docs/md/stationary_textures_dataset_v2.md +++ /dev/null @@ -1,24 +0,0 @@ -# Stationary Textures Dataset - V2 - -| [Download](https://forms.gle/mKAmnrzAm3LCK9ua6) | -| -------- | - -This dataset is a substitute to the Stationary Textures Dataset V1 described in our paper. -All the textures in this dataset are from www.cc0textures.com, made available under the [Creative Commons - CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/) license. - -This dataset consists of 221 train set textures and 64 validation set textures. The breakdown of textures is as follows. - -|Split / Substance | Wood | Carpet | Plastered | Tile | -|------------------|------|--------|-----------|------| -| Train | 86 |36 | 47 |52 | -| Validation | 16 |16 | 16 |16 | - -The file name of a texture has the following format. -``` -{substance}_{original_texture_id_from_cc0}_{original_texture_format_and_size}_crop0.jpg -``` - -## How did we prepare the dataset? -1) We selected suitable textures for 4 substance types from www.cc0textures.com. -2) We downloaded the 1K size version of each texture if it has a resolution of at-least 1024x1024. Otherwise, we downloaded the 2K size version. -3) We obtained a 1024x1024 crop from each texture and resized it down to 512x512. diff --git a/docs/md/train_substance_classifier.md b/docs/md/train_substance_classifier.md deleted file mode 100644 index a8197f6..0000000 --- a/docs/md/train_substance_classifier.md +++ /dev/null @@ -1,45 +0,0 @@ -# Substance Classifier - -The substance classifier is used by the __SUBS__ metric. We train it a mix of crops obtained from the opensurfaces dataset and stationary textures dataset. -More details are provided in the supplementary metrics section of the paper. - -## Preparation of Open Surfaces Crops -Download the opensurfaces dataset. The download script will extract the rectified surface masks. -From those extracted rectified surface masks, we prepare a `train_masks` directory and a `val_masks` directory having masks with following file names. -- [Train Masks](../txt/open_surfaces_shapes_train.txt) -- [Val Masks](../txt/open_surfaces_shapes_val.txt) - -Then, we use the following script to extract crops from these rectified surface masks. -```bash -python scripts/plan2scene/metric_impl/substance_classifier/prepare_opensurfaces_crops.py ./data/processed/open-surfaces-crops/train PATH/TO/train_masks -python scripts/plan2scene/metric_impl/substance_classifier/prepare_opensurfaces_crops.py ./data/processed/open-surfaces-crops/val PATH/TO/val_masks -``` - -## Preparation of Texture Dataset Crops -We use the following script to extract crops from the texture dataset. -```bash -python scripts/plan2scene/metric_impl/substance_classifier/prepare_texture_crops.py ./data/processed/stationary-textures-crops/train PATH/TO/TRAIN/TEXTURES -python scripts/plan2scene/metric_impl/substance_classifier/prepare_texture_crops.py ./data/processed/stationary-textures-crops/val PATH/TO/VAL/TEXTURES -``` - -## Training Substance Classifier -1) Make sure the crops extracted from the texture dataset are in the `[PROJECT_ROOT]/data/processed/stationary-textures-dataset-crops/train` and `/data/processed/stationary-textures-crops/val` - directories. - -2) Make sure the crops extracted from opensurfaces rectified surface masks are in the `/data/processed/open-surfaces-crops/train` and `[PROJECT_ROOT]/data/processed/open-surfaces-crops/val` - directories. - -3) Run the following command to start training. This will continue training for 200 epochs. - ```bash - export PYTHONPATH=./code/src - python ./code/scripts/plan2scene/metric_impl/substance_classifier/train.py ./trained_models/substance_classifier/default ./conf/plan2scene/substance_classifier_conf/default.json --save-model-interval 1 - ``` - Checkpoints are saved at './trained_models/substance_classifier/default/checkpoints' directory. - -4) Preview learning curves using Tensorboard. - ```bash - tensorboard --logdir=./trained_models/substance_classifier/default/tensorboard - ``` -5) Choose the best checkpoint based on substance classification accuracy. - Update `substance_classifier.checkpoint_path` field of `./conf/plan2scene/metric.json` to point to the best checkpoint. - Update `substance_classifier.conf_path` field of the same file to `./trained_models/substance_classifier/default/conf/substance_classifier_conf.json` diff --git a/docs/md/train_texture_prop.md b/docs/md/train_texture_prop.md deleted file mode 100644 index 9127c39..0000000 --- a/docs/md/train_texture_prop.md +++ /dev/null @@ -1,35 +0,0 @@ -# Train Texture Propagation Stage -## Pre-requisites -1) It is assumed that the texture synthesis stage is already trained, or a pre-trained model is configured. -2) Infer textures for photo observed surfaces using the VGG textureness score by - running [vgg_crop_selector.py](code/scripts/plan2scene/crop_select/vgg_crop_selector.py). The texture propagation stage is trained using these inferences. - ```bash - # We simulate surface unobservations using the train_graph_generator and the val_graph_generator defined in texture_prop_conf. Therefore, drop_fraction is set to 0.0 in the following scripts. - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/train/drop_0.0 train --drop 0.0 - python code/scripts/plan2scene/preprocessing/fill_room_embeddings.py ./data/processed/texture_gen/val/drop_0.0 val --drop 0.0 - - python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/train/drop_0.0 ./data/processed/texture_gen/train/drop_0.0 train --drop 0.0 - python code/scripts/plan2scene/crop_select/vgg_crop_selector.py ./data/processed/vgg_crop_select/val/drop_0.0 ./data/processed/texture_gen/val/drop_0.0 val --drop 0.0 - ``` - -## Training Instructions -Run the following command to start training. -```bash -python code/scripts/plan2scene/texture_prop/train.py ./trained_models/texture_prop/default -``` -You may use tensorboard to preview training curves. -```bash -tensorboard --logdir ./trained_models/texture_prop/default/tensorboard -``` -Checkpoints are saved at `./trained_models/texture_prop/default/checkpoints`. - -Preview results of every 50th epoch using [this script](../../code/scripts/plan2scene/texture_prop/preview_nth_epoch_all_prop.py) as shown below. -```bash -# Preview every 50th epoch -CUDA_VISIBLE_DEVICES=0 python ./code/scripts/plan2scene/texture_prop/preview_nth_epoch_all_prop.py ./trained_models/texture_prop/default/preview_results 50 ./trained_models/texture_prop/default -# Open ./trained_models/texture_prop/default/preview_results/preview.html. -``` -We usually preview every 50th epoch and choose the best epoch. Early epochs tend to look washed out with pink color shifts. -You may also use `epoch_val_color`, `epoch_val_subs` and `epoch_val_freq` plots in tensorboard to help your decision. - -For the figures reported in the paper, we used the epoch 250. diff --git a/docs/md/train_texture_synth.md b/docs/md/train_texture_synth.md deleted file mode 100644 index 612d280..0000000 --- a/docs/md/train_texture_synth.md +++ /dev/null @@ -1,21 +0,0 @@ -# Training Texture Synthesis Stage -This stage uses a modified version of the [neural texture](https://github.com/henzler/neuraltexture) project by Henzler et. al. - -__IMPORTANT:__ We use a separate python environment with `torch==1.4.0` and `torchvision==0.5.0` to train the texture_gen stage. We have noticed that later versions of PyTorch causes poor training of neural texture synthesis networks. This is likely due to a compatibility issue of the noise_kernel which requires further investigation. Also, note that authors of [neural texture](https://github.com/henzler/neuraltexture) project specifies PyTorch 1.4. -You can use [this requirements file](../../code/scripts/plan2scene/texture_gen/train-requirements.txt) to setup the python environment for training. - -For inference, we use the same python environment as the main project. The issue only affects training. - -## Training the network -1) Copy the textures dataset to `./data/input/stationary-textures-dataset/train` and `./data/input/stationary-textures-dataset/val`. -2) Start training by running the following. - ```bash - python code/scripts/plan2scene/texture_gen/train.py ./trained_models/texture_gen/default ./conf/plan2scene/texture_synth_conf/v2.yml - ``` - You may use tensorboard to preview training curves & previews, and then choose the best checkpoint based on `epoch_val_texture_loss`. - ```bash - python -m tensorboard --logdir ./trained_models/texture_gen/default/tensorboard - ``` - The best checkpoints are saved at `./trained_models/texture_gen/default/best_models`. Periodic checkpoints are saved at `./trained_models/texture_gen/default/checkpoints`. -3) Update 'checkpoint_path' of `./conf/plan2scene/texture_gen.json` to the path of the selected best checkpoint from the previous step. - Update 'texture_synth_conf' of the same file to `./trained_models/texture_gen/default/config.yml`. diff --git a/docs/txt/carpet_3djungle_ids.txt b/docs/txt/carpet_3djungle_ids.txt deleted file mode 100644 index 9180dbd..0000000 --- a/docs/txt/carpet_3djungle_ids.txt +++ /dev/null @@ -1,31 +0,0 @@ -# Train -2352 -2334 -2328 -2315 -2349 -2326 -2319 -2321 -2317 -2318 -2322 -2341 -2347 -2333 -2344 -6638 -2335 -2316 -2329 -2345 -2340 -2330 -# Val -2331 -2323 -2327 -2336 -2314 -2325 -2320 \ No newline at end of file diff --git a/docs/txt/carpet_sketchup_ids.txt b/docs/txt/carpet_sketchup_ids.txt deleted file mode 100644 index 29c9049..0000000 --- a/docs/txt/carpet_sketchup_ids.txt +++ /dev/null @@ -1,39 +0,0 @@ -# Train -23_carpeting natural fibers texture-seamless.jpg -27_green striped carpeting texture-seamless.jpg -12_green outdoor carpeting texture-seamless.jpg -89_tweed pepper carpeting texture-seamless.jpg -88_tweed pepper carpeting texture-seamless.jpg -90_light brown tweed pepper carpeting texture-seamless.jpg -23_green striped carpeting texture-seamless.jpg -13_green carpeting texture-seamless.jpg -21_green carpeting texture-seamless.jpg -2_carpeting linen natural fibers texture-seamless.jpg -86_bouclÅ  brown carpeting texture-seamless.jpg -92_tweed pepper carpeting texture-seamless.jpg -40_blue carpeting texture-seamless.jpg -25_carpeting natural fibers texture-seamless.jpg -83_wool brown boucle carpeting texture-seamless.jpg -85_tweed brown carpeting texture-seamless.jpg -19_blue carpeting texture-seamless.jpg -31_Jute carpeting natural fibers_texture-seamless.jpg -82_brown carpeting geometric pattern texture-seamless.jpg -26_green outdoor carpeting texture-seamless.jpg -19_green striped carpeting texture-seamless.jpg -93_light brown tweed carpeting texture-seamless.jpg -36_blue carpeting texture-seamless.jpg -22_green striped carpeting texture-seamless.jpg -42_blue carpeting PBR texture-seamless.jpg -14_green striped carpeting texture-seamless.jpg -24_green outdoor carpeting texture-seamless.jpg -4_green carpeting texture-seamless.jpg -29_tweed green pepper carpeting texture-seamless.jpg -10_green striped carpeting texture-seamless.jpg -25_green outdoor carpeting texture-seamless.jpg -87_bouclÅ  brown carpeting texture-seamless.jpg -18_green striped carpeting texture-seamless.jpg -# Val -21_green carpeting texture-seamless.jpg -28_wool & jute carpet texture-seamless.jpg -92_tweed pepper carpeting texture-seamless.jpg -96_ligth brown carpeting PBR texture-seamless.jpg \ No newline at end of file diff --git a/docs/txt/carpet_texturecom_ids.txt b/docs/txt/carpet_texturecom_ids.txt deleted file mode 100644 index 8fcc520..0000000 --- a/docs/txt/carpet_texturecom_ids.txt +++ /dev/null @@ -1,56 +0,0 @@ -# Train -FabricPlain0020 -Carpet0027 -FabricPlain0129 -Carpet0004 -Carpet0036 -Carpet0035 -Carpet0016 -Carpet0043 -Carpet0006 -Carpet0031 -FabricPlain0154 -Carpet0021 -Carpet0041 -Carpet0026 -Carpet0010 -FabricPlain0151 -Carpet0024 -FabricPlain0044 -Carpet0012 -Carpet0046 -FabricPlain0055 -Carpet0042 -Carpet0011 -Carpet0025 -Carpet0020 -Carpet0002 -Carpet0022 -Carpet0014 -Carpet0005 -FabricPlain0017 -Carpet0003 -Carpet0015 -Carpet0009 -FabricPlain0045 -FabricPlain0137 -Carpet0013 -Carpet0019 -FabricPlain0152 -FabricPlain0046 -Carpet0040 -Carpet0018 -Carpet0029 -Carpet0039 -Carpet0038 -FabricPlain0004 -Carpet0001 -Carpet0045 -Carpet0008 -Carpet0049 -# Val -Carpet0034 -FabricPlain0077 -Carpet0023 -Carpet0017 -Carpet0007 \ No newline at end of file diff --git a/docs/txt/open_surfaces_shapes_train.txt b/docs/txt/open_surfaces_shapes_train.txt deleted file mode 100644 index f885b09..0000000 --- a/docs/txt/open_surfaces_shapes_train.txt +++ /dev/null @@ -1,808 +0,0 @@ -carpet-rug_102178.png -carpet-rug_144107.png -carpet-rug_50704.png -painted_135778.png -painted_63927.png -tile_121541.png -tile_40362.png -wood_117614.png -wood_160552.png -carpet-rug_103810.png -carpet-rug_144108.png -carpet-rug_54178.png -painted_137070.png -painted_64013.png -tile_121709.png -tile_40788.png -wood_117642.png -wood_161106.png -carpet-rug_104170.png -carpet-rug_147005.png -carpet-rug_56879.png -painted_141178.png -painted_64217.png -tile_121738.png -tile_41821.png -wood_118067.png -wood_161118.png -carpet-rug_108305.png -carpet-rug_147625.png -carpet-rug_56897.png -painted_142632.png -painted_66932.png -tile_121752.png -tile_41826.png -wood_119875.png -wood_161729.png -carpet-rug_108693.png -carpet-rug_148208.png -carpet-rug_61134.png -painted_144109.png -painted_71995.png -tile_122021.png -tile_41827.png -wood_120669.png -wood_162002.png -carpet-rug_109036.png -carpet-rug_150775.png -carpet-rug_61637.png -painted_147473.png -painted_72825.png -tile_122724.png -tile_43742.png -wood_120942.png -wood_162045.png -carpet-rug_109366.png -carpet-rug_151415.png -carpet-rug_61801.png -painted_148320.png -painted_74125.png -tile_122735.png -tile_44311.png -wood_121256.png -wood_162151.png -carpet-rug_109655.png -carpet-rug_151418.png -carpet-rug_63356.png -painted_148396.png -painted_74348.png -tile_123289.png -tile_44441.png -wood_121899.png -wood_163014.png -carpet-rug_109908.png -carpet-rug_151469.png -carpet-rug_63810.png -painted_148406.png -painted_74410.png -tile_123413.png -tile_44850.png -wood_122228.png -wood_163288.png -carpet-rug_110510.png -carpet-rug_151614.png -carpet-rug_65820.png -painted_148841.png -painted_76304.png -tile_124220.png -tile_44912.png -wood_122302.png -wood_163879.png -carpet-rug_110558.png -carpet-rug_151762.png -carpet-rug_72436.png -painted_148918.png -painted_77457.png -tile_124325.png -tile_45798.png -wood_122746.png -wood_164736.png -carpet-rug_110813.png -carpet-rug_152189.png -carpet-rug_75822.png -painted_149896.png -painted_79524.png -tile_127383.png -tile_45838.png -wood_123067.png -wood_165043.png -carpet-rug_110832.png -carpet-rug_153144.png -carpet-rug_77248.png -painted_149976.png -painted_80153.png -tile_129074.png -tile_46022.png -wood_124508.png -wood_166184.png -carpet-rug_111061.png -carpet-rug_153431.png -carpet-rug_79948.png -painted_150485.png -painted_86036.png -tile_129298.png -tile_46310.png -wood_124718.png -wood_166313.png -carpet-rug_111138.png -carpet-rug_154204.png -carpet-rug_91959.png -painted_151401.png -painted_87484.png -tile_133114.png -tile_46589.png -wood_124810.png -wood_166458.png -carpet-rug_111323.png -carpet-rug_155004.png -carpet-rug_92000.png -painted_151753.png -painted_88074.png -tile_133789.png -tile_46980.png -wood_124989.png -wood_166550.png -carpet-rug_111324.png -carpet-rug_156113.png -carpet-rug_92636.png -painted_152763.png -painted_90580.png -tile_134947.png -tile_46998.png -wood_125087.png -wood_166994.png -carpet-rug_111367.png -carpet-rug_156544.png -carpet-rug_92997.png -painted_152938.png -painted_90682.png -tile_136027.png -tile_47285.png -wood_125162.png -wood_167780.png -carpet-rug_111777.png -carpet-rug_156585.png -carpet-rug_93355.png -painted_153181.png -painted_91211.png -tile_138679.png -tile_47503.png -wood_125229.png -wood_168260.png -carpet-rug_111969.png -carpet-rug_156648.png -carpet-rug_93741.png -painted_156227.png -painted_91218.png -tile_138951.png -tile_47633.png -wood_125675.png -wood_168307.png -carpet-rug_112896.png -carpet-rug_156770.png -carpet-rug_95228.png -painted_156228.png -painted_91986.png -tile_139209.png -tile_47764.png -wood_126177.png -wood_168763.png -carpet-rug_113461.png -carpet-rug_156962.png -carpet-rug_98846.png -painted_156596.png -painted_92096.png -tile_139623.png -tile_47944.png -wood_126952.png -wood_169949.png -carpet-rug_113584.png -carpet-rug_157046.png -painted_100259.png - -painted_156622.png -painted_92634.png -tile_140257.png -tile_47947.png -wood_128078.png -wood_170678.png -carpet-rug_114054.png -carpet-rug_157191.png -painted_101227.png - -painted_157266.png -painted_93281.png -tile_141010.png -tile_48831.png -wood_128226.png -wood_170978.png -carpet-rug_115618.png -carpet-rug_157244.png -painted_101309.png - -painted_157556.png -painted_93920.png -tile_141015.png -tile_48997.png -wood_128828.png -wood_171278.png -carpet-rug_115670.png -carpet-rug_157270.png -painted_101328.png - -painted_158206.png -painted_93924.png -tile_141230.png -tile_49812.png -wood_129548.png -wood_171499.png -carpet-rug_115935.png -carpet-rug_157302.png -painted_102863.png - -painted_158797.png -painted_94088.png -tile_141243.png -tile_49815.png -wood_130123.png -wood_171531.png -carpet-rug_118881.png -carpet-rug_157356.png -painted_102910.png - -painted_159033.png -painted_94237.png -tile_143334.png -tile_49860.png -wood_130188.png -wood_171904.png -carpet-rug_119865.png -carpet-rug_157818.png -painted_103481.png -painted_159178.png -painted_94259.png -tile_143920.png -tile_50557.png -wood_130782.png -wood_172017.png -carpet-rug_120015.png -carpet-rug_157950.png -painted_103685.png -painted_159376.png -painted_94444.png -tile_143939.png -tile_50613.png -wood_131408.png -wood_172627.png -carpet-rug_122206.png -carpet-rug_158132.png -painted_104370.png -painted_159535.png -painted_94901.png -tile_143986.png -tile_50628.png -wood_131762.png -wood_172816.png -carpet-rug_124884.png -carpet-rug_158213.png -painted_104623.png -painted_159932.png -painted_95081.png -tile_144349.png -tile_50966.png -wood_136282.png -wood_173036.png -carpet-rug_124895.png -carpet-rug_158252.png -painted_105261.png -painted_162460.png -painted_95195.png -tile_144398.png -tile_51293.png -wood_137575.png -wood_173647.png -carpet-rug_124974.png -carpet-rug_158440.png -painted_105814.png -painted_162591.png -painted_95267.png -tile_145099.png -tile_51601.png -wood_137576.png -wood_173793.png -carpet-rug_125277.png -carpet-rug_158482.png -painted_106624.png -painted_162868.png -painted_95342.png -tile_147683.png -tile_51807.png -wood_137704.png -wood_173857.png -carpet-rug_125307.png -carpet-rug_158522.png -painted_107243.png -painted_163268.png -painted_95502.png -tile_147686.png -tile_51933.png -wood_138477.png -wood_174749.png -carpet-rug_125328.png -carpet-rug_158574.png -painted_107379.png -painted_163779.png -painted_96453.png -tile_147893.png -tile_65375.png -wood_139143.png -wood_176585.png -carpet-rug_125563.png -carpet-rug_158690.png -painted_108138.png -painted_163818.png -painted_97169.png -tile_148078.png -tile_68610.png -wood_139873.png -wood_176848.png -carpet-rug_125748.png -carpet-rug_159051.png -painted_108145.png -painted_164129.png -painted_97580.png -tile_148161.png -tile_69072.png -wood_140247.png -wood_177073.png -carpet-rug_125961.png -carpet-rug_159439.png -painted_108222.png -painted_164271.png -painted_97592.png -tile_148278.png -tile_72144.png -wood_141057.png -wood_177083.png -carpet-rug_125974.png -carpet-rug_159612.png -painted_108329.png -painted_164888.png -painted_98106.png -tile_148318.png -tile_78991.png -wood_141735.png -wood_177143.png -carpet-rug_125985.png -carpet-rug_159968.png -painted_108963.png -painted_165181.png -painted_98434.png -tile_148490.png -tile_79474.png -wood_141834.png -wood_179964.png -carpet-rug_126125.png -carpet-rug_160163.png -painted_109362.png -painted_166413.png -painted_98665.png -tile_148499.png -tile_79490.png -wood_142055.png -wood_47101.png -carpet-rug_126302.png -carpet-rug_160179.png -painted_109949.png -painted_167889.png -painted_98949.png -tile_148583.png -tile_82015.png -wood_143031.png -wood_47862.png -carpet-rug_126424.png -carpet-rug_160553.png -painted_110285.png -painted_167912.png -painted_99114.png -tile_148920.png -tile_82676.png -wood_143033.png -wood_48750.png -carpet-rug_126864.png -carpet-rug_161223.png -painted_110404.png -painted_169330.png -tile_100248.png -tile_149182.png -tile_84787.png -wood_143295.png -wood_50154.png -carpet-rug_126993.png -carpet-rug_161341.png -painted_110713.png -painted_169610.png -tile_103078.png -tile_149186.png -tile_85036.png -wood_143685.png -wood_50193.png -carpet-rug_127294.png -carpet-rug_161620.png -painted_110778.png -painted_169755.png -tile_103526.png -tile_151584.png -tile_86865.png -wood_144015.png -wood_51886.png -carpet-rug_127392.png -carpet-rug_162177.png -painted_110960.png -painted_170002.png -tile_106016.png -tile_152227.png -tile_89397.png -wood_144180.png -wood_51911.png -carpet-rug_127430.png -carpet-rug_162335.png -painted_111817.png -painted_170445.png -tile_107481.png -tile_152246.png -tile_89560.png -wood_145609.png -wood_51913.png -carpet-rug_127841.png -carpet-rug_162517.png -painted_111858.png -painted_170881.png -tile_107482.png -tile_153278.png -tile_92398.png -wood_145848.png -wood_52017.png -carpet-rug_128021.png -carpet-rug_162627.png -painted_112262.png -painted_171196.png -tile_109586.png -tile_153413.png -tile_92713.png -wood_146958.png -wood_58677.png -carpet-rug_128212.png -carpet-rug_162629.png -painted_114668.png -painted_171211.png -tile_110121.png -tile_154013.png -tile_93025.png -wood_147790.png -wood_60537.png -carpet-rug_128354.png -carpet-rug_162870.png -painted_114850.png -painted_171467.png -tile_113086.png -tile_155453.png -tile_93404.png -wood_147870.png -wood_60544.png -carpet-rug_129183.png -carpet-rug_164105.png -painted_115012.png -painted_171496.png -tile_113168.png -tile_159015.png -tile_93988.png -wood_149085.png -wood_60622.png -carpet-rug_129195.png -carpet-rug_165113.png -painted_115264.png -painted_172110.png -tile_115470.png -tile_160009.png -tile_94285.png -wood_149297.png -wood_60717.png -carpet-rug_129657.png -carpet-rug_165156.png -painted_117316.png -painted_172111.png -tile_115743.png -tile_161867.png -tile_95076.png -wood_149840.png -wood_65366.png -carpet-rug_130361.png -carpet-rug_166084.png -painted_117389.png -painted_172470.png -tile_117426.png -tile_161894.png -tile_95390.png -wood_150006.png -wood_68113.png -carpet-rug_131621.png -carpet-rug_166382.png -painted_118423.png -painted_173675.png -tile_117429.png -tile_161897.png -tile_95490.png -wood_150750.png -wood_71937.png -carpet-rug_133246.png -carpet-rug_167150.png -painted_118512.png -painted_173827.png -tile_117582.png -tile_161937.png -tile_96502.png -wood_151380.png -wood_73877.png -carpet-rug_133250.png -carpet-rug_168238.png -painted_119171.png -painted_174243.png -tile_117587.png -tile_162157.png -tile_96620.png -wood_151558.png -wood_77149.png -carpet-rug_133471.png -carpet-rug_168240.png -painted_119301.png -painted_174245.png -tile_117879.png -tile_163303.png -tile_97714.png -wood_151714.png -wood_81909.png -carpet-rug_134357.png -carpet-rug_169405.png -painted_119786.png -painted_174419.png -tile_118131.png -tile_163583.png -tile_98037.png -wood_152340.png -wood_85558.png -carpet-rug_134404.png -carpet-rug_170100.png -painted_119989.png -painted_174886.png -tile_118192.png -tile_163803.png -tile_98906.png -wood_152585.png -wood_85943.png -carpet-rug_134960.png -carpet-rug_170111.png -painted_120050.png -painted_175569.png -tile_118193.png -tile_167974.png -tile_99007.png -wood_152701.png -wood_86948.png -carpet-rug_135397.png -carpet-rug_170442.png -painted_120545.png -painted_176068.png -tile_118280.png - -tile_168041.png -tile_99062.png -wood_152857.png -wood_87285.png -carpet-rug_135582.png -carpet-rug_170479.png -painted_120927.png -painted_177484.png -tile_118353.png -tile_171209.png -tile_99929.png -wood_152933.png -wood_90265.png -carpet-rug_135650.png -carpet-rug_170820.png -painted_121247.png -painted_34501.png -tile_118783.png -tile_172679.png -wood_101074.png -wood_153236.png -wood_91843.png -carpet-rug_136050.png -carpet-rug_170880.png -painted_121822.png -painted_36364.png -tile_118971.png -tile_173749.png -wood_101094.png -wood_153689.png -wood_92406.png -carpet-rug_136380.png -carpet-rug_172206.png -painted_122149.png -painted_37880.png -tile_118974.png -tile_173849.png -wood_101925.png -wood_153748.png -wood_93974.png -carpet-rug_137488.png -carpet-rug_172478.png -painted_122721.png -painted_38724.png -tile_119026.png -tile_175204.png -wood_102629.png -wood_153779.png -wood_94353.png -carpet-rug_139728.png -carpet-rug_172882.png -painted_122767.png -painted_40249.png -tile_119131.png -tile_175301.png -wood_103001.png -wood_153780.png -wood_94407.png -carpet-rug_141081.png -carpet-rug_173034.png -painted_122827.png -painted_44533.png -tile_119621.png -tile_175353.png -wood_104126.png -wood_154452.png -wood_94782.png -carpet-rug_141093.png -carpet-rug_173162.png -painted_123234.png -painted_45586.png -tile_119639.png -tile_175821.png -wood_104450.png -wood_154578.png -wood_95055.png -carpet-rug_141142.png -carpet-rug_173286.png -painted_123451.png -painted_45676.png -tile_119652.png -tile_176069.png -wood_104547.png -wood_155240.png -wood_95205.png -carpet-rug_141372.png -carpet-rug_173422.png -painted_125037.png -painted_46754.png -tile_120134.png -tile_176189.png -wood_104548.png -wood_155335.png -wood_95331.png -carpet-rug_141725.png -carpet-rug_173715.png -painted_126320.png -painted_47492.png -tile_120504.png -tile_176531.png -wood_105412.png -wood_155837.png -wood_95440.png -carpet-rug_142292.png -carpet-rug_173852.png -painted_126517.png -painted_49439.png -tile_120562.png -tile_176613.png -wood_105899.png -wood_156033.png -wood_95979.png -carpet-rug_142330.png -carpet-rug_174921.png -painted_126679.png -painted_53129.png -tile_120660.png -tile_176972.png -wood_105929.png -wood_156562.png -wood_96336.png -carpet-rug_142338.png -carpet-rug_175014.png -painted_127391.png -painted_53297.png -tile_120705.png -tile_177213.png -wood_106036.png -wood_157127.png -wood_96766.png -carpet-rug_142394.png -carpet-rug_175017.png -painted_127827.png -painted_53310.png -tile_120804.png -tile_34252.png -wood_106507.png -wood_157149.png -wood_97121.png -carpet-rug_142566.png -carpet-rug_175098.png -painted_127897.png -painted_54063.png -tile_120958.png -tile_34690.png -wood_108666.png -wood_157237.png -wood_97212.png -carpet-rug_142593.png -carpet-rug_175393.png -painted_128264.png -painted_57921.png -tile_120986.png -tile_34693.png -wood_110422.png -wood_158223.png -wood_98503.png -carpet-rug_142640.png -carpet-rug_43704.png -painted_129213.png -painted_60125.png -tile_121014.png -tile_34847.png -wood_113195.png -wood_159537.png -wood_98584.png -carpet-rug_142733.png -carpet-rug_43917.png -painted_130045.png -painted_60238.png -tile_121016.png -tile_34865.png -wood_113232.png -wood_159642.png -wood_98833.png -carpet-rug_142735.png -carpet-rug_46685.png -painted_130345.png -painted_60433.png -tile_121090.png -tile_37556.png -wood_113546.png -wood_159656.png -wood_99063.png -carpet-rug_142845.png -carpet-rug_48680.png -painted_130427.png -painted_62816.png -tile_121172.png -tile_37882.png -wood_114215.png -wood_159821.png -wood_99531.png -carpet-rug_143107.png -carpet-rug_50329.png -painted_130433.png -painted_63081.png -tile_121446.png -tile_38394.png -wood_114838.png -wood_160133.png -wood_99732.png -carpet-rug_143670.png -carpet-rug_50472.png -painted_135029.png -painted_63150.png -tile_121516.png -tile_39908.png -wood_116857.png -wood_160550.png -wood_99798.png \ No newline at end of file diff --git a/docs/txt/open_surfaces_shapes_val.txt b/docs/txt/open_surfaces_shapes_val.txt deleted file mode 100644 index f6e1dfa..0000000 --- a/docs/txt/open_surfaces_shapes_val.txt +++ /dev/null @@ -1,64 +0,0 @@ -carpet-rug_128646.png -carpet-rug_173568.png -painted_120883.png -painted_156794.png -tile_108530.png -tile_162724.png -wood_111599.png -wood_175858.png -carpet-rug_130316.png -carpet-rug_173908.png -painted_121550.png -painted_167747.png -tile_111546.png -tile_174254.png -wood_113273.png -wood_44426.png -carpet-rug_135101.png -carpet-rug_42714.png -painted_131824.png -painted_170335.png -tile_121494.png -tile_175345.png -wood_137922.png -wood_53807.png -carpet-rug_139672.png -carpet-rug_60742.png -painted_131957.png -painted_175857.png -tile_125945.png -tile_34825.png -wood_156291.png -wood_59450.png -carpet-rug_150795.png -carpet-rug_63040.png -painted_141924.png -painted_177271.png -tile_129661.png -tile_43985.png -wood_157995.png -wood_63225.png -carpet-rug_159290.png -carpet-rug_65244.png -painted_151146.png -painted_68422.png -tile_129885.png -tile_48743.png -wood_158245.png -wood_71383.png -carpet-rug_161252.png -carpet-rug_85751.png -painted_155760.png -painted_95353.png -tile_138415.png -tile_85741.png -wood_159077.png -wood_92599.png -carpet-rug_170661.png -carpet-rug_93519.png -painted_156468.png -painted_95546.png -tile_145234.png -tile_97715.png -wood_161585.png -wood_98994.png \ No newline at end of file diff --git a/docs/txt/plaster_texture_ids.txt b/docs/txt/plaster_texture_ids.txt deleted file mode 100644 index 9a14c35..0000000 --- a/docs/txt/plaster_texture_ids.txt +++ /dev/null @@ -1,125 +0,0 @@ -# Train -ConcreteStucco0031 -ConcreteStucco0035 -ConcreteStucco0132 -ConcreteStucco0084 -ConcreteStucco0192 -ConcreteStucco0046 -ConcreteStucco0124 -ConcreteStucco0036 -ConcreteStucco0059 -ConcreteStucco0210 -ConcreteStucco0074 -ConcreteStucco0028 -ConcreteStucco0144 -ConcreteStucco0112 -ConcreteStucco0016 -ConcreteStucco0030 -ConcreteStucco0141 -ConcreteStucco0137 -ConcreteStucco0169 -ConcreteStucco0195 -ConcreteStucco0094 -ConcreteStucco0175 -ConcreteStucco0160 -ConcreteStucco0081 -ConcreteStucco0040 -ConcreteStucco0168 -ConcreteStucco0004 -ConcreteStucco0206 -ConcreteStucco0184 -ConcreteStucco0226 -ConcreteStucco0171 -ConcreteStucco0134 -ConcreteStucco0115 -ConcreteStucco0139 -ConcreteStucco0136 -ConcreteStucco0179 -ConcreteStucco0201 -ConcreteStucco0159 -ConcreteStucco0191 -ConcreteStucco0203 -ConcreteStucco0121 -ConcreteStucco0118 -ConcreteStucco0130 -ConcreteStucco0032 -ConcreteStucco0198 -ConcreteStucco0095 -ConcreteStucco0048 -ConcreteStucco0197 -ConcreteStucco0101 -ConcreteStucco0155 -ConcreteStucco0120 -ConcreteStucco0131 -ConcreteStucco0146 -ConcreteStucco0164 -ConcreteStucco0076 -ConcreteStucco0180 -ConcreteStucco0162 -ConcreteStucco0228 -ConcreteStucco0186 -ConcreteStucco0006 -ConcreteStucco0086 -ConcreteStucco0173 -ConcreteStucco0158 -ConcreteStucco0077 -ConcreteStucco0053 -ConcreteStucco0037 -ConcreteStucco0111 -ConcreteStucco0113 -ConcreteStucco0097 -ConcreteStucco0064 -ConcreteStucco0109 -ConcreteStucco0017 -ConcreteStucco0157 -ConcreteStucco0174 -ConcreteStucco0102 -ConcreteStucco0122 -ConcreteStucco0008 -ConcreteStucco0190 -ConcreteStucco0023 -ConcreteStucco0123 -ConcreteStucco0055 -ConcreteStucco0091 -ConcreteStucco0049 -ConcreteStucco0161 -ConcreteStucco0142 -ConcreteStucco0126 -ConcreteStucco0087 -ConcreteStucco0194 -ConcreteStucco0085 -ConcreteStucco0153 -ConcreteStucco0187 -ConcreteStucco0119 -ConcreteStucco0125 -ConcreteStucco0114 -ConcreteStucco0009 -ConcreteStucco0026 -ConcreteStucco0015 -ConcreteStucco0099 -ConcreteStucco0056 -ConcreteStucco0052 -ConcreteStucco0093 -ConcreteStucco0117 -ConcreteStucco0033 -ConcreteStucco0143 -ConcreteStucco0050 -ConcreteStucco0140 -ConcreteStucco0103 -# Val -ConcreteStucco0096 -ConcreteStucco0079 -ConcreteStucco0196 -ConcreteStucco0254 -ConcreteStucco0178 -ConcreteStucco0025 -ConcreteStucco0138 -ConcreteStucco0027 -ConcreteStucco0038 -ConcreteStucco0135 -ConcreteStucco0133 -ConcreteStucco0098 -ConcreteStucco0170 -ConcreteStucco0208 -ConcreteStucco0047 -ConcreteStucco0200 diff --git a/docs/txt/tile_texture_ids.txt b/docs/txt/tile_texture_ids.txt deleted file mode 100644 index fcc7a92..0000000 --- a/docs/txt/tile_texture_ids.txt +++ /dev/null @@ -1,143 +0,0 @@ -# Train -TilesSmall0118 -TilesPlain0269 -TilesSmall0073 -TilesPlain0261 -TilesSmall0128 -TilesSmall0057 -TilesSmall0002 -TilesSmall0030 -TilesSmall0014 -TilesSmall0132 -TilesSmall0114 -TilesSmall0045 -TilesSmall0061 -TilesSmall0023 -TilesSmall0017 -TilesPlain0102 -TilesPlain0164 -TilesSmall0078 -TilesSmall0072 -TilesSmall0038 -TilesPlain0241 -TilesSmall0004 -TilesPlain0132 -TilesSmall0111 -TilesSmall0065 -TilesSmall0019 -TilesSmall0080 -TilesSmall0016 -TilesSmall0138 -TilesSmall0032 -TilesSmall0122 -TilesSmall0104 -TilesPlain0248 -TilesSmall0099 -TilesPlain0130 -TilesSmall0077 -TilesSmall0076 -TilesPlain0149 -TilesSmall0003 -TilesSmall0049 -TilesPlain0276 -TilesPlain0165 -TilesSmall0141 -TilesSmall0033 -TilesPlain0133 -TilesPlain0088 -TilesSmall0133 -TilesSmall0071 -TilesPlain0265 -TilesSmall0101 -TilesSmall0011 -TilesSmall0082 -TilesSmall0088 -TilesSmall0015 -TilesSmall0092 -TilesSmall0060 -TilesPlain0178 -TilesSmall0062 -TilesPlain0121 -TilesPlain0024 -TilesSmall0105 -TilesPlain0239 -TilesPlain0247 -TilesPlain0180 -TilesSmall0131 -TilesPlain0190 -TilesPlain0048 -TilesPlain0099 -TilesSmall0020 -TilesPlain0171 -TilesSmall0055 -TilesSmall0129 -TilesSmall0043 -TilesSmall0091 -TilesSmall0058 -TilesSmall0054 -TilesSmall0021 -TilesSmall0090 -TilesSmall0068 -TilesPlain0027 -TilesSmall0095 -TilesSmall0140 -TilesSmall0137 -TilesPlain0038 -TilesSmall0110 -TilesSmall0070 -TilesPlain0168 -TilesPlain0074 -TilesSmall0053 -TilesSmall0041 -TilesSmall0066 -TilesSmall0022 -TilesSmall0124 -TilesPlain0109 -TilesSmall0139 -TilesPlain0278 -TilesSmall0075 -TilesSmall0025 -TilesPlain0002 -TilesSmall0048 -TilesSmall0013 -TilesSmall0059 -TilesPlain0162 -TilesSmall0010 -TilesSmall0028 -TilesSmall0074 -TilesSmall0005 -TilesPlain0111 -TilesSmall0044 -TilesSmall0084 -TilesSmall0063 -TilesPlain0281 -TilesPlain0098 -TilesSmall0042 -TilesPlain0117 -TilesSmall0036 -TilesSmall0029 -TilesSmall0050 -TilesSmall0031 -TilesSmall0083 -TilesSmall0119 -TilesPlain0065 -TilesSmall0123 -TilesSmall0107 -TilesSmall0035 -# Val -TilesPlain0242 -TilesSmall0079 -TilesPlain0039 -TilesSmall0034 -TilesSmall0037 -TilesSmall0039 -TilesPlain0271 -TilesSmall0117 -TilesSmall0142 -TilesSmall0009 -TilesSmall0098 -TilesPlain0016 -TilesSmall0064 -TilesSmall0046 -TilesPlain0086 -TilesPlain0040 \ No newline at end of file diff --git a/docs/txt/wood_texture_links.txt b/docs/txt/wood_texture_links.txt deleted file mode 100644 index 1fe36e2..0000000 --- a/docs/txt/wood_texture_links.txt +++ /dev/null @@ -1,122 +0,0 @@ -# Train -https://www.pexels.com/photo/abstract-ancient-antique-art-235985/ -https://unsplash.com/photos/5zmmp4-auKo -https://unsplash.com/photos/aC62WCboh0c -https://unsplash.com/photos/kboKI0KIbBk -https://unsplash.com/photos/ZWo_mAU-BGc -https://unsplash.com/photos/2SNC9jVruBc -https://unsplash.com/photos/bnVRnwIbLj4 -https://www.pexels.com/photo/close-up-hardwood-macro-rough-368767/ -https://unsplash.com/photos/c75fv449GUM -https://unsplash.com/photos/JQJudsCV8VM -https://unsplash.com/photos/bwNiM3yazWg -https://www.pexels.com/photo/background-board-carpentry-construction-207253/ -https://unsplash.com/photos/E-1LUGhTkzo -https://unsplash.com/photos/uDT8nh0I-vk -https://unsplash.com/photos/BwihRgTjY6w -https://unsplash.com/photos/6zyGDa3TQJE -https://unsplash.com/photos/sZO_aniGp6U -https://www.pexels.com/photo/white-and-brown-wooden-surface-3705709/ -https://unsplash.com/photos/xfc43saqKPQ -https://www.pexels.com/photo/background-hardwood-smooth-surface-301717/ -https://unsplash.com/photos/Bc8188jujy0 -https://www.pexels.com/photo/macro-shot-of-wooden-planks-326333/ -https://www.pexels.com/photo/brown-wooden-surface-218535/ -https://unsplash.com/photos/1kIIZVZSJzQ -https://unsplash.com/photos/6vvIBTvL90A -https://www.pexels.com/photo/carpentry-dark-dirty-hardwood-172291/ -https://unsplash.com/photos/dcasj22jmCk -https://www.pexels.com/photo/rustic-surface-texture-wood-1303092/ -https://unsplash.com/photos/AOTnlUUxxm8 -https://www.pexels.com/photo/brown-wooden-surface-230776/ -https://unsplash.com/photos/CLftlH8hF-4 -https://unsplash.com/photos/xaqhjvNU3zo -https://www.pexels.com/photo/abstract-antique-backdrop-background-163999/ -https://unsplash.com/photos/cyp7GkqF6b8 -https://unsplash.com/photos/XXZz3mSyRa0 -https://unsplash.com/photos/67gCKFVYh7s -https://www.pexels.com/photo/background-boards-brown-carpentry-518245/ -https://www.pexels.com/photo/board-bright-design-fabric-235994/ -https://www.pexels.com/photo/brown-wood-surface-2479239/ -https://unsplash.com/photos/aLmV1pc7y_o -https://unsplash.com/photos/4Sxnm0LDn04 -https://unsplash.com/photos/RjlhLuAloeM -https://www.pexels.com/photo/brown-and-black-wooden-surface-3816859/ -https://unsplash.com/photos/mI-QcAP95Ok -https://unsplash.com/photos/0rctqCrnZDw -https://www.pexels.com/photo/abstract-antique-backdrop-background-168449/ -https://www.pexels.com/photo/abstract-antique-backdrop-background-129731/ -https://unsplash.com/photos/cyZlOxDhZ84 -https://www.pexels.com/photo/board-brown-carpentry-design-172284/ -https://www.pexels.com/photo/brown-wooden-board-1568754/ -https://unsplash.com/photos/jVVgYBLKZ5s -https://www.pexels.com/photo/brown-close-up-hd-wallpaper-surface-172289/ -https://unsplash.com/photos/TqiinbLtA3o -https://unsplash.com/photos/MiTIxh6q-X8 -https://www.pexels.com/photo/abstract-antique-backdrop-background-132199/ -https://www.pexels.com/photo/abstract-antique-backdrop-background-168441/ -https://unsplash.com/photos/flmAJJA3WNc -https://www.pexels.com/photo/abstract-antique-background-board-172276/ -https://www.pexels.com/photo/board-brown-close-up-design-172288/ -https://unsplash.com/photos/fAx3eaYzudk -https://unsplash.com/photos/HPcsPq5Kvuc -https://unsplash.com/photos/5nUNdLueQio -https://unsplash.com/photos/e6frrz-kh-0 -https://unsplash.com/photos/QZXt6FarC5s -https://unsplash.com/photos/62Ims7pw_X8 -https://unsplash.com/photos/DwxeQF8YtVk -https://www.pexels.com/photo/board-brown-dried-hardwood-172286/ -https://unsplash.com/photos/7dAJ3Tg6-jE -https://www.pexels.com/photo/abstract-antique-backdrop-background-131638/ -https://www.pexels.com/photo/bark-close-up-crack-decay-207328/ -https://unsplash.com/photos/1FDVPV_fx1M -https://unsplash.com/photos/1yrfAVyfL4c -https://www.pexels.com/photo/wood-texture-background-pine-82256/ -https://www.pexels.com/photo/background-board-carpentry-crack-220059/ -https://unsplash.com/photos/FBpRxoJrqj8 -https://www.pexels.com/photo/background-design-floor-hardwood-235992/ -https://unsplash.com/photos/h8rZbxGswwg -https://unsplash.com/photos/9EfJ2O224-g -https://unsplash.com/photos/R6tJUiEYZ6g -https://www.pexels.com/photo/vertical-design-on-surface-of-material-4039781/ -https://unsplash.com/photos/CTSmEfYr3Oo -https://unsplash.com/photos/8TDltliWdJY -https://unsplash.com/photos/L6GydBHMVGQ -https://www.pexels.com/photo/white-wooden-plank-218434/ -https://unsplash.com/photos/QW4nQ9370QE -https://unsplash.com/photos/e-lPhRbK4G0 -https://www.pexels.com/photo/backdrop-background-pattern-planks-479455/ -https://unsplash.com/photos/0Hr2wHVi0-w -https://www.pexels.com/photo/blue-wooden-pallet-2113785/ -https://www.pexels.com/photo/abstract-backdrop-background-board-129733/ -https://unsplash.com/photos/7S0QrcOgI1I -https://www.pexels.com/photo/macro-photography-of-brown-rustic-wood-planks-3095914/ -https://unsplash.com/photos/0Rnha6nSNRQ -https://unsplash.com/photos/bg20VZvrfvY -https://unsplash.com/photos/mmmWQ-IfZKo -https://unsplash.com/photos/LRqJGgetw9w -https://unsplash.com/photos/3ZRKSc-dSn4 -https://unsplash.com/photos/-NDQSoWoXN8 -https://unsplash.com/photos/pQAqXe3d9cU -https://www.pexels.com/photo/abstract-antique-architecture-backdrop-168442/ -https://www.pexels.com/photo/brown-wood-plank-closeup-photo-1098764/ -https://www.pexels.com/photo/close-up-of-wooden-plank-326311/ -https://unsplash.com/photos/ExCeuFAH5ak -https://www.pexels.com/photo/abstract-background-board-brown-129728/ -# Val -https://www.pexels.com/photo/brown-wooden-floor-172292/ -https://unsplash.com/photos/CzqWqlRfjoE -https://unsplash.com/photos/Ku4WtcM5JxM -https://unsplash.com/photos/9C3DAofN-nQ -https://unsplash.com/photos/Yi_cW71j6s4 -https://www.pexels.com/photo/board-brown-dried-hardwood-172295/ -https://www.pexels.com/photo/abstract-antique-background-board-172277/ -https://unsplash.com/photos/vIvoCKZLy0U -https://www.pexels.com/photo/wood-texture-trees-wood-planks-7132/ -https://unsplash.com/photos/iLSW5pty5Ig -https://www.pexels.com/photo/abstract-antique-backdrop-background-129723/ -https://www.pexels.com/photo/abstract-antique-backdrop-background-131639/ -https://www.pexels.com/photo/brown-and-black-wooden-surface-3705687/ -https://www.pexels.com/photo/background-board-brown-carpentry-379526/ -https://www.pexels.com/photo/abstract-antique-backdrop-background-139309/ -https://www.pexels.com/photo/abstract-antique-backdrop-background-164005/ \ No newline at end of file