23
Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows Rafael Ferreira da Silva 1,2 , Gideon Juve 2 , Ewa Deelman 2 , Tristan Glatard 1,3 , Frédéric Desprez 4 , Douglas Thain 5 , Benjamín Tovar 5 , Miron Livny 6 1 University of Lyon, CNRS, INSERM, CREATIS, Villeurbanne, France 2 University of Southern California, Information Sciences Institute, Marina Del Rey, CA, USA 3 McConnell Brain Imaging Centre, Montreal Neurological Institute, McGill University, Canada 4 INRIA, University of Lyon, LIP, ENS Lyon, Lyon, France 5 University of Notre Dame, Notre Dame, IN, USA 6 University of Wisconsin Madison, Madison, WI, USA

Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Embed Size (px)

DESCRIPTION

Presentation held at WORKS'13 - Denver, USA Abstract. Task characteristics estimations such as runtime, disk space, and memory consumption, are commonly used by scheduling algorithms and resource provisioning techniques to provide successful and efficient workflow executions. These methods assume that accurate estimations are available, but in production systems it is hard to compute such estimates with good accuracy. In this work, we first profile three real scientific workflows collecting fine-grained information such as process I/O, runtime, memory usage, and CPU utilization. We then propose a method to automatically characterize workflow task needs based on these profiles. Our method estimates task runtime, disk space, and memory consumption based on the size of tasks input data. It looks for correlations between the parameters of a dataset, and if no correlation is found, the dataset is divided into smaller subsets by using a clustering technique. Task behavior estimates are done based on the ratio parameter/input data size if they are correlated, or based on the mean value. However, task dependencies in scientific workflows lead to a chain of estimation errors. To correct such errors, we propose an online estimation process based on the MAPE-K loop where task executions are constantly monitored and estimates are updated accordingly. Experiment results show that our online estimation process yields much more accurate predictions than an offline approach, where all task needs are estimated at once. More information: www.rafaelsilva.com

Citation preview

Page 1: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Rafael  Ferreira  da  Silva1,2,  Gideon  Juve2,  Ewa  Deelman2,  Tristan  Glatard1,3,  Frédéric  Desprez4,  Douglas  Thain5,  Benjamín  Tovar5,  Miron  Livny6  

1University of Lyon, CNRS, INSERM, CREATIS, Villeurbanne, France 2University of Southern California, Information Sciences Institute, Marina Del Rey, CA, USA 3McConnell Brain Imaging Centre, Montreal Neurological Institute, McGill University, Canada 4INRIA, University of Lyon, LIP, ENS Lyon, Lyon, France 5University of Notre Dame, Notre Dame, IN, USA 6University of Wisconsin Madison, Madison, WI, USA

Page 2: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

2

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

Page 3: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

3

Outline

!  Introduction !  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

Page 4: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

4

Context

!  Methods assume that accurate estimations are available –  It is hard to compute accurate estimations in production systems

!  A successful workflow execution mainly depends on how tasks are planned and executed

!  We propose a method to online estimate fine-grained task characteristics

Scheduling  and  Resource  Provisioning  

Algorithms  

Task  CharacterisPcs:  RunPme  Disk  Space  

Memory  ConsumpPon  

Page 5: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

5

Scientific Workflows

•  Directed Acyclic Graph (DAG) •  Nodes denote tasks •  Edges denote task dependencies

mProjectPP mDiffFit mConcatFit mBgModel mBackground

mImgtbl mAdd mShrink mJPEGSmall (20 node) Montage Workflow

fastQSplit

filterContams

sol2sanger

fastq2bfq

map

mapMerge

maqIndex

pileup

Epigenomics Workflow

�����������������

���

Periodogram Workflow

Page 6: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

6

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

Page 7: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

7

Workflow Execution Profiling

!  Workflows were executed using Pegasus WMS

and profiled using Kickstart profiling tool –  Monitors and records fine-grained data –  E.g. process I/O, runtime, memory usage, CPU utilization

!  3 runs of each workflow with different datasets –  16-core cluster

5 Dual core MP OpteronTM Processor 250 2.4GHz / 8GB RAM 3 Dual core MD AMD OpteronTM Processor 275 2.2 GHz / 8GB RAM

Page 8: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

8

Execution Profile: Montage Workflow

Task estimation could be based on mean values

Task estimation based on average may lead to significant estimation errors

Page 9: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

9

Automatic Workflow Characterization

•  Characterize tasks based on their estimation capability •  Runtime, I/O write, memory peak ! estimated from I/O read

•  Enforces correlation statistics to identify statistical relationships between parameters •  High correlation values yield accurate estimations

Constant values

Correlated if ρ > 0.8

Epigenomics workflow

Page 10: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

10

Density-Based Clustering

●●●●●●

●●●●●●

●●●

●●

●●●

●●●●

●●●●●●●●

●●●

●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●

●●

●●●●●●

●●●●●●●●

●●●●●●●●●●

●●●●●●●●●

●●

●●●●

●●●●●●●●●●●●●

●●●●

●●

●●●

●●

●●

●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●●●

●●●

●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●

●●●●

●●●●

●●

●●●●●

●●●●●

●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●

●●●●

●●

●●

●●●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●

●●●

●●●

●●●●

●●●●●

●●

●●●●●●

●●

●●●●

●●

●●●●

●●●●

●●●

●●●●●●●●●●

●●●

●●

●●

●●●

●●●●●

●●●

●●

●●●●●●

●●●●●●●

●●●

●●

●●●●●●●●

●●●●●●●●●●●●●●

●●●

●●●●●●

●●●

●●

●●●●●●

●●●●●●●

●●●●●●●

●●●●●●●●●●●

●●●●●●●

●●

●●

●●●●●●

●●●●●●

●●●●

●●●●

●●

●●●●●●●

●●●●●●

●●●

●●●●●

●●

●●●●●●●

●●●

●●●●

●●●●●●●●●●●●●●

●●●

●●●●

●●●

●●●●●●●●●●●

●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●

●●

●●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●●●●●

●●

●●●●

●●●●●●●●

●●●●●●●●●●●●●

●●●●●

●●●●

●●●●●●●●●●●●

●●●●●●●●●●●●●●●

●●●

●●●

●●

●●●●●

●●●●

●●●●

●●

●●

●●●●●

●●

●●●●●

●●●●

●●

●●

●●

●●

●●●●●●●●●●●

●●

●●●

●●●●●●●●●●●●

●●●●●●

●●●●●●●●●●●

●●●●●●●●

●●●●

●●

●●

●●●

●●●

●●●

●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●

●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●

●●

●●

●●●●

●●

●●●

●●●●●●●●●

●●●●

●●●●

●●●●●●●●●●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●

●●

●●●●●

●●

●●●●●●●●●●●●

●●●

●●●●●

●●●

●●●●●●●●

●●●●

●●

●●●

●●●●●●●

●●●●●

●●●●●●

●●●●●●●

●●

●●

●●●●●●

●●

●●●●●●

●●●●●

●●●

●●●●

●●●

●●●●

●●●●●●●●●

●●●●●●

●●●●

●●●●●●●

●●●●

●●

●●●●●●●●●●●●●●●●

●●●●●●

●●●●●●●●

●●●●●●●●●

●●●●●●

●●●●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●●

●●●●●●●●●●●●●

●●●

●●

●●●●●●●

●●

●●●

●●●●●●●●

●●

●●●●●●●

●●●

●●●●●●●●●●●●●●●●

●●●●

●●●

●●●●●

●●●●●

●●

●●●

●●●

●●●●●

●●

●●●●●●●●●

●●●●●●●●●●●●●●●

●●

●●●●

●●

●●●●●●●●●●●

●●●●●●●●●●●●●●●

●●●●●●●

●●

●●●●●●

●●●●

●●

●●●●●●●●

●●●●●●

●●●●●●●

●●

●●

●●●●●●●●●●

●●

●●

●●●●●●

●●●●●

●●●

●●●

●●

●●●

●●●●●

●●●●●●●●●●●

●●●●●

●●

●●

●●

●●●●●●●

●●●●●●●●

●●●●●●●

●●●●●

●●●●●●●

●●●●●●●●●

●●

●●

●●●●●

●●●

●●

●●●●●●●●●●●●●

●●●●●●●●●

●●●●●●●

●●●●●

●●

●●●

●●●●●

●●●●●●

●●●●●●●●●●●●●●

●●●●

●●●●●●

●●●●

●●

●●●●●●●●

●●●●

●●●●●●●●

●●

●●

●●●

●●

●●●●●●●

●●

●●●●●●

●●

●●●●●●

●●●●●●●●

●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●●●●

●●●

●●

●●●●

●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●●

●●●●

●●●●●●

●●●●●●●●●●

●●●●●●●●●●●

●●●

●●●●

●●●●●●●●●

●●●●●●●●

●●

●●●●●●

●●●

●●●●

●●●●●●●

●●●●●●●●●

●●●●●

●●

●●

●●●●●

●●●

●●●●●●

●●

●●●

●●●●

●●●

●●●●

●●●●●●●●●●

●●●●

●●

●●●●

●●

●●

●●●

●●●●●●

●●

●●●●●

●●●●●●

●●●●●●●●●●●●●●●●●●●●●

●●●●●●

●●●

●●●●●●

●●●●●●●●●●●●

●●

●●

●●●●●●

●●

●●

●●●●●●●●●●●●●●●●●●●●

●●

●●●●●●

●●●●●

●●

●●●

●●●●●●●●●●●●●●●●●●●

●●

●●●●●

●●

●●●●●●●●●

●●●●●●●●

●●●●●●●●●

●●●●●●●●

●●●●●

●●●●

●●●●●●

●●●●

●●

●●●●

●●●

●●

●●●●●

●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●

●●●●

●●●

●●●●●●●●●●

●●●●

●●●●●●●●●●

●●

●●●●●●●●●●●●

●●●●●●●●●●●●

●●

●●●●

●●

●●

●●●●

●●●●●

●●●●●●●●●

●●

●●●

●●●●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●

●●●●

●●

●●

●●

●●●●●●●●●●●

●●●●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●

●●●

●●●●

●●

●●●●

●●●●●●●●●

●●●●●●●

●●●●●●●●●●●●●●

●●●●●●●●●●

●●●

●●

●●●●

●●●

●●●

●●●

●●

●●●●●

●●

●●●●●

●●

●●●●●●●●●●●

●●●●

●●●

●●●●

●●

●●●●●●●●●●●●

●●●●

●●●●

●●●●●

●●●

●●●

●●●●●

●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●

●●

●●●●●

●●●●●●●●●

●●●●●●●

●●●●

●●●●●●●●●●●●●●

●●●●●●●●

●●

●●●●●●●

●●●●●●●

●●●●●●●

●●

●●●●

●●●●●●●●

●●

●●●

●●●●●●●●

●●●●●●

●●●●●●●●●●●●

●●

●●●

●●

●●●

●●●●

●●●

●●●●●●●●●●●●●●●●

●●●●●

●●

●●

●●●●

●●●●

●●●●●●●●

●●●●●●●●

●●

●●●●●

●●

●●●

●●

●●

●●

●●●●●●●●

●●●●●

●●

●●

●●●●●

●●

●●●

●●●●

●●●●●

●●●●●●

●●●●●●●

●●●●●●●●

●●

●●●●

●●●

●●●●●●●

●●●

●●

●●●

●●●●●●●

●●●

●●

●●

●●

●●

●●●●●●●

●●●

●●

●●●●

●●●

●●●

●●

●●●●

●●●●●●●●●●

●●

●●

●●●●●

●●

●●

●●●●●

●●●●●

●●●●

●●

●●

●●

●●●●●●●●

●●

●●●

●●●●

●●●●●

●●●●●●●●●●●●

●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●

●●●●●●●●●●

●●

●●

●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●●●●●●

●●

●●●●

●●●

●●

●●●●●●●●●

●●●●●

●●●●●●●

●●●

●●

●●

●●●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●

●●●●●

●●●●

●●●●●

●●●●●●●●●

●●●●●●●

●●

●●●●

●●●●●●●●●

●●

●●

●●●●●●●●●●●

●●

●●

●●●●●

●●●●●●●

●●

●●●

●●

●●

●●●●●●

●●●

●●●●●

●●

●●

●●●●●●

●●

●●

●●

●●●●●●●

●●

●●●●●●●●●●●●●●●●●

●●●●●●●●

●●●

●●●●

●●●●●●

●●●●●

●●

●●●●●●●●●●●●●●

●●●

●●●●●●●

●●●●●●●●●●●

●●●●●●●

●●●●

●●●●●●●●●●●●

●●●●●●

●●

●●●●●●●●●●●●

●●●

●●●●●●●●●●●●●

●●●●

●●●

●●●●●●●●

●●

●●●●●●●●

●●●●●●

●●●●●

●●

●●●●

●●●●●●●●●●●

●●●●●●

●●●●

●●●●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●

●●●●●

●●●●●●

●●●●●●●●

●●●

●●●

●●

●●●●●●●●●●●●●●●●●●●

●●●●

●●●●●

●●

●●●●●●

●●

●●●●

●●

●●●

●●

●●●●●

●●●●●●

●●●

●●

●●●

●●●●

●●●

●●●●

●●

●●●●

●●●●●●●

●●

●●●●

●●

●●●●●●●●

●●●●●●●

●●●●●●●

●●

●●●

●●●●●●●●

●●●●●●

●●●

●●●

●●●

●●●●●●●●●●

●●●●●●●●

●●●●●

●●●●●●●●

●●●●

●●●●●●●●●●●

●●

●●●●●●●●●●●●●

●●●●●●●

●●●

●●●●●●●●●●

●●●●●

●●

●●●●

●●●

●●●●●●●

●●●●●●●●●●

●●●●●

●●●●●●●●●●●

●●●●●●●

●●

●●●●●●●

●●

●●●●●●●●●

●●●●●

●●●●

●●

●●

●●●●●●

●●●●●●●●●

●●●●●●●●●●

●●●●

●●●●●●●

●●●●

●●

●●●

●●

●●●●●●●●●●●

●●●●●

●●●●●

●●●●●

●●

●●

●●●●●

●●●●●●●●●●●●

●●

●●●

●●●●●●

●●

●●

●●●●

●●

●●●

●●

●●●●●●●

●●

●●

●●●●●●●●●●

●●●●●●●●●●

●●

●●

●●●●●●●

●●

●●●●●●●●

●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●

●●

●●

●●●●●

●●

●●●

●●●●●●●●●●●

●●

●●●●●●

●●

●●●

●●●●●●●●●●

●●●●●●●●

●●●

●●●●●

●●

●●●

●●●

●●

●●●●●●●

●●●

●●●●●●●●●●●●●●●●●●

●●●●

●●●●

●●●●

●●●●●●●●●

●●●●●●●●

●●●●●●●●

●●●●

●●●

●●

●●●●

●●●●●●●

●●●●

●●●●●●

●●●

●●●

●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●

●●●●●●●

●●●●●●

●●●●●

●●●●●●●●

●●●

●●●●●

●●●

●●●●●●

●●●

●●●●

●●

●●●

●●●●●●●●

●●●

●●●●●●●

●●●●

●●●●●

●●

●●●●●

●●●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●●

●●

●●●●●●●●

●●

●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●●

●●

●●●●●●●●●

●●●●●●●●

●●

●●●●●●

●●●●●

●●

●●●●●●●●●●

●●●●

●●●●●●●●●●●

●●

●●●●●●●●●

●●●

●●●●●●●●

●●

●●●●

●●

●●●●

●●●●●●●●●●●●●●

●●

●●●●●●●

●●●●●

●●●●●●●●●

●●●●●

●●

●●●●

●●●●●

●●

●●

●●

●●●●●●●●●●●●

●●●

●●●●●●●●

●●●●●●●●

●●●●●●

●●●●●

●●

●●●●●●●●●●

●●●

●●

●●

●●●●●●●●●

●●●●

●●

●●●●●●●●

●●●●●●●●●●

●●

●●●

●●

●●●

●●

●●

●●●●●●●

●●●●●●●●●●●●

●●●●●●

●●●

●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●

●●

●●●●

●●●

●●●

●●

●●●

●●

●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●

●●

●●●●●●●●●●●●●

●●●●●●

●●●●●

●●

●●

●●●●●●●●●●●

●●●●

●●

●●

●●

●●●●●●

●●●●●●

●●

●●●

●●●

●●

●●●

●●●●●●●●●

●●

●●●●●

●●●●●●●●●●

●●●●

●●

●●

●●

●●●●●●●

●●●

●●●●

●●●●●●●

●●●●●●●●

●●

●●●●●●●

●●●●

●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●●●●

●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●

●●●

●●●●●●●●●

●●●●

●●●

●●●●●●●●●●●●●●●●●

●●

●●●●●●●●●●●

●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●●●

●●●●●●

●●

●●●●●●●●●●●●

●●●

●●●●●●●●●

●●

●●

●●●●●●

●●

●●●●●●

●●●●●●

●●

●●●●

●●●●●●●●

●●●

●●●●●●●●●●●

●●●●●●●●

●●●

●●●

●●

●●

●●●●●

●●●

●●●●●

●●●●●

●●

●●●●●●●●●

●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●

●●●●●●●●●●●

●●●

●●●●

●●●●●●

●●

●●

●●●●●●●

●●●●●●

●●●●●●●●●●●●●

●●●●●●

●●●

●●●

●●

●●●●

●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●

●●●

●●●

●●●●●

●●

●●●●

●●

●●

●●●●

●●

●●

●●

●●●●

●●

●●

●●●●●●●●●●

●●

●●

●●●●

●●

●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●

●●●●●●●●

●●

●●●●

●●●●●●●●●●●

●●

●●

●●●●

●●●●●

●●●●●

●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●

●●

●●●●●●●●●

●●●●●●●●●●

●●●●●

●●

●●●●●

●●●●●●●●●

●●●●●●●●●

●●●●

●●●

●●

●●

●●●

●●

●●●

●●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●

●●●

●●●

●●

●●

●●●

●●●●●●●

●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●

●●●●●●●●●●●●●●

●●●●●●

●●●

●●●●●

●●●●

●●●

●●●●●●●●

●●●●●●●

●●●●●●

●●●●●●

●●●●●

●●●●●●

●●

●●●

●●●●●●●●●●●●

●●●

●●●

●●●●●

●●

●●●●●●●●●●

●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●

●●●●

●●●

●●

●●●●

●●●●

●●●

●●

●●●

●●

●●●

●●●●●●●●●●●●●●●

●●●●●●●

●●●●●●●●

●●●●

●●●●●

●●●●●●●●●●●●●●●●●●●

●●●

●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●

●●●●●

●●●●●●●

●●●●●

●●●●

●●●

●●

●●

●●

●●●●●

●●

●●●●●

●●●

●●●●●

●●

●●●●●●●●

●●●●

●●●●

●●●

●●●●●●●●●●●

●●●●●

●●●●●●●●●

●●●●●●

●●●●●●●●

●●

●●●●●●●

●●●

●●●●●●●●

●●●●●●

●●●●●●●●●●●

●●●

●●●

●●●●●●●●●●●●●●●●●

●●●●

●●●●

●●●

●●●●●●●●●●

●●●●

●●●●●●●●●●●●

●●●●●●●●

●●●●

●●●

●●●●●●●●

●●

●●●●●●

●●●●

●●●●

●●●●●●●●●

●●

●●

●●●●●●

●●●●

●●

●●●

●●

●●●●●●●●●●●●

●●

●●●●●●●●●●

●●●●●●●●●●●●

●●●●

●●●●●

●●

●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●

●●●●●●●●

●●

●●●●●●●●

●●●●●●

●●●●●●●●

●●2.5

5.0

7.5

10.0

2 3 4 5I/O Read (MB)

Dura

tion

(s)

mProjectPP

●● ●●●●●● ●●●●

●●●●● ●●●●●● ●●●● ● ●●● ●● ●●●

●●●

●●●

●● ●

●●●●●● ●●●

●●●

●●● ●● ● ●●●

● ●●

●●●● ●● ●●●●●●

●● ●

●●●●●●

●●● ●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●

●●●● ●●

●●● ●●● ●●●

●●● ●●●

●●●

●●●●●● ●●●●●● ●●●●●●●●●

●●●

●●●●●●● ●●●●● ● ●●●●●●● ●

●●●

●●● ●●●●●●

●●●

●●●●●●

●●●

●●●● ●●● ●●●●●

●●● ●● ●

●● ●●●●●●● ●●●● ●● ●●● ●●●

●●●

●●●

●●●

● ●● ●●●●●● ●●●●●●●● ●●●●●●●● ●● ●●● ●● ●●●●●●● ●●●●●●

●●●

●●●●

● ●●●●●●●●●

●●●●●●●●● ●●●

●●●●●●

●● ● ●●● ●● ●●●● ●●●●●●● ●● ●● ●

●●● ●●●

●●●●●●

●●●

●●● ●●●●●●

●●●

●●● ●●●●●●● ●●

●●● ●●●

●●●●●●

●●●

●●●●●● ●●● ●● ●●●●

●●● ●●●●● ●

●● ●●●●●●● ●●●

● ●●

● ●●●

●●

●●

●●●

●●●

●●●●●●

●●● ●●●●● ●

● ●● ●●● ●●●

●●●

●●●●●●● ●●●● ●

●●●●●●●●●

●● ●●●●

●●●

●●● ●●●

●●●

●●●

●●●

●●●●●●

●● ● ●●●

●●● ●● ●●●●● ●● ●●● ●●●

●●●

●●● ●●●●●●

●●●

●● ● ●●●●●●●●● ●● ●●●●

●●

●●● ●●●

●●●

●●●●●● ●●●

● ●●●●●●●●●●●● ●● ●●●● ●●●●●●●●●●●●

●●

●●

●●●●●●●● ●● ●

●●●

●●● ●●●●● ●●●●●●● ●●● ●●●

●● ●

●● ●●●●●● ●●●●●●● ●●●

●●●

● ●●●●● ●●● ●● ●● ●●

●●●●●●

●●●●●● ●●●●●●●

●●

●● ●●

●●●

●●● ●●● ●●●● ●●●●●

●●●

●●● ●● ●●● ●● ●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●

●●● ●●●

●●●

● ●●●●● ●● ●

●●●

●●●

●●●

●●●● ●●

●● ●

●●●●●●●●●

●●●

●● ●●●● ●●●

●●●

● ●●●●●● ●● ●●● ●●● ●●●●●●●●● ●●●●●●●● ●●● ●●● ●●●●

● ●●

●●●● ●●● ●● ●●●●●●●●● ●●●●●●

●●●●●●

●● ●●●●●●● ● ●● ●●● ●●●

●●●

●●●●●●

● ●●

●●● ●●●● ●●●●●

●●● ●●●●● ●

●●●

●●●

●●●● ●●●●●●●●●●●

● ●●

●●● ●●●●●● ●●● ●●●

●●●

●●●

●●●●

●●

●●

●●●

● ●●

●●● ● ●●● ●●●●● ●●●●●●

●●●●●●

●●● ●●●●● ●

●●●●●●

● ●●● ●●●●● ●●●●●●●●●●●●●●● ●●●●●●

● ●●

●●● ●●

●●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●●●●●

● ●●

● ●●●●●●

●●

●●●●●●●

●● ●●● ●

●●●●●● ●●●●●●●●●

●●●● ●●

●●●●●●●●● ● ●● ●● ●●●● ●●●●●● ●●●●●●

●●●

●●●●●●

●● ●

●● ●● ●● ●●●

●●●● ●●● ●●

●●●●●●●●●●●● ●●● ●●●●●●

●●●

●●● ●●●●●●

●●●●

●●●●●

●●

● ●●●●●●

●●●

● ●●

● ●

●●●●●●●●●●●●

●●●

●●●

●●●

● ●● ●●●●●●●●●●●●

●● ●

●●●

●●●

●●● ●●●●●● ●●●●●●●●● ●●●●●●

●●●

●● ●●●● ●●●

● ●● ●●●

●●●●●●●●●● ●● ●●●●● ●

●●●

●●●●●●● ●●●● ●●● ●●●●

●●●

●● ● ●●●●●●●●● ●●●

● ●●

●●●●●● ●

●●

●●●● ●●●

● ●●

●● ●

●●●

●●●●●●

●●●

●●●

●●●● ●●●●●●●●

●●●

●●● ●●●● ●● ●●●●●● ●●●● ●●

●●●

●●●●●●●●●● ●● ●●●●●●●●●●●● ●●●●●●●●●

●●●

●● ●

● ●●

●●●●●● ●●● ●● ●

●●●

●●● ●●●●●● ●●●

●●●

●●● ●● ●●● ●

●●●

●●●●●●

● ●●

●●●

●●●●●●

●●●●● ●●●● ●●●● ●● ●●●●●● ●●●●●●●●● ●●● ●●●

●●●●●●

● ●●● ●●●●●●●●● ●●

●●●

●● ●

●●●

●●●● ●●● ●●●●● ●● ●●●●

●●●

●●●●●●● ●●●●●●●●●●● ●●●●●● ●●●●●● ●●●● ●●

●●●

●● ●●●●●●● ●●●

●●● ●● ●

●●●

●●● ●● ●

●●●

●●

●●

● ●●●●● ● ●●●●●

●● ●

●●●●●●

●●●

●●●

●●● ●●●●●●●●● ●●●●●●●●● ●●● ●●●●●● ●●●●●●

●●●

●● ●● ●●

●●●

●●● ●●● ●●●●●● ●●●●●●●● ●●●● ●●●● ●●●●●

● ●●

●●●

●●●●●●

●●●

● ●●●●● ●●●

●●● ●●●

●●●

●●● ●● ●●●● ● ●●● ●●

●●● ●●●●

● ●●●

●●●●●● ●●● ●●● ●

●●

●●●●

●●● ●●●

●●●●●● ●● ● ●● ●●●●●●●●●●●●● ●●●

●●●●●●

●● ●

● ●●

●●● ●●●●●● ●●●●●●

●●●●●● ●●●

●●●

● ●● ●

●●

●●●

●●●

●●

●●●

●●●

●●●●●●

●● ●● ●●●●● ●●●●●●

●●

●● ●

●● ●

●●● ●●●●●●●●●

●●●

●●● ●●●●●● ●●●

●●●

●●●●●●●●●●●● ●●●

●● ●● ●●

●●● ●●●

●●●

●●●●●●●●●●●●●●● ●●●●● ●●●●

●●●

●●●

●●●

●●●

●● ●●●●

●●●●●●

● ●●●● ●●●●●●● ●●●

●●

●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●

●●

●●●

●●●

●●● ●●●● ●● ●● ●●●●●●●

●●● ● ●●

●●●●●●

●●●

●●●●● ●●

●●

●●●● ●●●●●●●●● ●●●●●●●●● ●● ● ●●●●●● ●●●●●●●●●

●●●

●●●● ●●●●●●●●●●● ●●●●●●●●●

●●●●●●

●●● ●●●●●●

●● ●

●●●●●●

●●●

●●●●●●

●●●

●● ●● ●●

●●●

●●●

●●●

●●●●●● ●●●●●●

●●●

●● ●●●●●●●

●●●

●●●● ●●

●●●

● ●● ●●● ●● ●●●● ●● ●●●●

●●●

●●● ●●●●● ●

●●●

●●●●●●● ●●●● ●● ●●●●●● ●●●●● ●●●

●●●

●●● ●●●

●●●

●●● ●●●

●●●

●●●●●●●●● ●

●●

●●●● ●●●

●●●

●●●●●●●● ●●●●

●●●

●●● ●●●

●●●

●●●●●● ●●●

●●

●●

●●

●● ●

●●

●●

●●● ●● ●●●

●●●

●●●●●●●●● ●●●●●● ●● ●●●●

●● ●

●●●●●●

●●●

●●●●●●●●●

●●●

●●●●● ●

●●●

●●● ●●●● ●●

●●●

●●●●●●●●● ●● ●●●●

● ●●

●●● ●●●●●●

●●● ●●●

●●●●●●

●●●

●● ●

●●●

●●● ●● ●●●●

●●●●●●

●●●

●●●

●●●

●●●

●●●●●●●● ●● ●●

●●●

●●●●● ●●●●●●●●●●●●● ●●●

●●●

●●● ●●●● ●●

●●

● ●●●

●●●

●●●●

● ●● ●

●●● ●●●●●●

●● ●● ●● ●●●●●●●●● ●●●

●●●

●●● ●●●●●●●●●● ●●

● ●●

●●● ●●●

●●● ●●●

●●●●● ●●●●

●●● ●●●● ●●●● ●●●●●● ●●●●●●● ●●●●●●●●●●●●● ●● ●●●●●●

●●●

●●●●●● ●●●● ●●●●●● ●●●●●●●● ●●●●●● ●●●●● ●

●●●

●●●● ●●●● ● ●●●● ●●●●●●●●●●●●●● ●● ●● ●● ● ●●● ●●●●● ●

●●

●●

●●● ●●●

● ●●

●● ●

●●●

● ●●

● ●●● ●●

●●●

●●●●

●● ●● ●● ●● ●●●●●●●

●●●

●●●

● ●●

● ●●● ●● ●●●

●●●

●●●

●●●●

●●

●●●●●●●●●

●●●

●●● ●●●

●●●

●●●●●●● ●●●●●●●● ●●●

●●●

●●●●●● ●●●

●●●

●●●● ●●● ●● ●●● ●●●●●●

●●●

●● ●●●● ●● ● ●● ●

●●●

●●●●●●●●●

●●●

●●●

●● ●

●●●

●●●

● ●●

●●●

●●● ●● ●●●●●●●● ●●●● ●●●● ●●●●●● ●●●●●● ●●●●●● ●●●● ●●●●●● ●●●●●

● ●●

●●●●● ●●●●

●●● ●●●●

● ●

●● ●●

●●●

● ●●

●●●

● ●

●●● ●● ●● ●●

●●●

●●●

●●●●●● ●●●

●●●

●● ●

●●●

● ●● ●●●

●●● ●●●● ●●●●● ●●●● ●●

●●●

●●●●●●

●●●

●● ●●●● ●●●

●●

● ●●●●●

●●●

●●●●●●●●● ●●● ●●●

●●

●● ●●●

●● ●

●●●●●●

●●●

●●●●●● ●●●

●●● ●● ●

●●●

●●●●●●●●●●●●●●● ●● ● ●●●●●●● ●●

●●

●●●●● ●●●

●●●

●●●

● ●●

●●● ●●● ●

●●

●●●●●●●

●●●●●●

●● ●●● ●●●●●●●

●●●

●●●●●●●●● ●●●●

●●

●●●●●

●●●

●●●

●●●●●●

●●●●●●●●●●●● ●●● ●●●●●●

●●●

●●● ●● ●●● ●● ●●●●● ●●●●●●●●● ●●●●●● ●●●● ●● ●● ●●●● ●●●●●●

●●●

●●●

● ●

● ●

●●

●●●

●●●● ●●● ●●● ●●●● ●

● ●●

●●●●● ●●●●

●●●

● ●●

●●●●● ●

●● ●●●●

●● ●

●●●●●●●● ●● ●●● ●●

●●●

●●● ●●● ●●●● ●●●●●●●●

●●

●●●●●●

●●●●●●●●●

● ●● ●●● ●●●●●● ●

●●

●●●

●●●●●● ●●●●●●

●●●

●●● ●●●●●●●●●

●●

● ●●●● ●

●●●

●● ●●● ●● ●● ●● ● ●●●● ●●●● ●

●●●

●●● ●●●●●● ●●●●●● ●●●●●● ●●●● ●●● ●●● ●●●●●●●●

●●●

●●● ●● ●●●● ●●●●●● ●●● ●●●●●●●●● ●●●●●● ●●●

●●●● ●● ●●●

●●●

●●●

●●●●●● ● ●●● ●●

●● ●

● ●●

●●● ●●●

●●●●●●●●●

●● ●●●●●

● ●

●●●●● ●●●●●●● ●●●●●●●●●●●

●●●

●●●●●●●

●● ●●●●

●●●

●● ●

●●●●●●

●●●●●● ●

●●

●●●●●●● ●●●●●● ●●●●● ●● ●

●●

●●●●●●●●● ●●●●

●●●

●● ●●●●

● ●●

●●● ●●●●●●●● ●●● ●●●● ●●●●●●●●●

●●●

● ●●● ●●

● ●●

●●●

●●●

●●●●●● ●●●●●●

●●●

●●●●●●●●●●●● ●●●●●●● ●●

●●●

●●●

●●●●●●●

●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●●● ●●

●●●

●●●●●●●●● ● ●●●●

● ●●●●●●● ●

● ●

●●● ●●●● ●● ●●●●● ●● ●●●●●●

●●●

●●●●●●●●● ●●●●●● ●● ●●● ●●●●●●●

●●● ●●●

●●●●●● ●●●●●●

●●●

●●● ●●●●●●●●● ●● ●●●●● ●●

●●●

●●●

●●● ●●●

●●●

●●●

● ●●●●● ●●●●●●

●●

●●●

●●

●●

●●●●● ●

●●● ●●●

●●●

●●●●●● ●●●●●●

●●●

● ●●

●●●

●●●●●● ●●●

●●●

●●●●●●●●● ●● ●

● ●●

●●● ●●●

●●●

●●●●● ●●●● ●●●●●●

●●

●●●

●● ●

● ●●●● ●●●●●●●

●●

● ●●●

●● ●●●●

●●

●●●●●●●●● ●● ●●●●

●●●●●●●●

●●● ●●●●●● ●●● ●●●●●●●●●

● ●● ●●●

●●●●●●●●● ●●●●●●●●●● ●●● ●●● ● ●●●●●●●

●●●

●●●●●●

●●●

●● ●●●●

●● ●

●●●

●●●

●●●● ●● ●● ●●●●●● ●●●●●●●

●●●●●●

● ●●

●●●

●●●●●●●●●●●●

●●●

●●●

● ●●

●● ●●●● ●●●

●●●

● ●●●● ●

●● ●●● ●

●● ●● ●● ●●●● ●●●●●●●● ●●●●●●●●●

●●

● ●●●●●

●●●●●●

●●● ●●●

●●●●●●

●●● ●●●● ●●● ●● ●●●●●●

●●●

●●● ●●●

● ●●

●●●● ●●

● ●●

●●●●●● ●●●●●●●● ●●●●

●●●

●●● ●●●● ●● ●●● ●● ●●●●●●● ●●●●● ●

●●●

●●●●●●

●●●

●●●

●●

●●●●●●

●●●

●● ●●● ●●●●

●● ●

●●● ●●●●●●

●●●

●●●

●●●●●●●●● ●● ●

●●●●●●●● ●●● ●● ●● ●● ●● ●●●● ●●● ●●

●●

● ●

● ● ●●●●●●●●●●●●●●● ●● ●●●●

●●●

●●●

●●●

●●●●●● ●●●●●●● ●●●●●●●●

●●●

●● ●●●● ●●●●●●●●●●●●●●●●●●

●●●

●●● ●●●●● ●●●●

●●●

●●●●●●

●●●●●●

●●●●● ●●●● ●●●●●● ●●●

●●

●●●●●●

●●●●●●

●●●●●●●●●● ●● ●● ●

●●● ●● ●

●● ●

● ●●

● ●● ●●●● ●● ●●●●●● ●● ●●●●●●●

●●●●●●

●●●●● ●●●●●● ●●●●●●●

●●

●●

●●●●

●●●●●●●●●

●●●

●●●

●●●

●●●●●● ●●●●●● ●● ●●●●

●●●

●●●

●● ●

●●● ●●●●●●

●●●

●●●●●●

●●●

●●●●●●●●●●●●

●●

●●●

●●●

●● ●●●●●●●●●● ●●● ●●●●● ●

●●●

●●● ●●●

●●●

●●●

●● ●

●●● ●●●●

●●●

●●●

●●●

●● ●●● ●● ●●

● ●

● ●

●●●

●●●●●●

●●●

●●●●●●●●● ●●●●●● ●● ●●●●

●●●●● ●●●●

●●●

●●● ●●●●

●●

● ●●●●●●●●● ●● ●●●●●●● ●●●●●●

●●●

●●● ●●●

● ●●

● ●●

●●●●

●●

●● ●●●● ●●●

●●●

●● ●

● ●●

●●●●●●●●● ●●●●●● ●●●●●●●●● ●●●●●●

●●● ●●●

●●●

●●●

●●●

●●●

●●●●●●●●●

●●●

●●●

●●●● ●●● ●●● ●●● ●●●●●

●●●

●●● ●●●

●●●

● ●●●●●● ●●

●● ●●● ●

●●●● ●●●● ● ● ●●●●●

●●

●●●●●● ●●●● ●●●●●●●●● ●●●●●

● ●●●●●● ●● ●●●● ●●●●●● ●●● ●●●●●●●●● ●●●●●●●●● ●● ●●●● ● ●●●●● ●●● ●●●●● ●● ●●

●●●

●●●●●●●●● ●●● ●● ●●●●●●●●

●●●●

●●●

●●●

●●●

●●●

●●● ●●●●●● ●●●●●● ●●● ●●●●●● ●●●●●● ●● ●●●●●● ●

● ●●

●●●● ●●● ●●●●●

●●●●●●● ●●●●●

●●●●●●● ●●●●●

●●

●●●● ●●●

●●

●● ●●●● ● ●●●

●●●

●●●

●●●●●● ●●●

●● ●●

●●

●●

●●●●●●●●●

●●●

●●●●● ●●●●● ●●● ●●

●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●

●●●

●● ●

●●●

●●●

●●●●●● ●● ●●●●

●●●●●

● ●

●●

●●

●●●

●●●

●●●●●●● ●●●●●● ●● ●●●●●● ●●●●●● ●●●● ●●●●● ●●●

●●●

●● ● ●●●●●●●●● ●●●●●●

●●

● ●●●●●●●●

●●●●●●

●●●●●● ●●●●●●

●●●

● ●●●●● ●

●●

●●● ●● ●●●●●

●●●

●●●

●●●

●●●●●●

●●●

●●●

●●●

●● ●

●●●

●●●

● ●●

●●

●●●●

●●● ●●●

●● ●

●●●

●●●●

● ●

●● ●

●●●

●●● ●●●●●●

●●●

●●●●●●● ●●●●●●●●

●●●

● ●●

●● ●

●●●●●●●●● ●●●●●●● ●●●●●● ●●●●● ●●●●●●●

●●

●●● ●●●

●●●● ●●● ●● ●

●●

●●

●●● ●●●●●●●● ● ●● ●

●●● ●●●

●●●

●●

●●●

●●●●●●

●●● ● ●● ●● ●

●● ●●●●

●●●●●●●●● ●●●●●● ●●●●●●●●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●

●●● ●●●●●●●●●

●●●●●●

●●●●●● ●●●

● ●●●●●●●●●●●●●● ●● ●

●●●

● ●●● ●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ● ●●●●●●●● ●●● ●●● ●● ●● ●●●●●●● ●●●●● ●●●● ●●●●●●●

●●

●●● ●●●

●●●

●●●

●●●●●●●●●●●●●●●

●●●

●●●●●●

●●●●● ● ●● ●● ●● ●●●● ●●

●●

●●●●●●●●●●●●●●

●●●

●●●

●●●●●

●●

●●●

●●● ●●●

●●●●●●

●●●

●● ●●● ●

● ●●● ●● ●● ●●●●●●●●● ●●●● ●●●●●●

●●● ●●●

●● ●

●●● ●● ●

●●● ●● ●

●●●

●●●●●●●●● ●●● ●●●●●● ●●●●●● ●●●● ●●●●●●●●●●●●●●●●●

● ●●●●●●

●●●●●●

●●●

●●●

●●●

●●● ●●●

● ●●●●●●●● ●●●●●●●●● ●●● ●●●●●● ●●● ●●●● ●●●●●●●● ●●●●●●●●●●●● ●●● ●● ●●● ●●●● ●●●●●● ●●● ●●●●●● ●●●●●●●●●●●●●●● ●●●●●●●●●●● ●● ●●

●●●

●●●●●● ●●●●

●●● ●●● ●●●●●●●●●

●●●

●●●●●●

●●●

●●● ●●●

●●●

●● ●

● ●●

●●●

●●●●●●●●●●●●●

●●

●●●●

●● ●

●●●●●● ●●● ●●●●●● ●●●

● ●●

●●●●●●● ●●●● ●●●●●●●●●●● ●●● ●●● ●●● ●●● ●●●●●

●●● ●●●●●●

●●●●● ●●●●●●●

●●●

●●●● ●● ●

●●●

●●●

●●●

●●●●●●●●●●●● ●●●●●●

●●●

● ●● ●●●●●●

●●●

●●●●● ●●●●●●●

●●●

●●●●● ●●●●●●●●●●

●●●●●●

●●●●●●

●●●

●● ●●●● ●● ●●●●● ●●●●●●●● ●●●

● ●●

●● ●●●● ●● ●●●●

● ●

●●● ●● ●●●●●●●●●● ●●

●● ●●●●

●● ●●●●●●● ●●● ●● ●

●●●

●●● ●●●●●●●●●●●●● ●●● ●●●●●●●●

●●●

●●●●●●

●●●

●●●

●●●

●●●●●●●●●●● ●●●●● ●●

● ●●

●●●●●● ●●●●●●

●●●

●●● ●● ●

●●●

●●●●●●●●● ●●●●●●

●●●

● ● ●●●●●● ●●● ●●● ●

● ●●

●●●●●●●●●●●● ●

● ●● ●●●●● ●●● ●●●● ●● ●●●●

●●●

●●●●●●

●●●

●●● ●●●●●●●●● ●●●●●● ●● ●● ●●●●● ●●●

●●●

●●●●●●●●●

●●●●

●●

● ●● ●●●●

●●●●●●●●●

●●●

●●●●●● ●●

●●●●

●● ● ●●●●●● ●●● ●●●

●●●

●●●

●●●

●●● ●●●● ●●●● ● ●●●●●●

●●●

● ●

●●●● ●●●●●●●●● ●●●●●●●●●

●●●

●●● ●● ●●●●●●●

● ●●

●●●●●●●●●

● ●●●●●

●●●

●●

●●

●●●

●● ●●●●●●● ●●● ●● ●

●●●

●●●

●●●

●●● ●● ●●●●

●●● ●●●

●● ●●●●●●● ●●●●●●●●●

●●●

● ●● ●●●●● ● ●●●

●●

● ●●● ●

●●● ●●●

●● ●

●● ●●●●●● ●

●●●●● ● ●●●

●●●

●●●●●●● ●●

●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●

●● ●● ●●

●●●

●●●

●●●

●●●

●●●● ●●●●●●●●●●●●●●●●●

●●●

●●●

●●●

●●●

●●●

●● ●

●●● ●●●

●●●● ●●●●●●●●● ●●●●● ●●● ●●● ●●●●●●●●●

●●●●●● ●●●

●●●● ●●●●●●●● ●●●

●●●

●●● ●●● ●●●●●●●●● ●●●● ●●●●●●●●

●●●

● ●● ●● ●●●

●●

●●

●●●● ●

●●●

●●●●●●●●●●●●●●● ●●● ●●●●●●●●●●●●●●●

● ●●●●●●

●●

●●

●●●

●●●●● ●●●●

●●●

●●●●●●

●●●

●●●● ●● ●●● ●● ●●●●

●●●

● ●●●●●● ●●●●● ●●●●●●●●●

●●●

●●● ●●●●●●

● ●●

●●●

● ●●

●●●

●●●

●●● ●● ●

●●●

●●●●

●●

●●

●●●●●● ●●●

●● ●●●●

●●●

●●●

● ●●●●●●●●

●●●

●●

● ●●●

●●●●●●

●●● ●●●●●●●●● ●●● ●● ●●● ●●●● ●●● ●●●

●●●

●●●

●●●

●●●●●● ●●●●● ●●●● ●●●●●●●●●

●●●

●●●●●●●

●●●●

●●●

●● ●

● ●●

●●●

●● ●●● ●●●●

●● ●

●●●

●● ●● ●●

●●● ●●●● ●●●●●●●●●●●●●● ●●●

●●●

● ●●● ●● ●● ●●●●

●●●

●● ●●●●●●●●●●●●● ●●● ●●●

●●

●●●

●●●●● ● ●●●

●●●

●●●●●● ●●●

●●●

●●● ●●●

●●●

●● ●●●● ●

●●

●●●● ●● ●●●

●●● ●●●

●●●

●●●●●●

●●●

●●● ●●●

●●●

●●● ●●●● ●●●●●●●● ●●●

●●●

● ●●

●●●

●●●

●●●

●●●●●● ●●● ●●●

●●●

● ●● ●●●●●●

●●●

●●● ●●●●●●●●●

●●●

●●●● ●●●●●

●● ●

●●●●● ●

● ●

●●●

●●● ●●●

● ● ●● ●●●●●●●●

●●●

●●●

●●●● ●● ●●●

●●●●●●●●●

● ●●●●●

●● ●

●●●●●● ●● ●●●●

●●●

●●●●●●●●●

●●●●●●

●● ● ●● ●●●●

●●● ●●●

●●●

●●● ●●●

●●●

●●● ●●●

●●● ●●●

●●●●●●● ●● ●●● ●●●

● ●●

●●●● ●● ●●●●●●

●●● ●●●

●●●●●●●●●

●●●

●●●

●●●

●●●●●●● ●● ● ●● ●●●

●●● ●● ●

●●●● ●● ●●● ●● ●

●● ●

●●●●●● ●●●●●●●●●●●●●●●

●●●

●●● ●● ●

●●●

● ●●●●●●●●●●●●●●●●●●● ●●●● ●● ●●●●●● ●●● ●●●● ●●●●●● ●● ●● ●●●● ● ●●●●●●

●●●

●●●●●●●●●

●●●●●●

●●● ●●●● ●●● ●●●●●●●●●●● ●●●●● ●●●●

●●●

●●●●●● ●●●●●●

●● ●

●●●●●●●●● ●●●

●●●

●●●

●●●

●● ●● ● ●●●●●●● ●●● ●●●●●●●●● ●●●●●●● ●●● ●●

●●●

●● ●● ●●●●●

●●●● ●● ●●●

●● ●●●●

●●●

●● ●●●●

●●●

●●● ●●●●●●

●●●

●●●●●● ●● ●● ●●● ●●● ●● ●● ●●●●

●●●

●●●

●●●

●●● ●●●●●●●●●●●●

●●●

●●

●●●●●●

●●●●●●

●●●

●● ●●●●●●●● ●●●●●●●●

●●

●●●●

● ●●●●●

●●●

●●● ●●● ●●●●●●● ●●

●●●

●●●●●●●●●●● ●●●●

●●●

●● ●● ●●

● ●●●●●●●●

●●●

●●●●●●

●●●● ●●●● ●●●●● ●●●●●● ●●●●●● ●●●●● ●●●● ●●●

●●●

●● ●

●●●

●●● ●●●●●● ●●●●●●

●●●● ●●

●●●●●●●●● ●●●●● ●● ●● ●●● ●●●●●● ●●● ●●●

●●●

●●● ●●●●●● ●●●●●●●●●

●●●

●●●●●●

● ●●

●●●●●●

●●●●●●

●●●●●●●● ●●●●●●●

●●●

●●● ● ●●●●●●●●●● ●

●●

●●●●●●●●●●● ●● ●●● ●

●●●

●●●● ●● ●●● ●●●● ●● ●●● ●●●●●●●●●

●●●

● ●● ●● ●●●●

●● ●●

●●

● ●●●●● ●●●●● ● ●●●

●●●

●●●●● ●●●●●●● ●●●●●●● ●●●●● ●●●●●●

●●●●

●●

● ●●●

●●●●●●

●●● ●●●●●●●●● ●●●●●● ●●●

●●●

●●● ●● ●●●●

●●

●●

●●●● ● ●●●● ●●●● ●●●●●●

●●●

●●●●●●

●●●

●● ●● ●●

●●●

●●●

●●●

●●● ●●●●●● ●●●

●●●

●●●● ●● ●●●●●● ●●●

●●●●●●

●●●●●●●●●●●●

●●●

● ●●● ●●

●●●●●●●

●●●

●●●

●●●●●●

●● ●●●●●●● ●●●●●●●●● ●●●● ●●●●●

●●●

●●●●●●● ●●

●●●

●●●●●●

● ●●● ●●

●●●

●●●

●●●●● ●●● ●

●●●

●●●●● ●●●●

●●●

●●●● ●●● ●● ●● ●●●●●●●

●● ●

●●● ●●●

●●● ●●●

● ●● ● ●●●● ●●● ●●●●●●● ●●●●●●●●●

●●●

●●●● ●● ●● ●● ●●●●● ●●●● ●●●●● ●●●●●●

●●●

●●●●●● ●●●●●● ● ●●● ●●●●●●●● ●●●

●●●

●●●●●●●●● ●● ●●● ● ●●●● ●●●●●

●●●

●●●●●●

●● ●

●●●●●●

●●●

●● ●●●● ●●●

●●●

●●●●●● ●●● ●●●●●●●●● ●● ●● ●●

●●●●● ●●●●

●●●

●● ●●●●

●●●●●●

●●● ●●●

●●●

●●●●●●

●● ●

●●● ●● ●● ●● ●

●●

●●●●●●●●● ●●● ●● ●● ●● ●

●●●

●●

●● ●●● ●●● ●●

●● ●

●●●●●● ●●● ●●●●●●

●●●

●●●●●● ●●●●● ●●●● ●● ●

●●●●●●

●●● ●●●

●●●

●●●●●●●●● ●●●●● ●●●● ●●●● ●● ●●●●●●

●●●

●● ●

●●●● ●●● ●● ● ●●●● ●●●●

●●●

●●●

●●●●●●

●●●

●●● ●●●

●●●

●●●●●●

●●●

●●●

●●●●●● ●●●●●●●●●●●● ●●●

●●●

●●●●●●● ●●●●●

●●●

● ●●●● ●●●● ●●●●● ●●●● ●●●●●●●●●

●●●

● ●●

●●●●● ●●●●●●●●●●

●●●●●●

● ●●●●● ●●●● ●●●●● ●

●●

● ●●●●● ●●

●●

●●

● ●●●● ● ●●●●●●●● ●●●● ● ●●● ●●●●● ●● ●●●●

●●●

● ●●●● ●●●●

●●●

●●●

●●●●●●●●●●●● ●●●

●●

●●

●●●

●●●●●●●●●

●●●

●●●●●●

●●●

●●●

●●●

●●●●●●

●●●

●●● ●●●●●●

●●● ●

●●

●●●●●●●●●

●●●

●● ●● ●●●●●●●●●●● ●●●●●●

●●● ●● ●

●●●●● ●●●●●●●●●●●●● ●●● ●● ●●●●

●●●

●● ●● ●●●●●●●●

●●●

●●●●●●●●●

●● ●

●●●●●●●●●●●● ●●●

●●●

●●●● ●● ●● ●●●●

●●●

●● ●●● ● ●●●●●●●●● ●●●

●●● ●

●●

●●

●●●

●● ●

●●● ●●●

●●●●●●

●●●

●●● ●● ●●●●

●●●

●●● ●●●● ●● ●●●●●●●●● ●●● ●●●

●●

●●●

● ●● ●● ●

● ●●

●●●●●● ●●●●●●●●● ●●●●●●●●● ●●● ●●●

●●●

●●●●●●●●●

●●●

●●● ●● ●●

●●

●●●●●●●

●●● ●●●

●●●

●●● ●●● ●●●

●●●

●● ●

●●●

●●●

●●

●●●● ●●●● ●●●●●●●●●

● ●●●●●

●●

● ●●●●●●

●●●

●●●

●●●

●● ●●●●●●● ●●●

●●●

●●● ●● ●●● ●●●●

●●●

●●●●●● ●●●●● ●

●●●

●●●

●●●

●●●●● ●●●●●●● ●●●● ●●●● ●●● ●

●●●

●●● ●●●

●●●

●●●●●●● ● ●● ●● ●● ●●●●

● ●●

●●●●●● ●●● ●●●●●● ●●● ●●●

●●●

●● ●

●●●

●●●●●● ●●●●

● ●

● ●●●●●● ●●●●● ●●●●

●● ●

●●●●●●●●●●●●●●● ●●●●●●●●● ●●● ●●●● ●●●●●●●●●●●●● ●●● ●●●●

●●●

●●●

●● ● ●●●

●●●

●●●●●●● ●● ●●●

●●●

●●●

●●● ●●●

●●●

●●●●●●

●●

●●●

●●●

●●●●●● ● ●●

●●●

●●● ●●●

●●●

● ●●●●● ●●●● ●●●●● ●●●●●●●●● ●● ●●●● ●●●●●●●●● ●●●●●●●●●

●●●

●●● ●●●●●●●●●●●● ●●●●●● ●●●●●●

●●●

●●●●●●●●●

●●●

●●●● ●●● ●● ●●● ●●● ●

●●

● ●

●●●

●●● ●● ●●●● ●●●

●● ●●●●

●● ●●●●● ●●●●● ●●●●●●

●●●

●●

●●

● ●●

●●●

●●●● ●●

●●●●●●

●●●

● ●●

●●●

●●●

●●●

●●●

●●

●●

●●

●●

●● ● ●●● ●●●●●● ●●●●●●

●●● ●●●

●●●

●●●●

●●●

● ●● ●●●

●●●

●●● ●●●●●●●●● ●●●●● ●●●● ●●●●●●●●● ●●●●●●●●●

●● ●

●● ●●● ●●● ●●●●

●●● ●●●●●●

●●●●●●

●●●

●●● ●● ●

●●● ●●●●●●

●●● ●●●●●●● ●● ●●● ●●●●●●

●●●

●●● ●●●

●●●●● ●

●●●

●●●

●● ●●●●

●●●

●●● ●●●

●●●●●●

●●●

●●●

●●●●

●●

●●●●● ●● ●●●●●●●● ●

●●

●● ●●● ●●●●●● ●●●●●●●●●●●● ●●●●●● ●●●

●●●●●● ●●●●●●●

● ●●

●●●

●● ●●●●

●●● ●●● ●●●

●●●

● ●● ●●●●●●● ●●

●● ●

● ●●●●●

●●●

●●●●●●●

●●

● ●●● ●● ●●● ●●●●●●● ●●● ●●●●●●

●●●

●● ●● ●● ●●●

●●●●●●

●●●●●● ●●●●●●●● ●●●●

●●● ●●● ●●●●●● ●●●

●●●

●●●

●●●

●●●●● ●

●●●

●●●●●●

●●●●

●● ●●●●●●●●●● ●●●●

●●

● ●

●●● ●● ●●●●

●●● ●●●

●●●●●●●●●

●●● ●●●●●●

●● ●●●● ●●●●●● ●●●

●●●

●●● ● ●●●● ●●● ● ●●●

●●●

●● ● ●● ●●●●●●● ● ●●

●●●

●●

●●●

●●● ●●●●●● ●● ●●● ●●●● ● ●●

●●●●

●●

●●●

● ●● ●●●

●●● ●●●● ●●●● ●●●●

●●●●●●

●●●

●●●

●●●●●● ●●●●●●●●●●●●

●●●● ●●● ●●●

●●●

●●●

●●● ●● ●●●● ● ●●

●●●

●● ●●●● ●● ●●

●●● ●●●

●●●●●●●●●

●●

●●●●

●●●

●●● ● ●●●●● ●●●●●● ●●● ●●●● ●●●●● ●●●●●●●●●

●●●

●●●

● ●●

●●● ●● ●●● ●

●●●

●●●●

●●

●● ●●

●●●

●●●

●●●●●●

●● ●● ●● ●●●●●●●●●●●●●●●●●●●●●●●

●●

● ●●●

● ●●

●●●●●●

●●●

●●●

●●●

●●●●●● ●●●

●●●

●●●●●●●● ●

●●●

●●●●●● ●●●●

●●●

●●

●●●

● ●●●●●●●●●●● ●●●

●●●

●●●

●●●

●●● ●●●

●●●

●●●●●●

●●●

●●●●●●●●● ●● ●●● ● ●●● ●●●●●●

●●●

● ●●●●● ●●● ●● ●●

●●

●●

●● ●●●●

●●●

●● ●

● ●●

●●●●●●●●●●●●

●● ●

●●● ●●● ●● ●

●●●

●●● ●●●●●●●●●●●● ●●●

● ●●●

●●●

● ●●●●●

●●●

●●●●●●●●● ●●●●●●●●●●●● ●●●● ●●● ●●● ●●

● ●●

●● ●

●● ●

●●● ●● ●

●●●●●●

●●●● ●●

●●●● ●●●● ●●●●●

●●●

●● ● ●●●

●●●

●●●

● ●

●●●●

●●●

●● ●

●●●●●●

●● ●●● ●●●●●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●●●● ●●●● ●●

●●

● ●●●●●●●●●●●●●●

●●●

●●●● ●● ●● ●●●●●●●

●●●●●●

●●● ●●●●●● ●

●● ●●●●● ●●●● ●●●●● ●●●●● ●●●●●● ●●●●

●●●●●●●●●●●●

●●●

●● ●● ●●● ●● ●●●●●●●● ●

●●●

● ●●● ●●

● ●●

●●●

●●●

●●● ●●●●●●

●●●

●●●

●●●●●●● ●●●●●● ●●●●●● ●●● ●●●●● ●

●●●●●●

●●●

●●●●●●

●●●●●● ● ●● ●● ●●●● ●●●

●●●

●● ●●●●●●●

●● ●●

●●

●●●●●

●●●

● ●●

●●●●●●

●●●●●●●● ●

●●●

●●●

●● ●

●●●●●● ●●●

●● ●●

●●●●

●●●

●● ●● ●●

●●●●●●

●● ●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●● ●●● ●●●●●●●●●●●● ●●●

●●●● ●●

●● ●

●●●

●●

●●●●●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●●

●●●

●●● ●●●

●● ●

●● ●●●● ●●●●●● ●●● ●●● ●●●● ●● ●●● ●●●●●●●●●●●● ●●●●●●

●●●

●●●● ●● ●●●●●● ●●●●●●

●●● ●

●●●

●●● ●●●●●● ●●●●●●● ● ● ●●●● ●●● ●●●●●●●●

●●●

●●●

●●●

●●● ●●●●●●●● ●●●●

● ●

●●●

● ●

●●●

● ●● ●●●

●●●

●●●

●●●

●●● ●● ●

●●●

●●●●●●

●●●●●●

●●● ●

●●● ●●●●●●

●●●

●●●●●● ●●●●●●●●●● ●●●●●●●●●●●●●●●●● ●●●

●●●

●●●

●●●

● ●●●●●●●● ●●●●●●● ●●●●●

●●●

●●● ●●●●●● ● ●●●●●●●●●●● ●●●●●●●●● ●●●

● ●● ●●●

●●●●●●

●●●

●●●●●●● ●●● ●● ●●● ●●●

● ●●

●●●●● ●●●●

●● ●● ●●

●●● ●●●●●● ●●●

●●●

●● ●

●●●● ●●●●● ●●●●

●●●

●●●

● ●●

●●

●●●●

●●● ●●●● ●●● ●● ●●

●●●

●●

●●●●●●

●●

●● ●●●

● ●●

●●●● ● ●●●● ●● ● ●●●●●●●●●●●● ●●●

●●●

●● ●

●●●●●●

●● ● ●●●● ●●● ●● ●●●●●●● ●● ●● ●●●● ●●●

●●●

●●●●●●●●● ●●●●●●●● ●●●● ●●●●●● ●

●●

●●●● ●●●

●● ●●●●●●●

● ●● ●●● ●●●●●●

●●●

● ●●

●●

●●●●●● ●●●

●● ●●●●

●●●

●●● ●●●●●●●●●

● ●●●●● ●●●●●●●●● ●●●

●● ●●●● ●●●●●● ●●●

●● ●● ●● ●● ●

●●●●●●

●●● ●●●●●● ●●● ●●●●● ●●● ●●●●

●●●

●●●● ●●●● ●

●●●

●●●●●●

● ●●

●●●

● ●● ●●●

●●●

●●●

●●●●●● ●●●

●●●

●● ● ●●●●●●

●●●

●●

●●

●●●●●●

●●●

●●●

●● ●●●●

●●●

●●●●●●

●●●

●●●

●●●●●●● ●● ●●●●

●● ●

● ●● ●●●

●●●● ●●●●●

●●●

●●●●●●

●●●

●●● ●●●● ●●

●●●●●●

●● ●●●●

●●●

●●

●●●

●●●

●●●

●●●

●●●

●●●●●●● ●● ●●●●●●●●●●●●

●●●

●●●

●●● ●●●● ●●●●

●●

● ●

●●●●●●

●●●

●● ●●●●● ●●● ●●●● ●●●●

●● ●

●●●

●●●●●●● ●● ●●●●●●●●● ●● ●● ●● ●● ●● ●●●●● ●●● ●● ●●● ●●●●●

●●

●●●●●

●●●

●● ●●●●●●●● ●●●●●●●● ●●● ●●●

●●●

●●●●●●

●●●

●●●●● ●

● ●● ●●●

●●● ●●●●●● ●●●

●● ●

●●●●●● ●●●

●●●

●●● ●●●●●● ●● ●● ●● ●●●●● ●●● ●● ●● ●●●●●● ●●● ●●●●●● ●●●●●●●●●●●● ●●●●●● ●●●

●●●

●● ●●●●●●●● ●●●● ●●●● ●●●

●●●

●●● ●●

●●

●●●●●●

● ●●●●● ●●● ●●●

●●●

●●●●●● ●●●

●●

●●● ●●●●●●

●●●

● ●●●●●

●●●

●●● ●●●● ●●

●●● ●●●●●●

● ●●●●●● ●●● ●●● ●●●●●● ●● ●●●●●●●●●●●● ●●●●●●●●●●●●●●● ●● ●●●● ●●●●●●●●●●●●

●●●●● ●●●●

●●●

●●●

●●● ●●●

●●●● ●●

●●●●●●

●●●

●●●

●●●

●●● ●●●●●●●●● ●●● ●● ●● ●●

●● ●

●●●

●●●

●●●●●●●

●●● ●

●●●

● ●● ●●●●●● ●●●

● ●●●●●●

●●●

●●●●● ●●●●● ●●

●●●

●●● ●●●●●● ●●●●● ●

●●●

●●● ●●●●●● ●

●●● ●● ●● ● ●●●●

●●● ●● ●

●● ●●●●

●●●●●●●

●●

● ●●●●●●●

●●●

●●●● ●● ●● ●●●●●●●●●●

●●●

●●●

●●●

● ●● ●●●

●●●

●●●

●●●

● ●●

●●●●●●●●●●●●●●● ●●●

●●●

●●●

●●

●●●

●●●

●● ●●●● ●●● ●●●

●●●

●● ●●●●●●●

●●●

●●●●●●●●●●●●●●●●●● ●●●

●●●

●● ●

●●●

● ●●●●● ●●●●●● ●●●●●●●●●●● ●●●●●●●●●●

●●●

●●● ●●●

●●●

●●●

● ●

●● ●

●●●● ●● ●●● ●

●●●

●●●●●●●● ●●●● ●●●●●●

●●●

●●●

●● ●

●●● ●●● ●●●●● ●

●●●

● ●●●●●●●● ●●● ●●●●●● ●●●●●●●●●

●●● ●●●

●●●●●●

● ●●

●●● ●●●● ●●●●● ●●●●●● ●●● ●●●

●●

●●

● ●●●●●●

●●●

●● ●●●● ●

●●

●● ●● ●●●●●●●●● ●●●

●●●

●●● ●●●●●●●●●●●●●●●

●●●

●● ●

●●● ●●●

●●●●●●●●● ●●●●●●●●●●●● ●●●●●●

● ●●

●●●●●●●●●

●● ●

● ●● ●●●

●●● ●●●

●●●

● ●●●●● ●●●●● ●●● ●● ●● ●● ●

●●●

●●

●●

● ●●●●●●● ●●●●● ●●●● ●● ●●● ●●●●●● ●●●

●●● ●●●

●●●●●●●●●●●● ●●●●●●

●●

●●●●●●●●●●●●●●●●●●●

●●

●●

●● ●● ●●●●●● ●●●●●● ●●●● ●●●●● ●●●●●●●●●

●●●

● ●● ●●●●●● ●● ●

●●●

●●●

●●●

●●●

●●●

● ●● ●● ●●● ●●●●

●●●

●●●

●●●

●●●●

●●●

●●●● ●● ●●●

●●●

●● ●●●●

●●●

● ●● ●● ●● ●●●● ●●●●

●●●

●●●

●●●

●●●●●● ●●● ●●●

●● ●

●● ●

●●●

●● ●●●●

●●●

●● ●● ●●

●●●

●●●●●● ●●● ●●●

●●●●●● ●●●

● ●● ●●●●

●●

●● ●●

●●●

●●●

● ●●

●●●

●●●

●●●●● ● ●●●●

●●

●●

● ●●

● ●●

●●●

●●●

●●● ●●●●● ●

● ●●

●● ●●●●

●● ●●●●

●●

●●●

●●●●●●●●●●●●● ●●●●●

●●●

●●● ● ●●●●●

●●●

●●●

●●● ●●●

● ●●●●●● ●●●●● ●●●●● ●●●● ●●● ●● ●●● ●● ●● ●●●

●●●

●●●● ●●

●●●

●●●●●●● ●●●●●

●●●

●●●●●● ●●●●●● ●●●●●●●●● ●●●● ●● ●●●

●●●

●●● ●●●●● ●

●●●

●●

●● ●●

●●●

●●● ●●●

●●●●●●●●●●●●

●●● ●●●

● ●●●● ●●●●●● ●●●●● ●●●●●

●●●

●● ●●●● ●● ●● ●●●●●●●●

●●●

●● ●●● ●● ●● ● ●●●●●

●●●● ●●

●●● ●●●● ●●●●●●●● ●●●●●●

●●●

●●●●●● ●

●●

● ●●●●●●●●●● ●● ●●●●●● ●●●●●●● ●● ●●●● ●●

●●●

●●● ●●●●●●

●●●

●●●●●●

●●●

●●●●●●●●●

●●●

●●●●●●

●●●

● ●●●●●●●● ●●●

●●●

●●●

●●●

●●●●●●●●●● ●● ●● ●●●●●●●●●●● ●●

●● ●●●●

●●●●●●

●●●

●●●●●●●● ●●●●

●●●

●●●●●●

●●●

● ●● ●●●●●● ●●●

●●●

●●● ●●●●●●

●●●●●●

● ●● ●●● ●●●● ● ●

●●●

●● ●●● ●● ●●

●●● ●●●●●●●●●

● ●●

●●●●●●●●● ●●●●●●●●●●●● ●●● ●●●●●● ●● ●●●●●●● ●● ●

● ●●

●●●●● ●● ●●●●●●● ●●●●

● ●●●●●

●●●●●●●●●●●●●●●

●●

●●

●●●

●●●●

●●● ●●●● ●●● ●● ● ●●

● ●●

●●●●● ●

●●

●●

●● ●

●●●

●●●

●●●

●●● ●●●

●●●●●●●●● ●●●

●●

● ●●●●●●●●●●●●

●●●

●●● ●●●●● ●

●●●

●●●●●●● ●

●● ●

● ●

●●● ●●●● ●●●●●●

●●●

●●●

● ●●

● ●●●●● ●●●

● ●●

●●●●●● ●●●● ●● ●●●

●●

●● ●●● ●●●

● ●●

● ●● ●●●● ●●●●●●●●●● ● ●●●

●●●

●● ●●●●● ●●●●●

●●●

●●●●●● ●●●●●●●●●

●●●

●●●

●●●●●●

●●●

●●●●●●

●●●●●●

●●●●●●

●●●●●●● ●●

●●●

●●●

●●●

●●●

●●● ●● ●● ●●●●●●●●

●●●

●● ●●●● ●● ●●●● ●●●

● ●●

●●● ●●● ●● ●●●● ●●●●●● ●●● ●● ●●● ● ●●●●●●●●●● ● ●● ●●●●● ●●●●● ●●●●●●●●●● ●●●●●● ●●●●●●

●●●

●●●●●● ●● ●

●●●● ●●

●●●

●●●● ●●●●●●● ●●●●● ●● ●

●●●

●●● ●● ●

●●● ●●● ●●●

●●●●●●●●● ●●●●●●

●●●

●●● ●●●● ●● ●● ●●●●●●●●●● ●●●●●●●●● ●●●●●●●●● ●●●

●●●●●●

●●● ●●●●

●●●

●●●

●●● ●●●

●●●

●●●

● ●●

●●●

●●

●●● ●●●

● ●●

●●●

●●●●●●

●●●●●● ●

●●

● ●●●●●● ●● ●

●●●

●●●●●●●●●●●● ●● ●● ●● ●● ●●●●●●●●●● ●●●●● ● ●●●● ●●● ●●●●●● ●●●●●●●●●●● ●●● ●

●●

●● ●●●●●

●●●

●●●

●●●

●●●

●●●

●●●●● ●

● ●●●●● ●●●●● ● ●●●● ●●● ●● ●●●●●●

●●●

●●●

●●●

●●●●●●

●●●

● ●●●● ●●●●●●●●●● ●●●

● ●●

●●●●●●

●●●

●●●

●●●●●● ●●●

●●●

●●●● ●● ●●●●●●● ●●●●●● ●●●●● ●●●●●●●●● ●●●●●●

●●●

●●●

●●●●●●●●●● ●●●●●●●●●●●●●●●● ●●●●

●●●

● ●●●●●●●●

●● ●

●●●

● ●●●●●●●●●●● ●●●●●●●●●

●●●

●●● ●● ● ●

● ●

● ●●●

●●

●● ●●●●● ●●●●●●●●

●●●

● ●● ●● ●●●●

●●●

●●

●●

●●●

●●●

●●●●●●● ●●●●● ●●●●●●●●●

●●●

●●●● ● ●●●● ●

●●

● ●●●●●● ●●● ●●● ●●●●●●

●●●● ●●

●●● ●●●●●● ●●●

●●●

●●● ●●●●● ●●●●●●●●●●

●●●

●●● ●●●●●● ●● ●

●●●●●●

●●●

● ●●

●●●●●●

●●●

● ●● ●●●

●●●

● ●●● ●●●●●●●● ●● ●● ●●

●●●

●●●

●●●

●●●

●●● ●●●●●●

●●

●●●● ●● ●●●●●●●●●●●●● ●●●●●●●●●● ●●●●●●

●●

●●●●●●●

●●●● ●●

●●●

●●● ●●●

●●

●●●●●●●●

●●●

●●● ●●●●●● ●● ●●●● ●●●●●●●●●● ●● ●● ●

●●●

●●●●●● ●●●●●●●●●

●●●

●●●

●●

●●●●

●●●●●●●●●● ●●●●●●●●●●● ●●●

●●●● ●●

●●

●●●

●●●●●●●●●●●●● ●●● ●●●●●●

●● ●●● ● ●●●●●●●●● ●●●

●●●

●●● ●●●

●●●

● ●●

●●●

●●●●●●●● ●●●● ●●●●● ●●● ●●●● ●●● ●

●●

●●

●●

●●

●●●●●●

● ●

●●

●● ●● ●●● ●●●

●●●

●●●●●●●● ● ● ●●● ●●●●●●●●

●●●

●●● ●●● ●●●

●●●

●●●● ●●

●●●● ●●

●●● ●●●●●● ●●●●●●●●● ●●●●●● ●●●●●●●●●●●● ●●●

●●

●●●●● ●●●

●●●

●●●●●●

●●●●●● ●●●

●●● ●●●●●●●●●●●● ●●●●●● ●●●●●●

●●●●●●●●●●●●

●●●●●●●

●●

●●

●●●●●● ●●●●● ●

●●● ●● ● ●●●●●● ●●●●●●●●● ●● ●●● ●

●●●● ●●

●●●● ●● ●●●

●●●

●●●● ●●●●● ●●●●●● ●● ● ●● ●●●● ●●●●●●

●●●

●●●●●● ●●●

●●

●●●●●● ●●●●●●●●●● ●●●●●●●● ●●●●● ●●●●

●●●

● ●● ●●●● ●● ●●●●●●●●●

●●●●●● ●●●

●●●

●●

●●

●●●● ●●● ●

● ●

● ●

●●●●●●●●● ●● ●●●●● ●●●●● ●● ●

●●●

●●●●● ●

●●●

●●● ●●●

●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●●●●●●● ●●●●●●●●●●●●● ●●

●●● ●● ●●●●●●●●●● ●●●●●● ●

●●

● ●

●●●

●●●

●● ●

●●●

●●●●●● ●●●●●●●●●●

●●●●

● ●● ●●● ●●●●●●

●●● ●●●●●●

●●●● ●●

●●●

●●●●●●

●●●

●●●●●●●●● ●●●●●●●●●●●●

●●●

●●●●●● ●●● ● ●●●●●

●●●

●●●●●● ●●●● ●●●●●●● ●●●● ●●● ●●●●●●●●●

●●●

●●●●●● ●●● ●●●● ●●●●●●●●●●●●●●●●●● ●●

●●●

●●● ●●●●●●

●●●

●●●●●●●●●●●●●●● ●●●●● ● ●●●

●●●

●● ● ●

●●

● ●●

●●● ●●●

●●●

●●● ● ●●● ●●●●●

●●●●●●

●●●●●● ● ●● ●● ●

● ●●

●●● ●●●●●●●

● ●

●●●

●● ●●●● ●●●●● ●●●●●●●●●● ●● ●●●●

● ●●

●●●

●●●

● ●●● ●● ●●●

● ●●●●●

● ●● ●●●

●●●●●●

●●●●●●

●●●

●●●●●● ●●● ●●●●●● ●●●

●● ●

● ●●● ●● ●●●●●●●●● ●●●

●●● ●●●

●●●

●●●●●●

●●●

●●●

●●●● ●●

●●●

●● ●

●●●

●●● ●●●●●●●●● ●●●

●●● ●● ●

● ●●●●●● ●●●●●

●●●

●●●

● ●● ●●● ●●●

● ●●●●● ●●●●●●●●● ●●●● ●● ●●● ●●●

●●●

●●●●●● ●●● ●●●

● ●●●●●

●● ●●●●

●●●

●●● ●●●

●●●

●●●

●●●

●● ●●● ●●●●●●●●●● ●●●

●●●

● ●●●●●●●●●●● ●●●

●●●

● ●● ●● ●

●●●

●● ●

●●●

●● ●● ●●

●●●

●●●

●●● ●●●

●●●●●●●●●●●●● ●●●●●●●● ●●●

●●●

● ●●

●●●

●●●●●●●●●●●●●●● ●

●●

●●●

●●●

●●●● ●●

●●●●● ●

● ●●●●●

●●●●●●

●●● ●●●

● ●●●

●●

● ●●●●

●●● ●●●●●●●●●

●●● ●●●●●●●●●● ●●● ●● ●

●●●●●● ●●●

●●● ●

●●●

●●

●●●●●● ●●●

●●●●●●

●●

● ●●●●

●●

● ●●●● ●●● ●●●●●●●● ●●●

●● ● ●●●●●●

●●●●●● ●●●

●●●

● ●●● ●●

●●● ●●●

●●●●●●●●●● ●● ●● ●●●● ●●●●●●

●●●

●●●●●● ●●●●●●●●●● ●●●●●

●●● ●● ●●●●

●●

●●

●●●●● ●

●●● ●●●

●●● ●● ●●●●●●●● ●●●●●

●●●

●●●● ●●●●● ●●●●● ●

●●●

●●●●●●

●●●

● ●●● ●●●●● ●● ●●●●●●● ● ●● ●●●●

● ● ●● ●●●●● ●●●●●●●●●

●● ●

●● ●●●●●●●●●●●● ●●●●●●●●●● ●●●●●●●●●●●●●●●●●●● ●●●●●

●●●

● ●●●●●●●● ●●●●●● ●●●●●●●●●

●●●● ●●● ●

● ●●●●● ●●●●●●●●● ●●●●●● ●●●●●●●●●

●●●●●●

●●●

●●●

●● ●●●●●●●●●● ●●●●●● ●● ●●● ●

● ●●● ●●

● ●●●● ●● ●● ●●● ●●●●●●

●●●

●●● ●●●●●●●●●

●●●●● ●●

●●●

●●●●●●●●● ●●●● ●●● ●● ●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●

●●●

●●● ●●●●●●●●● ●●●●●● ●● ●●●●●●●

●●●

● ●●●●●

●●

● ●

●● ●●●●● ●●●●●●● ●●● ● ●●● ●●●●●●● ●

●●● ●●●

●●●

●●●

●● ●

●●●

●●●

●●●

●●●

●●●● ●● ●● ●● ●●●●●●●● ●●●

●●●

●●●● ●●●●●

●●●

●●● ●●●●●●

●●●

●●●

●●●

●●●

●●●

●●● ● ●●

● ●●

●●● ●●●

●●●

●●●

●●●

●●● ●●●

●● ●

●●●●●●●●●

●●●

●●● ●● ●● ● ●

●●●

●● ●●●●●●●●●● ●●●●●● ●●●●●

●●●

●●●●●●● ●●● ●●●●● ●● ●●●●●●● ●●●

●●●

●●●●●●●●●

●● ●●●●

● ●●●●●● ●●●●●● ●●●●●●●● ●●●●●●

●●●

●●●

●●● ●●●

●●● ●●●● ●●

●●●

●● ●●●● ●●●

●●

●●

●●●

●●●

●●●

●● ●●●●

●● ●●●● ●●●● ●● ●●●●●● ●●● ●●●

● ●

●● ●●

●●●●●● ●●●●● ●

● ●● ● ●●●●●●●●●●●

● ●●

●●●

●●●●●●

●●

●●●

●●●●●●●●●

●●●

●● ● ●●●●● ●● ●● ●●●●●● ●●●

●●●

●●●

●●●

●●●●●● ●

●●●●●● ●●●●●●

●●●

●●● ●●●

●●

●● ●●● ●●●●●●● ●●

●●●

●●●

●●●

●●● ●● ●● ●●

●●●

●●●●●●●●● ●●●

●●●

●●●

●●●●● ●●●●● ●● ●● ●●●● ●●●●●●●●● ●

●●

●●●

●●

● ●●●● ●

● ●● ●●●

●●● ●●●●●● ●●●●●●

●●●● ●●●●●●●●●●●●●●●●●●

●●●

●●●●●●●●●●● ●

●●●

●●● ●●●

● ●●●●●●●●

●●●●●●●●● ●●●●● ●●●● ●●● ●●●●●●

●●●

●●●

●●

●●● ●●●●●●

● ●●

●●●

●●●

●●●

●●●

●●●

●●●

●● ●

●●●

●●●●

●●●

●●● ●●●●●● ●●●

●●●●

●●

●●●

●● ●

●●●●●● ●● ●●●● ●

●●

● ●● ●

●●●

●●●●●●●●●●●●●●● ●●●●● ●●●● ●●●●●●

●●●●●●●●●

● ●●● ●● ●● ●●●●●●●

● ●

● ●●●

● ●●●●●●●●● ● ● ●●● ● ●●● ●●●●●●● ●● ●●

●●●

●●●

●●●

●●●● ●●● ●● ●●● ●●●

●●●●●●

●●● ●●● ●●● ●●●●●●●●● ●●●●●●● ●●●●●●● ●●● ●●●● ●●●

●●

●●●●●●● ●●

●● ●

●●●● ●●● ●●

●●●

●● ●●●●●●● ●●●●●●

●●●

●●● ●●● ● ●●●●●●●● ● ●●●●●●●● ●●●●●●●●●

●●●

●●● ●●●●● ●● ●●●●●●●●●●● ●●●●●●● ●● ●

●●●

●●●

●●●●●●●●●●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●●●●●●●●●●●●●●●●

●●●

●●

● ●●●●

●●●

●●●● ●●

●●●

●●● ●●●●●●●●●●●●

● ●●●●●

●●●

●●●

●●●

●●●●●●●

●●

●●

●●●● ●●●● ●●● ●● ●●●

●● ●

●●●

●●●●●● ●● ●●●●

●●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●●●●● ●●●● ●●● ●●●●● ●●● ●●●●●●● ●●●●●●●●

●●●

●●● ●●●

●●

●● ●●● ●●● ●●●●●●●●●●●● ●●●●● ●●●●●●● ●●●●●● ●● ●●●●

●●●

●●●

● ●●

● ●

● ●●●●●●●

●●

● ●●●●●●

●●●

●●●●●●●●● ●●●● ●●●●●●●●

●●●

●●●●●● ●

●●

●●●●

●●●● ●●

●●●●●●

●●●

●● ● ●●●●● ●●●●

●●●

●●●●●● ●●●

●●●

●●●

●●●

●● ●

●●●

●●●●●●●●●

●●●●●●

●●● ●●●

●●●

●●●

●●● ●●●

●●●●●● ●●●● ●● ●● ●●●●●● ●●●●●●● ●●●●●●●●●●●● ●● ●

●●●

●●●

●● ●

●● ●●●● ●●●●●● ●●●●●●

●●●

● ●●●●●

●●●

●●● ●● ●● ●●●●●●●●

● ●

●●●●●●● ●●●●●●●● ●●●●●●●●● ●●●●●●● ●●● ●●

●●●

●●● ●●●●●● ●●●●●● ●●●●●●●●●

●●●

●●●● ●●●●● ●●●●●●●●●

●●●

●●●●●● ●● ●● ●● ●● ●●●●●●● ●●●●●●●●● ●● ●● ●●● ●● ●

●● ●●●●●● ●●●●●●●●●●●●●

● ●●

●● ●

●●●

●● ●●●●● ●●●

●●●

● ●●

●●

●●●●● ●● ●●● ●●●

●●●

●●●●●● ●●●●●●●● ●●●●

●●●

●●● ●● ●●●●

●●●●●●●●●●●● ●●●●●●●●●

●●●

●●●●●● ●●● ●●●

● ●● ●●●

●●●●●● ●●●●●● ●●●●● ● ●●●●●●●●●

●●●

●● ● ●●● ●● ●

●●●

●●●

●●●

●●●●●● ●●●●●●

●●●

●●●●●● ●●●

●●

●●

● ●●

●●●

●●●

●●●● ●●● ●●●●● ●●●

● ●●●●●● ●●●●●●●●●

●●●●●● ●

●●

●●

●●●

●●●●

●●

●●●●●

●●●●●●

●●●●●●

●● ●

●●● ●●●●●●●●●

●●●

●●●●●●

● ●● ●●●●●●

●●● ●● ●●●●

●●● ●●●

●●● ●●●

●●●

●●●●●● ●●●●●● ●●●● ●● ●● ●●

●●

●●●

●●●

●●●

●●●●●●

●●●●

●●

●●

●●●●●●

●● ●●●●●●●● ●●●●●

●●●

● ●●●●● ●●●

●● ●

●● ●● ●● ●●● ●●● ●●●●●●

●●●●●●

●● ●

●●●

● ●●

●●●

●●●●●● ●●● ●●●●●●● ●●

●●●

●●●●●● ●●●●● ●●●●● ●●●●●

● ●●●●●

●●●●●● ●●●● ●● ●● ●

●●●

● ●●

●●●

●●●

●●●

●●●

● ●● ●●●●●●●●●

●● ●

●●● ●●● ●●● ●●●

●●●

●●● ●●●●●●

●●● ●

●●

●● ●●● ●●●●●● ●●● ●●●

●●●

●●● ●●● ●●●●●●

●●●

●● ●●●●

●●●●●●

●●●

●●●

●●●

●●● ●●●●●●

●●●

●●●

●●●

●●●

● ●●●● ●

●●●

●●● ●● ● ●●●●● ●●●●

●●●

●●●●●●

● ●

●●

●●●

●●

●● ●●●● ●●●

●●●

●●●

●●● ●● ●

● ●●

●●●●●●

●●●

●●●● ●● ●●●●● ●●●●● ●●

●●●

● ●●●● ●●●●●●●

●●●●●●

●●●●●● ●● ●●●●●●●●● ● ●●●

●●●

●●●●●● ●●●●● ●●●● ●●●

●●●

●● ●●●● ●●●

●●●

●● ●● ●●

●●●

●●●●●●

●● ●● ●●●

●●●

●●●

● ●●

●●●

●● ●● ●●

●●●●● ●●●●● ●●●●● ●●●

●●●

● ●●● ●●

●●●

●●● ●● ● ●●●●●●● ●●●●● ●●●●●●●●●

●●●

●●● ●●● ●●●●●● ●● ● ●●●●●● ●● ●

●●●

●●● ●●●●●●

● ●●

●●

●●●

●●●

●● ●●● ●●● ●●●●●●●●●● ●●● ●● ●●●●●●●●● ● ●● ●

●●●

●●●●●●●●● ●●●●●●●●●●●● ●●●

●●●

●●

● ●● ●

●●●

●●●

●●●

●●●●●●●●●

●●●

●●● ●●●● ●●●●●●● ●

●●●

●●●

●●●

●●●●● ●●●●●●● ●● ●●●●

●●●●●●●●●

●●● ●●● ●●●●● ●

●●●

●●●● ●●●●● ●●●●●●

●●

●●●●

●●●

●●●

●●● ●●●

● ●●

●●● ●●●●●●●●●

●● ●●●● ●●● ●●● ●●●● ●●

●● ●

● ●

●●●●●● ●

●●●●

●●

●●●●●

● ●●● ●● ●

●●

●●

●●● ●● ●

●●●

●●● ●●●●●●●●●● ●●

●● ●

● ●●●● ●●●● ●●●●●● ●●●●●●●●●●●●●●● ●●●●●●●●● ●●●●●●●●● ●●● ●●●●●●

●●●

●●● ●●●

●●●● ●●●●● ●● ●●●● ●●●

●●●

●●●●●●●●●●

●●

● ●● ●●●●●● ●

●●●

● ●● ● ●●●●●

●●●

●●●●●● ●●● ●● ●●●●

●● ●●●●

●● ●●●●●●● ●●●

●●●

●●●

●●●

● ●●●●●●●● ●●●

●●●

●●●●●●●●● ●● ●●●●●●●● ●●●● ● ●● ●●●● ●● ●

●●●

● ●●● ●●●● ●●●●●●● ●●● ●●●

●●●

●● ●●●●●●●●●● ●●● ●●●

●●●●●●●

●●●

● ●●

●●

●●● ●●●●●●● ●●●●●●●● ●●●●

●●

●●●●●

●●●●●●● ●●●●●

●●●

● ●●●●● ●●●

●●●

● ●●●●● ●●●●●●●●● ●●●●●●

●●●

●●●●●●

●●●

●●● ●●● ●●●●●●

●●●

●● ●● ●● ●●●●●●● ●●● ●● ●●●●●●

● ●●

●●●

● ●● ●● ●

●●●

●●●

●●●

●●

●●●●●●●

●●●●●●

●●●

●●● ●● ●

● ●● ●●●● ●●●

●●●

●●●●●●●●●● ●●● ●● ●●●●●●● ●● ●●●●●● ●●●

●●●

●●● ●●● ●● ●●● ●●●●●●●

●●

●●

●●●

●●●●●●

●●●

●●●

●●●

● ●●●●● ●●● ●● ●● ●●●●●●●●● ●● ●●●●●●

●●●

●●●●● ●●● ●●●●●● ●● ●● ●●●● ●●●●● ● ●●

●●●

●●●

●●●

●●●●

●●

●●●●●●●●● ●● ●

●●●

●●● ●●●●● ●● ●● ●●●●●● ●●●

●●●

●●●●●● ●●●

●●●● ●●

●●●●● ●● ●● ●●●

●●●

●●●

●●●

●●●●●● ●

● ●

●●●

●● ●

●●●

●● ●●●● ●● ●●●●● ●● ●● ●●●●● ●● ●●● ●●●

●●●●●●

●● ●●●● ●●●●●●●● ●

●●●

●●

●●●

●●

● ●●●

●● ●●●●

●●●●●●●●● ●●●

●● ●

●●●●●●●●●●● ●

●●●

●●●●●● ●●●●●●

●●●

●●●

●●●●●●

● ●● ●●●●●● ●●●●●● ●●●●●●●●●

●●●

●● ●●●●

● ●●●●●●●●

●●●●●●●●●

● ●● ●● ●

●●●● ●●

●●●

●●●●●●

●●●

●●●●

●●

●●

●●●●● ●●● ●●●

●●●

●●●

●●●

● ●●●●● ●●●

●●●●●●● ●●

●● ●0.0

2.5

5.0

7.5

10.0

12.5

0 10 20 30I/O Read (MB)

I/O W

rite

(MB)

mDiffFit

Identifies groups of high density areas where no correlation is found

Page 11: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

11

Density-Based Clustering: Epigenomics workflow

!  Datasets with high correlation values are not clustered

c: clusters per task type ρ: correlation value σ: standard deviation

Higher correlation values

Smaller standard deviation values

Constant values

Page 12: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

12

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process !  Experiments and Evaluation

!  Conclusions

Page 13: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

13

Task Estimation Process

•  Based on Regression Trees •  Built offline from historical data analyses

Tasks are classified by application, then task type

Estimation of runtime, I/O write, or memory peak

If strong correlated to the input data: •  Estimation based on the ratio

parameter/input data size •  Otherwise, estimation based on the mean

Page 14: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

14

Example of Estimation Rules

Rules for I/O write estimation of the Periodogram workflow

Page 15: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

15

Online Estimation Process

•  Based on the MAPE-K loop •  Task executions are constantly monitored •  Estimated values are updated, and a new prediction is done

Offline Estimation

Monitoring

Tasks submission

Analysis

Task completion

Correct estimation?

yes

New Estimation

no

Execution

Replanning

Online Estimation Process

Page 16: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

16

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

Page 17: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

17

Experiment Conditions

•  Trace analysis of 3 workflow applications •  Montage •  Epigenomics •  Periodogram

•  Leave-one-out cross-validation •  Evaluate the accuracy of our online estimation process •  3 different workflow execution traces for each workflow

•  Simulator •  Simple DAG analyzer •  Replays workflow executions

Page 18: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

18

Results: Average Estimation Errors - Montage

Online Process Avg. Runtime Error: 18% Avg. I/O Write Error: 9% Avg. Memory Error: 13%

Offline Process Avg. Runtime Error: 43% Avg. I/O Write Error: 56% Avg. Memory Error: 53%

Poor output data estimations leads to a chain of estimation errors in scientific workflows

Page 19: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

19

Results: Average Estimation Errors - Epigenomics

Online Process Avg. Runtime Error: 13% Avg. I/O Write Error: 5% Avg. Memory Error: 8%

Offline Process Avg. Runtime Error: 29% Avg. I/O Write Error: 57% Avg. Memory Error: 48%

Poor output data estimations leads to a chain of estimation errors in scientific workflows

Page 20: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

20

Results: Average Estimation Errors - Periodogram

•  Experiment Conclusions •  Online strategy counterbalances the propagation of estimation

errors •  Estimation of first-level tasks have strong influence in

subsequent estimations

BoT: the online approach produces the same result as the offline

Page 21: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

21

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

Page 22: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

22

Conclusions

!  Summary of contributions –  Automated method that characterizes scientific workflow executions –  Fine-grained characterization of 3 real scientific workflows –  An online estimation process to predict fine-grained task needs

!  Future Work –  Analysis of the impact of re-planning a workflow when using an online

estimation strategy –  Sensitivity analysis of the correlation value ρ –  Increase the number of workflow samples –  Compare the results with other monitoring tools

Page 23: Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Thank  you.  

Ques%ons?  

[email protected]  

h/p://pegasus.isi.edu