diff --git a/docs/algo-overview.md b/docs/algo-overview.md deleted file mode 100644 index 2a3881639b0..00000000000 --- a/docs/algo-overview.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -id: algo-overview -title: Overview ---- -Ax supports: - -- Bandit optimization - - Empirical Bayes with Thompson sampling -- Bayesian optimization diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index bb93f02a08c..00000000000 --- a/docs/api.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -id: api -title: APIs ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -The modular design of Ax enables three different usage modes, with different -balances of structure to flexibility and reproducibility. Navigate to the -["Tutorials" page](/docs/tutorials) for an in-depth walk-through of each API and -usage mode. - -**NOTE: We recommend the Service API for the vast majority of use cases.** This -API provides an ideal balance of flexibility and simplicity for most users, and -we are in the process of consolidating Ax usage around it more formally. - -From most lightweight to fullest functionality, our APIs are: - -- **Loop API** ([tutorial](/docs/tutorials/gpei_hartmann_loop)) is intended for - synchronous optimization loops, where [trials](glossary.md#trial) can be - evaluated right away. With this API, optimization can be executed in a single - call and [experiment](glossary.md#experiment) introspection is available once - optimization is complete. **Use this API only for the simplest use cases where - running a single trial is fast and only one trial should be running at a - time.** -- **[RECOMMENDED] Service API** - ([tutorial](/docs/tutorials/gpei_hartmann_service)) can be used as a - lightweight service for parameter-tuning applications where trials might be - evaluated in parallel and data is available asynchronously (e.g. - hyperparameter or simulation optimization). It requires little to no knowledge - of Ax data structures and easily integrates with various schedulers. In this - mode, Ax suggests one-[arm](glossary.md#arm) trials to be evaluated by the - client application, and expects them to be completed with - [metric](glossary.md#metric) data when available. **This is our most popular - API and a good place to start as a new user. Use it to leverage nearly full - hyperparameter optimization functionality of Ax without the need to learn its - architecture and how things work under the hood.** - - In both the Loop and the Service API, it is possible to configure the - optimization algorithm via an Ax `GenerationStrategy` - ([tutorial](/docs/tutorials/generation_strategy)), so use of Developer API - is not required to control the optimization algorithm in Ax. -- **Developer API** ([tutorial](/docs/tutorials/gpei_hartmann_developer)) is for - ad-hoc use by data scientists, machine learning engineers, and researchers. - The developer API allows for a great deal of customization and introspection, - and is recommended for those who plan to use Ax to optimize A/B tests. Using - the developer API requires some knowledge of [Ax architecture](core.md). **Use - this API if you are looking to perform field experiments with `BatchTrial`-s, - customize or contribute to Ax, or leverage advanced functionality that is not - exposed in other APIs.** - - While not an API, the **`Scheduler`** - ([tutorial](/docs/tutorials/scheduler)) is an important and distinct - use-case of the Ax Developer API. With the `Scheduler`, it's possible to run - a configurable, managed closed-loop optimization where trials are deployed - and polled in an async fashion and no human intervention/oversight is - required until the experiment is complete. **Use the `Scheduler` when you - are looking to configure and start a full experiment that will need to - interact with an external system to evaluate trials.** - -Here is a comparison of the three APIs in the simple case of evaluating the -unconstrained synthetic Branin function: - - - - - -```py - -from ax import optimize -from ax.utils.measurement.synthetic_functions import branin - -best_parameters, values, experiment, model = optimize( - parameters=[ - { - "name": "x1", - "type": "range", - "bounds": [-5.0, 10.0], - }, - { - "name": "x2", - "type": "range", - "bounds": [0.0, 10.0], - }, - ], - evaluation_function=lambda p: (branin(p["x1"], p["x2"]), 0.0), - minimize=True, -) - -``` - - - - -```py - -from ax.service.ax_client import AxClient, ObjectiveProperties -from ax.utils.measurement.synthetic_functions import branin - -ax_client = AxClient() -ax_client.create_experiment( - name="branin_test_experiment", - parameters=[ - { - "name": "x1", - "type": "range", - "bounds": [-5.0, 10.0], - "value_type": "float", - }, - { - "name": "x2", - "type": "range", - "bounds": [0.0, 10.0], - }, - ], - objectives={"branin": ObjectiveProperties(minimize=True)}, -) - -for _ in range(15): - parameters, trial_index = ax_client.get_next_trial() - ax_client.complete_trial(trial_index=trial_index, raw_data=branin(parameters["x1"], parameters["x2"])) - -best_parameters, metrics = ax_client.get_best_parameters() - -``` - - - - -```py - -from ax import * - - -class MockRunner(Runner): - def run(self, trial): - return {"name": str(trial.index)} - - -branin_search_space = SearchSpace( - parameters=[ - RangeParameter( - name="x1", parameter_type=ParameterType.FLOAT, lower=-5, upper=10 - ), - RangeParameter( - name="x2", parameter_type=ParameterType.FLOAT, lower=0, upper=15 - ), - ] -) -exp = Experiment( - name="test_branin", - search_space=branin_search_space, - optimization_config=OptimizationConfig( - objective=Objective( - metric=BraninMetric(name="branin", param_names=["x1", "x2"]), - minimize=True, - ), - ), - runner=MockRunner(), -) - -sobol = Generators.SOBOL(exp.search_space) -for i in range(5): - trial = exp.new_trial(generator_run=sobol.gen(1)) - trial.run() - trial.mark_completed() - -best_arm = None -for i in range(15): - gpei = Generators.BOTORCH_MODULAR(experiment=exp, data=exp.fetch_data()) - generator_run = gpei.gen(1) - best_arm, _ = generator_run.best_arm_predictions - trial = exp.new_trial(generator_run=generator_run) - trial.run() - trial.mark_completed() - -exp.fetch_data() -best_parameters = best_arm.parameters - -``` - - - - -```py - -from ax import * -from ax.generation_strategy.generation_strategy import GenerationStrategy -from ax.service import Scheduler - -# Full `Experiment` and `GenerationStrategy` instantiation -# omitted for brevity, refer to the "Tutorials" page for detail. -experiment = Experiment(...) -generation_strategy = GenerationStrategy(...) - -scheduler = Scheduler( - experiment=experiment, - generation_strategy=generation_strategy, - options=SchedulerOptions(), # Configurations for how to run the experiment -) - -scheduler.run_n_trials(100) # Automate running 100 trials and reporting results - -``` - - - diff --git a/docs/assets/discrepancy_dims.png b/docs/assets/discrepancy_dims.png new file mode 100644 index 00000000000..666bde71ba5 Binary files /dev/null and b/docs/assets/discrepancy_dims.png differ diff --git a/docs/assets/doe.png b/docs/assets/doe.png new file mode 100644 index 00000000000..5b048ba2a6b Binary files /dev/null and b/docs/assets/doe.png differ diff --git a/docs/assets/ei.png b/docs/assets/ei.png new file mode 100644 index 00000000000..5a45ff74ab1 Binary files /dev/null and b/docs/assets/ei.png differ diff --git a/docs/assets/gpei.gif b/docs/assets/gpei.gif new file mode 100644 index 00000000000..78bc83e68f5 Binary files /dev/null and b/docs/assets/gpei.gif differ diff --git a/docs/assets/line_square_cube.png b/docs/assets/line_square_cube.png new file mode 100644 index 00000000000..c1327d6f8eb Binary files /dev/null and b/docs/assets/line_square_cube.png differ diff --git a/docs/assets/surrogate.png b/docs/assets/surrogate.png new file mode 100644 index 00000000000..4b255908346 Binary files /dev/null and b/docs/assets/surrogate.png differ diff --git a/docs/assets/traditional_vs_adaptive.svg b/docs/assets/traditional_vs_adaptive.svg new file mode 100644 index 00000000000..8a359eb1547 --- /dev/null +++ b/docs/assets/traditional_vs_adaptive.svg @@ -0,0 +1,2 @@ +Design n trialsDesign trialObserve n outcomesObserve outcomen iterationsTraditionalAdaptive \ No newline at end of file diff --git a/docs/banditopt.md b/docs/banditopt.md deleted file mode 100644 index 7b8944dc6e7..00000000000 --- a/docs/banditopt.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: banditopt -title: Bandit Optimization ---- -Many decision problems require choosing from a discrete set of candidates, and for these problems Ax uses bandit optimization. In contrast to [Bayesian optimization](bayesopt.md) — which provides a solution for problems with continuous parameters and an infinite number of potential options — bandit optimization is used for problems with a finite set of choices. Most ordinary A/B tests, in which a handful of options are evaluated against each other, fall into this category. Experimenters typically perform such tests by allocating a fixed percentage of experimental units to each choice, waiting to collect data about each, and then choosing a winner. In the case of an online system receiving incoming requests, this can be done by splitting traffic amongst the choices. However, with more than just a few options A/B tests quickly become prohibitively resource-intensive, largely because all choices — no matter how good or bad they appear — receive the same traffic allocation. - -Bandit optimization allocates traffic more efficiently among these discrete choices by sequentially updating the allocation of traffic based on each candidate's performance so far. The key problem for bandit optimization algorithms is balancing exploration (sending traffic to candidates that have the potential to perform well) with exploitation (sending traffic to candidates which already appear to perform well). This trade-off is very similar to the underlying exploration problem highlighted in Bayesian Optimization [acquisition functions](bayesopt.md#acquisition-functions). - -Bandit optimization is more sample efficient than traditional static A/B tests: it acquires a greater reward for the same amount of experimentation. Consequently, it is safer with larger cohorts because the samples are automatically diverted towards the good parameter values (and away from the bad ones). - -## How does it work? - -Ax relies on the simple and effective [Thompson sampling](https://en.wikipedia.org/wiki/Thompson_sampling) algorithm for performing bandit optimization. There is a clear intuition to this method: select a parameterization (referred to from now on as an "arm") with a probability proportional to that arm being the best. This algorithm is easy to implement and has strong guarantees of converging to an arm that is close to the best — all without any human intervention. To understand how this works, we describe an advertising optimization problem in which we want to choose arms which maximize the click-through rate (CTR) and the rewards are binary: either clicks (successes) or views without clicks (failures). - -As we run the experiment, we develop more precise estimates of the performance of each arm. More precisely, in each iteration, we draw samples from the distribution of plausible effects for each arm, and we record the largest sampled value. We repeat this process many times, until settling on a final distribution of maximal arms, which determines how we assign users to arms going forward. This process rapidly narrows down our set of arms to only the very best performers. - -The following figure is an example of how assignment probabilities for an experiment with 10 arms may evolve over 20 iterations of batch-based Thompson sampling: - -![Bandit Optimization Allocations](assets/mab_probs.png) - -The process starts by distributing users equally among all of the arms. Bandit optimization then produces updated assignment probabilities (represented here by the height of the colored bars in each column) based on the average CTR observed up until that point. Since the true CTR is highest for the second arm, followed by the first arm, in this simulated example those arms are subsequently given larger allocations over 20 rounds of optimization. - -Early in the process, the uncertainty in our estimates of CTR means that the bandit optimization spreads samples somewhat evenly amongst arms. This helps us obtain better estimates for all of the arms and allows us to start focusing in on those which perform well. The following figure animates this evolution. The small blue x indicates the observed CTRs within each round, while the solid round symbol (and gray error bars) indicate our aggregated estimates across all rounds. Arms 3 through 8 are sampled just often enough to get a rough estimate that their CTRs are low, and the algorithm then focuses further exploration on the first two arms to better identify which is the best. This example can be viewed as a discretized version of the animated example of [Bayesian optimization](bayesopt.md). - -![Bandit Optimization: Posteriors](assets/mab_animate.gif) - -## How well does it work? - -We want a bandit algorithm to maximize the total rewards over time or equivalently, to minimize the regret, which is defined as the cumulative difference between the highest possible reward and the actual reward at a point in time. In our running example, regret is the number of clicks we "left on the table" through our choice of allocation procedure. We can imagine two extremes: - -1. Pure exploration, in which we just always allocate users evenly across all conditions. This is the standard approach to A/B tests. -2. Pure exploitation, in which we simply allocate all users to the arm we think is most likely to be best. - -Both of these extremes will do a poor job of minimizing our regret, so our aim is to balance them. - -The following figure compares the cumulative regret of three different approaches to bandit optimization for 200 rounds of experimentation on our running example: - -1. Thompson sampling: the primary approach used by Ax, described above -2. Greedy: select the arm with the current best reward -3. Epsilon-greedy: randomly picks an arm $e$ percent of the time, picks the current best arm $100-e$ percent of the time - -![Bandit Optimization: Regret](assets/mab_regret.png) - -The regret of the purely greedy approach is the highest amongst the three approaches. A little bit of exploration, as in the epsilon-greedy approach with $e = 10$, leads to much less regret over time. Thompson sampling best balances the tradeoff between exploration and exploitation, and thus outperforms the other two approaches. - -As it turns out, we can do even better by applying a simple model. - -## Empirical Bayes - -In short, our empirical Bayes model consists of taking noisy estimates from a bunch of arms and "shrinking" the outlying ones a bit towards the overall central tendency across all arms. - -The specific method we use is [James-Stein estimation](https://en.wikipedia.org/wiki/James%E2%80%93Stein_estimator). This method is linear, which means that if multiple arms have estimates with similar levels of precision, they will be moved towards the middle of the effect distribution proportionally to their distance from the middle. Doing this turns out to be optimal in the case of a Gaussian distribution of effects, but will improve accuracy even if that isn't the case (so long as there are [at least three means](https://projecteuclid.org/download/pdf_1/euclid.bsmsp/1200501656)). - -The diagram below illustrates how the estimates of two different experiments change as a result of applying the empirical Bayes estimator. - -![Shrinkage in two representative experiments](assets/example_shrinkage.png) - -The experiment on the left has large effects relative to estimation variability, and so shrinkage (visualized here as distance from the dashed $y=x$ line), is very small. On the right side, however, we can see an experiment where shrinkage makes a significant difference. Effects far from the center of the distribution result in fairly substantial shrinkage, reducing the range of effects by nearly half. While effect estimates in the middle were largely unchanged, the largest observed effects went from around 17% before shrinkage to around 8% afterwards. - -The vast majority of experimental groups are estimated more accurately using empirical Bayes. The arms which tend to have increases in error are those with the largest effects. Understating the effects of such arms is usually not a very big deal when making launch decisions, however, as one is usually most interested in _which_ arm is the best rather than exactly how good it is. - -Using Empirical Bayes does better at allocating users to the best arm than does using the raw effect estimates. It does this by concentrating exploration early in the experiment. In particular, it concentrates that exploration on the _set_ of arms that look good, rather than over-exploiting the single best performing arm. By spreading exploration out a little bit more when effect estimates are noisy (and playing the best arm a little less), it is able to identify the best arm with more confidence later in the experiment. - -See more [details in our paper](https://arxiv.org/abs/1904.12918). diff --git a/docs/bayesopt.md b/docs/bayesopt.md deleted file mode 100644 index 4b42b3faaff..00000000000 --- a/docs/bayesopt.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: bayesopt -title: Bayesian Optimization ---- -In complex engineering problems we often come across parameters that have to be tuned using several time-consuming and noisy evaluations. When the number of parameters is not small or some of the parameters are continuous, using large factorial designs (e.g., “grid search”) or global optimization techniques for optimization require more evaluations than is practically feasible. These types of problems show up in a diversity of applications, such as - -1. Tuning Internet service parameters and selection of weights for recommender systems, -2. Hyperparameter optimization for machine learning, -3. Finding optimal set of gait parameters for locomotive control in robotics, and -4. Tuning design parameters and rule-of-thumb heuristics for hardware design. - -Bayesian optimization (BO) allows us to tune parameters in relatively few iterations by building a smooth model from an initial set of parameterizations (referred to as the "surrogate model") in order to predict the outcomes for as yet unexplored parameterizations. BO is an adaptive approach where the observations from previous evaluations are used to decide what parameterizations to evaluate next. The same strategy can be used to predict the expected gain from all future evaluations and decide on early termination, if the expected benefit is smaller than what is worthwhile for the problem at hand. - -## How does it work? - -Parameter tuning is often done with simple strategies like grid search. However, grid search scales very poorly with the number of parameters (the dimensionality of the parameter space) and generally does not work well for more than a couple of continuous parameters. Alternative global optimization techniques like DIRECT or genetic algorithms are more flexible, but also typically require more evaluations than is feasible, especially in the presence of uncertainty. - -Bayesian optimization starts by building a smooth surrogate model of the outcomes using Gaussian processes (GPs) based on the (possibly noisy) observations available from previous rounds of experimentation. See [below](bayesopt.md#a-closer-look-at-gaussian-processes) for more details on how the GP model works. This surrogate model can be used to make predictions at unobserved parameterizations and quantify the uncertainty around them. The predictions and the uncertainty estimates are combined to derive an acquisition function, which quantifies the value of observing a particular parameterization. We optimize the acquisition function to find the best configuration to observe, and then after observing the outcomes at that configuration a new surrogate model is fitted and the process is repeated until convergence. The entire process is adaptive in the sense that the predictions and uncertainty estimates are updated as new observations are made. - -The strategy of relying on successive surrogate models to update knowledge of the objective allows BO to strike a balance between the conflicting goals of exploration (trying out parameterizations with high uncertainty in their outcomes) and exploitation (converging on configurations that are likely to be good). As a result, BO is able to find better configurations with fewer evaluations than is generally possible with grid search or other global optimization techniques. This makes it a good choice for applications where a limited number of function evaluations can be made. - -![Gaussian process model fit to noisy data](assets/gp_opt.png) - -Figure 1 shows a 1D example, where a surrogate model is fitted to five noisy observations using GPs to predict the objective (solid line) and place uncertainty estimates (proportional to the width of the shaded bands) over the entire x-axis, which represents the range of possible parameter values. The model is able to predict the outcome of configurations that have not yet been tested. As intuitively expected, the uncertainty bands are tight in regions that are well-explored and become wider as we move away from them. - -## Tradeoff between parallelism and total number of trials - -In Bayesian Optimization (any optimization, really), we have the choice between performing evaluations of our function in a sequential fashion (i.e. only generate a new candidate point to evaluate after the previous candidate has been evaluated), or in a parallel fashion (where we evaluate multiple candidates concurrently). The sequential approach will (in expectation) produce better optimization results, since at any point during the optimization the ML model that drives it uses strictly more information than the parallel approach. However, if function evaluations take a long time and end-to-end optimization time is important, then the parallel approach becomes attractive. The difference between the performance of a sequential (aka 'fully adaptive') algorithm and that of a (partially) parallelized algorithm is referred to as the 'adaptivity gap'. - -To balance end-to-end optimization time with finding the optimal solution in fewer trials, we opt for a ‘staggered’ approach by allowing a limited number of trials to be evaluated in parallel. By default, in simplified Ax APIs (e.g., in Service API) the allowed parallelism for the Bayesian phase of the optimization is 3. [Service API tutorial](https://ax.dev/tutorials/gpei_hartmann_service.html#How-many-trials-can-run-in-parallel?) has more information on how to handle and change allowed parallelism for that API. - -For cases where its not too computationally expensive to run many trials (and therefore sample efficiency is less of a concern), higher parallelism can significantly speed up the end-to-end optimization time. By default, we recommend keeping the ratio of allowed parallelism to total trials relatively small (<10%) in order to not hurt optimization performance too much, but the reasonable ratio can differ depending on the specific setup. - -## Acquisition functions - -BoTorch — Ax's optimization engine — supports some of the most commonly used acquisition functions in BO like expected improvement (EI), probability of improvement, and upper confidence bound. Expected improvement is a popular acquisition function owing to its good practical performance and an analytic form that is easy to compute. As the name suggests it rewards evaluation of the objective $f$ based on the expected improvement relative to the current best. If $f^* = \max_i y_i$ is the current best observed outcome and our goal is to maximize $f$, then EI is defined as - -$$ -\text{EI}(x) = \mathbb{E}\bigl[\max(f(x) - f^*, 0)\bigr] -$$ - -The parameterization with the highest EI is selected and evaluated in the next step. Using an acquisition function like EI to sample new points initially promotes quick exploration because its values, like the uncertainty estimates, are higher in unexplored regions. Once the parameter space is adequately explored, EI naturally narrows in on locations where there is a high likelihood of a good objective value. - -The above definition of the EI function assumes that the objective function is observed free of noise. In many types of experiments, such as those found in A/B testing and reinforcement learning, the observations are typically noisy. For these cases, BoTorch implements an efficient variant of EI, called Noisy EI, which allow for optimization of highly noisy outcomes, along with any number of constraints (i.e., ensuring that auxiliary outcomes do not increase or decrease too much). Figure 2 shows how an EI acquisition function can be used in a noisy setting to seamlessly transition from exploration to optimization in BO. For more on Noisy EI, [see our blog post](https://research.fb.com/efficient-tuning-of-online-systems-using-bayesian-optimization/). - -![Bayesian Optimization](assets/bo_1d_opt.gif) - -## A closer look at Gaussian processes - -How exactly do we model the true objective $f$ for making predictions about yet-to-be-explored regions using only a few noisy observations? GPs are a simple and powerful way of imposing assumptions over functions in the form of a probability distribution. The family of functions is characterized by, - -1. A _mean function_ that is the average of all functions, and, -2. A covariance or _kernel function_ that provides an overall template for the look and feel of the individual functions (such as their shape or smoothness) and how much they can vary around the mean function. - -In most applications of BO, a radial basis function (RBF) or Matern kernel is used because they allow us the flexibility to fit a wide variety of functions in high dimensions. By default, BoTorch uses the Matern 5/2 kernel, which tends to allow for less smooth surfaces compared to the RBF. For more mathematical details and intuitions about GPs and the different kernels check out [this tutorial](https://distill.pub/2019/visual-exploration-gaussian-processes). - -In GP regression, the true objective is specified by a GP prior distribution with mean zero and a kernel function. Given a set of noisy observations from initial experimental evaluations, a Bayesian update gives the posterior distribution which is itself a GP with an updated mean and kernel function. The mean function of the posterior distribution gives the best prediction at any point conditional on the available observations, and the kernel function helps to quantify the uncertainty in the predictions in terms of posterior predictive intervals. Figure 3 shows three draws from the posterior GP as well as the predictions and posterior predictive intervals. - -![GP Posterior draws and predictive intervals](assets/gp_posterior.png) - -The kernel function has several hyperparameters that determine how smooth the GP posterior will be. For the predictions and uncertainty estimates to be practically useful, we have to make sure that the kernel is adapted to the observations. This is done by fitting the kernel hyperparameters to the data, usually by maximizing the marginal likelihood of the data, or with MCMC. - -For detailed information about Ax's underlying Bayesian optimization engine, BoTorch, see the [BoTorch documentation](https://botorch.org/docs/introduction). diff --git a/docs/core.md b/docs/core.md deleted file mode 100644 index c6873836d2e..00000000000 --- a/docs/core.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -id: core -title: Core ---- -### Overview - -In Ax, an [experiment](glossary.md#experiment) keeps track of the whole optimization process. It contains a search space, optimization config, metadata, information on what metrics to track and how to run iterations, etc. An [experiment](glossary.md#experiment) is composed of a sequence of [trials](glossary.md#trial) each of which has a set of parameterizations (or [arms](glossary.md#arm)) to be evaluated. A [trial](glossary.md#trial) is added to the experiment when a new set of arms is proposed by the optimization algorithm. The trial is then evaluated to compute the values of each [metric](glossary.md#metric) for each arm, which are fed into the algorithms to create a new trial. Most applications have one arm per trial, which is the default implementation. - -The core constructs that define the experiment are detailed below. - -### Trial VS. Batch Trial - -An [experiment](glossary.md#experiment) consists of [trials](glossary.md#trial), which can be one of two types: regular [trial](glossary.md#trial) or [batch trial](glossary.md#batch-trial). A regular [trial](glossary.md#trial) contains a single [arm](glossary.md#arm) and relevant metadata. A [batch trial](glossary.md#batch-trial) contains multiple [arms](glossary.md#arm), relevant metadata, and optionally a set of arm weights, which are a measure of how much of the total resources allocated to evaluating a batch should go towards evaluating the specific arm. - -**A [batch trial](glossary.md#batch-trial) is not just a [trial](glossary.md#trial) with many arms!** It is a trial for which it is important that the arms are evaluated **simultaneously and together**. For instance, a batch trial would be appropriate in an A/B test where the evaluation results are subject to nonstationarity and require multiple arms to be deployed (and gathered data for) at the same time. For cases where multiple arms are evaluated separately and independently of each other, use multiple [trials](glossary.md#trial) with a single arm each, which will allow Ax to keep track of their deployment and results appropriately. - -### Search Space and Parameters - -A [search space](glossary.md#search-space) is composed of a set of [parameters](glossary.md#parameter) to be tuned in the experiment, and optionally a set of [parameter constraints](glossary.md#parameter-constraint) that define restrictions across these parameters (e.g. `p_a <= p_b`). Each parameter has a name, a type (`int`, `float`, `bool`, or `string`), and a domain, which is a representation of the possible values the parameter can take. The search space is used by the optimization algorithms to know which arms are valid to suggest. - -Ax supports three types of parameters: - -- **Range parameters**: must be of type `int` or `float`, and the domain is represented by a lower and upper bound. If the parameter is specified as an `int`, newly generated points are rounded to the nearest integer by default. - -```python -from ax import RangeParameter, ParameterType -float_range_param = RangeParameter(name="x1", parameter_type=ParameterType.FLOAT, lower=0.0, upper=1.0) -int_range_param = RangeParameter(name="x2", parameter_type=ParameterType.INT, lower=0, upper=10) -``` - -- **Choice parameters**: domain is a set of values - -```python -from ax import ChoiceParameter, ParameterType -choice_param = ChoiceParameter(name="y", parameter_type=ParameterType.STRING, values=["foo", "bar"]) -``` - -- **Fixed parameters**: domain is a single value - -```python -from ax import FixedParameter, ParameterType -fixed_param = FixedParameter(name="z", parameter_type=ParameterType.BOOL, value=True) -``` - -Ax supports three types of parameter constraints, each of which can only be used on `int` or `float` parameters: - -- **Linear constraints**: `w * v` <= b where w is the vector of parameter weights, v is a vector of parameter values, * is the dot product, and b is the specified bound. Linear constraints are specified with the bound and a dictionary that maps parameter name to the weight - -```python -from ax import ParameterConstraint - -param_a = RangeParameter(name="a", parameter_type=ParameterType.FLOAT, lower=0.0, upper=1.0) -param_b = RangeParameter(name="b", parameter_type=ParameterType.FLOAT, lower=0.0, upper=1.0) - -# 1.0*a + 0.5*b <= 1.0 -con_1 = ParameterConstraint(constraint_dict={"a": 1.0, "b": 0.5}, bound=1.0) -``` - -- **Order constraints**: specifies that one parameter must be smaller than the other - -```python -from ax import OrderConstraint - -# a <= b -con_2 = OrderConstraint(lower_parameter=param_a, upper_parameter=param_b) -``` - -- **Sum constraints**: specifies that the sum of the parameters must be greater or less than a bound - -```python -from ax import SumConstraint - -# a + b >= 0.5 -con_3 = SumConstraint(parameters=[param_a, param_b], is_upper_bound=False, bound=0.5) -``` - -Given parameters and (optionally) parameter constraints, you can construct a search space: - -```python -from ax import SearchSpace - -SearchSpace(parameters=[param_a, param_b], parameter_constraints=[con_1, con_2, con_3]) -``` - -### Optimization Config - -An [optimization config](glossary.md#optimization-config) is composed of an [objective metric](glossary.md#objective) to be minimized or maximized, and optionally a set of [outcome constraints](glossary.md#outcome-constraint) that place restrictions on how other metrics can be moved by the experiment. Note that you cannot constrain the objective metric. - -```python -from ax import Metric -from ax import Objective - -objective = Objective(metric=Metric(name="m1"), minimize=True) -``` - -There is no minimum or maximum number of outcome constraints, but an individual metric can have at most two constraints — which is how we represent metrics with both upper and lower bounds. - -Outcome constraints may be of the form `metric >= bound` or `metric <= bound`. The bound can be expressed as an absolute measurement, or relative to the status quo (if applicable), in which case the bound is the acceptable percent change from the status quo's value. - -```python -from ax import Metric -from ax import OutcomeConstraint -from ax import ComparisonOp - -# m2 cannot regress the status quo by more than 5% -oc = OutcomeConstraint(metric=Metric(name="m2"), op = ComparisonOp.GEQ, bound=-5.0, relative=True) -``` - -Finally, create the optimization config to attach to the experiment. - -```python -from ax import OptimizationConfig - -opt_config = OptimizationConfig(objective=objective, outcome_constraints=[oc]) -``` - -### Arm - -An [arm](glossary.md#arm) in Ax is a set of [parameters](glossary.md#parameter) and their values with a name attached to it. In the case of **hyperparameter optimization**, an [arm](glossary.md#arm) corresponds to a hyperparameter configuration explored in the course of a given optimization. - -An arm is defined by specifying the value for each parameter, and optionally giving it a name: - -```python -from ax import Arm - -Arm(parameters={"x": 0, "y": "Foo", z: True}) - -# Names are automatically assigned by the experiment -# but can also be specified by the user -Arm(parameters={"x": 0, "y": "Foo", z: True}, name="arm1") -``` - -Arms are typically attached to trials, as discussed in the [Experiment Lifecycle](#experiment-lifecycle) section below. - -### Status Quo - -An experiment can optionally contain a [status quo](glossary.md#status-quo) arm, which represents the “control” parameterization. This allows viewing results and doing optimization using [relativized](glossary.md#relative-outcome-constraint) outcomes, meaning all metrics will be presented as percentage deltas against the status quo. - -If the status quo is specified on the experiment, it will be automatically added to every trial that is created. - -## Experiment Lifecycle - -An experiment consists of a sequence of trials, each of which evaluates one or more arms. For more details on the implementing the evaluation, see the [trial evaluation](trial-evaluation.md) and [metric](data.md) references. - -Based on the evaluation results, the optimization algorithm suggest one or more arms to evaluate. You then create a new trial containing these suggested arms, evaluate this trial, and repeat. - -You can directly add arm(s) to a new trial, or you can add a [generator run](glossary.md#generator-run) –– output of the optimization algorithm: - -```python -# If only one arm should be evaluated -experiment.new_trial().add_arm(Arm(...)) - -# If multiple arms should be evaluated -experiment.new_batch_trial().add_arms_and_weights(arms=[Arm(...), Arm(...)]) - -# To evaluate the arms suggested by a GeneratorRun -experiment.new_batch_trial().add_generator_run(generator_run=GeneratorRun(...)) -``` - -A trial goes through multiple phases during the experimentation cycle, tracked by its [`TrialStatus`](https://ax.readthedocs.io/en/latest/core.html#ax.core.base_trial.TrialStatus) field. These stages are: - -- `CANDIDATE` - Trial has just been created and can still be modified before deployment. -- `STAGED` - Relevant for external systems, where the trial configuration has been deployed but not begun the evaluation stage. -- `RUNNING` - Trial is in the process of being evaluated. -- `COMPLETED` - Trial completed evaluation successfully. -- `FAILED` - Trial incurred a failure while being evaluated. -- `ABANDONED` - User manually stopped the trial for some specified reason. - -When a trial is first created, its status is "candidate". If applicable, we can call `trial.mark_staged` to move the trial into "staged" mode. We then call `trial.run` -to run the trial, which moves it into the "running" stage. We can then call -`trial.mark_completed`, `trial.mark_failed`, or `trial.mark_abandoned` to end the trial. - -If the trial's [runner](trial-evaluation.md#adding-your-own-runner) has "staging_required" = True, -then `trial.run` will first mark the trial as "staged", and we can later call -`trial.mark_running` explicitly to move the trial to "running". diff --git a/docs/data.md b/docs/data.md deleted file mode 100644 index af12e722dcc..00000000000 --- a/docs/data.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: data -title: Data ---- -## Fetching Data - -[Metrics](glossary.md#metric) provide an interface for fetching data for an experiment or trial. Experiment objectives and outcome constraints are special types of metrics, and you can also attach additional metrics for tracking purposes. - -Each metric is responsible for fetching its own data. Thus, all metric classes must implement the method `fetch_trial_data`, which accepts a [`Trial`](https://ax.readthedocs.io/en/latest/core.html#ax.core.trial.Trial) and returns an instance of [`Data`](https://ax.readthedocs.io/en/latest/core.html#ax.core.data.Data), a wrapper around a Pandas DataFrame. - -To fetch data for an experiment or trial, use `exp.fetch_data` or `trial.fetch_data`. These methods fetch data for all metrics on the experiment and then combine the results into a new aggregate [`Data`](https://ax.readthedocs.io/en/latest/core.html#ax.core.data.Data) instance. - -Each row of the final DataFrame represents the evaluation of an arm on a metric. As such, the required columns are: `arm_name`, `metric_name`, `mean`, and `sem`. Additional optional columns are also supported: `trial_index`, `start_time`, and `end_time`. - -| arm_name | metric_name | mean | sem | -| -------- | ----------- | ---- | --- | -| 0_0 | metric1 | ... | ... | -| 0_0 | metric2 | ... | ... | -| 0_1 | metric1 | ... | ... | -| 0_1 | metric2 | ... | ... | - -## Adding Your Own Metric - -Our base Metric class is meant to be subclassed. Subclasses must provide an implementation of `fetch_trial_data`. - -An example of a custom metric: - -```python -import pandas as pd -from ax import Metric - -class CustomMetric(Metric): - - def fetch_trial_data(self, trial, **kwargs): - records = [] - for arm_name, arm in trial.arms_by_name.items(): - records.append({ - "arm_name": arm_name, - "metric_name": self.name, - "mean": 0.0, # mean value of this metric when this arm is used - "sem": 0.0, # standard error of the above mean - "trial_index": trial.index, - }) - return Data(df=pd.DataFrame.from_records(records)) -``` - -## Advanced Data Fetching - -If you need to fetch data for multiple metrics or trials simultaneously, -your Metric can implement the methods `fetch_experiment_data`, `fetch_trial_data_multi`, -and `fetch_experiment_data_multi`. The default implementations of these methods -use `fetch_trial_data` internally, but can be overridden if bulk data fetching -is more appropriate for the metric type. diff --git a/docs/glossary.md b/docs/glossary.md deleted file mode 100644 index ba08d22e312..00000000000 --- a/docs/glossary.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -id: glossary -title: Glossary -sidebar_label: Glossary ---- -### Arm - -Mapping from [parameters](glossary.md#parameter) (i.e. a parameterization or parameter configuration) to parameter values. An arm provides the configuration to be tested in an Ax [trial](glossary.md#trial). Also known as "treatment group" or "parameterization", the name 'arm' comes from the [Multi-Armed Bandit](https://en.wikipedia.org/wiki/Multi-armed_bandit) optimization problem, in which a player facing a row of “one-armed bandit” slot machines has to choose which machines to play when and in what order. [`[Arm]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.arm) - -### Bandit optimization - -Machine learning-driven version of A/B testing that dynamically allocates traffic to [arms](glossary.md#arm) which are performing well, to determine the best [arm](glossary.md#arm) among a given set. - -### Batch trial - -Single step in the [experiment](glossary.md#experiment), contains multiple [arms](glossary.md#arm) that are **deployed and evaluated together**. A batch trial is not just a trial with many arms; it is a trial for which it is important that the arms are evaluated simultaneously, e.g. in an A/B test where the evaluation results are subject to nonstationarity. For cases where multiple arms are evaluated separately and independently of each other, use multiple regular [trials](glossary.md#trial) with a single arm each. [`[BatchTrial]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.batch_trial) - -### Bayesian optimization - -Sequential optimization strategy for finding an optimal [arm](glossary.md#arm) in a continuous [search space](glossary.md#search-space). - -### Evaluation function - -Function that takes a parameterization and an optional weight as input and outputs a set of metric evaluations ([more details](/docs/trial-evaluation#evaluating-trial-parameters)). Used in the [Loop API](api.md). - -### Experiment - -Object that keeps track of the whole optimization process. Contains a [search space](glossary.md#search-space), [optimization config](glossary.md#optimization-config), and other metadata. [`[Experiment]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.experiment) - -### Generation strategy - -Abstraction that allows to declaratively specify one or multiple models to use in the course of the optimization and automate transition between them (relevant [tutorial](/docs/tutorials/scheduler)). [`[GenerationStrategy]`](https://ax.readthedocs.io/en/latest/modelbridge.html#module-ax.generation_strategy.generation_strategy) - -### Generator run - -Outcome of a single run of the `gen` method of a [model bridge](glossary.md#model-bridge), contains the generated [arms](glossary.md#arm), as well as possibly best [arm](glossary.md#arm) predictions, other [model](glossary.md#model) predictions, fit times etc. [`[GeneratorRun]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.generator_run) - -### Metric - -Interface for fetching data for a specific measurement on an [experiment](glossary.md#experiment) or [trial](glossary.md#trial). [`[Metric]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.metric) - -### Model - -Algorithm that can be used to generate new points in a [search space](glossary.md#search-space). [`[Model]`](https://ax.readthedocs.io/en/latest/models.html) - -### Model bridge - -Adapter for interactions with a [model](glossary.md#model) within the Ax ecosystem. [`[Adapter]`](https://ax.readthedocs.io/en/latest/modelbridge.html) - -### Objective - -The [metric](glossary.md#metric) to be optimized, with an optimization direction (maximize/minimize). [`[Objective]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.objective) - -### Optimization config - -Contains information necessary to run an optimization, i.e. [objective](glossary.md#objective) and [outcome constraints](/docs/glossary#outcome-constraint). [`[OptimizationConfig]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.optimization_config) - -### Outcome constraint - -Constraint on [metric](glossary.md#metric) values, can be an order constraint or a sum constraint; violating [arms](glossary.md#arm) will be considered infeasible. [`[OutcomeConstraint]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.outcome_constraint) - -### Parameter - -Configurable quantity that can be assigned one of multiple possible values, can be continuous ([`RangeParameter`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.RangeParameter)), discrete ([`ChoiceParameter`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter)) or fixed ([`FixedParameter`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.FixedParameter)). [`[Parameter]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.parameter) - -### Parameter constraint - -Places restrictions on the relationships between [parameters](glossary.md#parameter). For example `buffer_size1 < buffer_size2` or `buffer_size_1 + buffer_size_2 < 1024`. [`[ParameterConstraint]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.parameter_constraint) - -### Relative outcome constraint - -[Outcome constraint](glossary.md#outcome-constraint) evaluated relative to the [status quo](glossary.md#status-quo) instead of directly on the metric value. [`[OutcomeConstraint]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.outcome_constraint) - -### Runner - -Dispatch abstraction that defines how a given [trial](glossary.md#trial) is to be run (either locally or by dispatching to an external system). [`[Runner]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.runner) - -### Scheduler - -Configurable closed-loop optimization manager class, capable of conducting a full experiment by deploying trials, polling their results, and leveraging those results to generate and deploy more -trials (relevant [tutorial](/docs/tutorials/scheduler)). [`[Scheduler]`](https://ax.readthedocs.io/en/latest/service.html#module-ax.service.scheduler) - -### Search space - -Continuous, discrete or mixed design space that defines the set of [parameters](glossary.md#parameter) to be tuned in the optimization, and optionally [parameter constraints](glossary.md#parameter-constraint) on these parameters. The parameters of the [arms](glossary.md#arm) to be evaluated in the optimization are drawn from a search space. [`[SearchSpace]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.search_space) - -### SEM - -[Standard error](https://en.wikipedia.org/wiki/Standard_error) of the [metric](glossary.md#metric)'s mean, 0.0 for noiseless measurements. If no value is provided, defaults to `np.nan`, in which case Ax infers its value using the measurements collected during experimentation. - -### Status quo - -An [arm](glossary.md#arm), usually the currently deployed configuration, which provides a baseline for comparing all other [arms](glossary.md#arm). Also known as a control [arm](glossary.md#arm). [`[StatusQuo]`](https://ax.readthedocs.io/en/latest/core.html#ax.core.experiment.Experiment.status_quo) - -### Trial - -Single step in the [experiment](glossary.md#experiment), contains a single [arm](glossary.md#arm). In cases where the trial contains multiple [arms](glossary.md#arm) that are deployed simultaneously, we refer to it as a [batch trial](glossary.md#batch-trial). [`[Trial]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.trial), [`[BatchTrial]`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.batch_trial) diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100644 index 6049a847c11..00000000000 --- a/docs/installation.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -id: installation -title: Installation ---- -## Requirements - -You need Python 3.10 or later to run Ax. - -The required Python dependencies are: - -- [botorch][def] -- jinja2 -- pandas -- scipy -- sklearn -- plotly >=2.2.1 - -## Stable Version - -### Installing via pip - -We recommend installing Ax via pip (even if using Conda environment): - -```shell -conda install pytorch torchvision -c pytorch # OSX only (details below) -pip install ax-platform -``` - -Installation will use Python wheels from PyPI, available for [OSX, Linux, and Windows](https://pypi.org/project/ax-platform/#files). - -_Note_: Make sure the `pip` being used to install `ax-platform` is actually the one from the newly created Conda environment. -If you're using a Unix-based OS, you can use `which pip` to check. - -_Recommendation for MacOS users_: PyTorch is a required dependency of BoTorch, and can be automatically installed via pip. -However, **we recommend you [install PyTorch manually](https://pytorch.org/get-started/locally/#anaconda-1) before installing Ax, using the Anaconda package manager**. -Installing from Anaconda will link against MKL (a library that optimizes mathematical computation for Intel processors). -This will result in up to an order-of-magnitude speed-up for Bayesian optimization, whereas installing PyTorch from pip does not link against MKL. - -If you need CUDA on MacOS, you will need to build PyTorch from source. Please consult the PyTorch installation instructions above. - -### Optional Dependencies - -To use Ax with a notebook environment, you will need Jupyter. Install it first: - -```shell -pip install jupyter -``` - -If you want to store the experiments in MySQL, you will need SQLAlchemy: - -```shell -pip install SQLAlchemy -``` - -## Latest Version - -### Installing from Git - -You can install the latest (bleeding edge) version from GitHub: - -```shell -pip install 'git+https://github.com/facebook/Ax.git#egg=ax-platform' -``` - -See also the recommendation for installing PyTorch for MacOS users above. - -At times, the bleeding edge for Ax can depend on bleeding edge versions of BoTorch (or GPyTorch). We therefore recommend installing those from Git as well: - -```shell -pip install git+https://github.com/cornellius-gp/gpytorch.git -pip install git+https://github.com/pytorch/botorch.git -``` - -### Optional Dependencies - -To use Ax with a notebook environment, you will need Jupyter. Install it first: - -```shell -pip install 'git+https://github.com/facebook/Ax.git#egg=ax-platform[notebook]' -``` - -If storing Ax experiments via SQLAlchemy in MySQL or SQLite: - -```shell -pip install 'git+https://github.com/facebook/Ax.git#egg=ax-platform[mysql]' -``` - -## Development - -When contributing to Ax, we recommend cloning the [repository](https://github.com/facebook/Ax) and installing all optional dependencies: - -```shell -# bleeding edge versions of GPyTorch + BoTorch are recommended -pip install git+https://github.com/cornellius-gp/gpytorch.git -pip install git+https://github.com/pytorch/botorch.git - -git clone https://github.com/facebook/ax.git --depth 1 -cd ax -pip install -e .[notebook,mysql,dev] -``` - -See recommendation for installing PyTorch for MacOS users above. - -The above example limits the cloned directory size via the -[`--depth`](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt) -argument to `git clone`. If you require the entire commit history you may remove this -argument. - -[def]: https://www.botorch.org diff --git a/docs/intro-to-ae.md b/docs/intro-to-ae.md new file mode 100644 index 00000000000..e1ece5243a9 --- /dev/null +++ b/docs/intro-to-ae.md @@ -0,0 +1,119 @@ +--- +id: intro-to-ae +title: Introduction to Adaptive Experimentation +--- + +# Introduction to Adaptive Experimentation + +In engineering tasks we often encounter so-called "black box" optimization +problems, situations where the relationship between inputs and outputs of a +system don’t have a closed-form solution and cannot be easily modeled. In these +scenarious practitioners must tune parameters using many time- and/or +resource-consuming trials. For example: + +- Machine learning engineers may seek optimal hyperparameters such as learning + rate or number of training steps to maximize accuracy or minimize size/runtime + for a model. +- Roboticists may seek to jointly find optimal gait parameters such as stride + length or foot angle to maximize walking speed for a legged robot. +- Materials scientists may seek to find the composition and heat treatment + parameters that maximize strength for an aerospace alloy. +- Chemists may seek to find the synthesis path for a molecule that is likely to + be a good drug candidate for an infectious disease. + +Adaptive experimentation is an approach to solving these problems efficiently by +leveraging data from prior iterations to inform future decisions on which trials +to run next. + +![Traditional vs. Adaptive design](assets/traditional_vs_adaptive.svg) + +## Traditional methods are inefficient, especially in high dimensions + +To solve black-box problems, there are two common approaches to suggest what +points or “trials” to evaluate (i.e., measurements of objective(s) for a given +set of input parameters). One is to use manual trial-and-error based on +intuition. The second is a more systematic method called “design of experiments” +(DoE). These methods can provide a strong understanding of the relationship +between the inputs and outputs of a system by providing broad coverage of the +entire input space. Examples of traditional DoE methods include: + +- Grid search: testing points on an equally spaced grid, +- Random search: randomly picking parameter combinations. Although somewhat + counterintuitive, random search is often more effective than grid search + because it avoids systematic gaps. + +An alternative class of methods referred to as quasi-random search offer the +"best of both worlds" between grid and random search by strategically selecting +points that are more uniformly dispersed. Examples include: + +- Sobol sampling, +- Latin Hypercube Sampling. Both rely on some form of subdividing a search space + and assigning points in relation to these subdivisions. + +![DoE sampling methods](assets/doe.png) + +Unfortunately getting broad coverage of the domain requires many samples, which +can be expensive. Worse, as more dimensions are added more points are required +to achieve the same coverage. To illustrate, imagine points distributed on a +line (1D), a square (2D), and a cube (3D). + +![Sampling from a line, a square, and a cube](assets/line_square_cube.png) + +Notice how even though there are 9x more points in the cube than on the line, +the +[discrepancy](https://en.wikipedia.org/wiki/Equidistributed_sequence#Discrepancy) +is 3x higher than for the line (0.100 vs. 0.028). This is often referred to as +the +["curse of dimensionality"](https://en.wikipedia.org/wiki/Curse_of_dimensionality). + +| | Line | Square | Cube | Hypercube | +| ----------- | :-------: | :-------: | :-------: | :---------: | +| Num. Points | $$3^1$$ | $$3^2$$ | $$3^3$$ | $$n^d$$ | +| Discrepancy | $$0.028$$ | $$0.061$$ | $$0.100$$ | $$f(3, d)$$ | + +Real-world black box optimization tasks often have many dimensions and can only +afford to conduct very few trials. For example, imagine you have a budget of 100 +trials and are optimizing over a parameter space with 20 dimensions. The +differences in discrepancy between algorithms can become drastic, as shown +below. In the case of grid search, to have even just two subdivisions in each of +20 dimensions would require $$20^2 = 400$$ points, well over our 100 point +budget! + +![Discrepancy vs. input dimensionality](assets/discrepancy_dims.png) + +## Adaptive experimentation outperforms traditional methods + +Although simple to implement, traditional DoE methods such as grid search, +random search, and quasi-random search are uninformed, meaning they do not +incorporate information about the objective function to be optimized. Likewise, +manual trial-and-error can be slow, expensive, and too complicated to +effectively reason about; domain experts often restrict their search space to +just a few parameters to help it feel like it’s something they can handle. + +Adaptive experimentation is a more efficient version of DoE that iteratively +incorporates information from prior results to suggest the next parameter set to +run. A typical adaptive experiment involves the following series of steps: + +1. **Configure** your optimization experiment, defining the search space, + objective(s), constraints, etc. +2. **Suggest** new trials, either one at a time or in a batch +3. **Evaluate** the suggested trials by executing the black box function and + reporting the results back to the optimization algorithm +4. **Repeat** steps 2 and 3 until a stopping condition is met or the evaluation + budget is exhausted + +Bayesian optimization, one of the most effective forms of adaptive +experimentation, uses acquisition functions to intelligently balance the +tradeoffs between exploration (learning how new parameterizations perform) and +exploitation (refining parameterizations previously observed to be good). To +achieve this, one must also create a surrogate model that predicts the average +behavior and the uncertainty of the objective(s) as a function of the input +parameters Typically this surrogate model is much less expensive to evaluate +than the true, underlying black box function. + +Black box optimization problems are everywhere, whether in machine learning, +robotics, materials science, or chemistry. Moving from manual trial-and-error +and uninformed strategies such as grid, random, and quasi-random search to an +adaptive experimentation setup can dramatically improve optimization +performance, whether it’s a state-of-the-art machine learning model, a faster +robot, a stronger alloy, or a better medicine. diff --git a/docs/intro-to-bo.md b/docs/intro-to-bo.md new file mode 100644 index 00000000000..7ccfeffb2e7 --- /dev/null +++ b/docs/intro-to-bo.md @@ -0,0 +1,128 @@ +--- +id: intro-to-bo +title: Introduction to Bayesian Optimization +--- + +# Introduction to Bayesian Optimization + +Bayesian optimization (BO) is a highly effective adaptive experimentation method +that excels at balancing exploration (learning how new parameterizations +perform) and exploitation (refining parameterizations previously observed to be +good). This method is the foundation of Ax's optimization. + +BO has seen widespread use across a variety of domains. Notable examples include +its use in +[tuning the hyperparameters of AlphaGo](https://www.nature.com/articles/nature16961), +a landmark model that defeated world champions in the board game Go. In +materials science, researchers used BO to accelerate the curing process, +increase the overall strength, and reduce the CO2 emissions of +[concrete formulations](https://arxiv.org/abs/2310.18288), the most abundant +human-made material in history. In chemistry, researchers used it to +[discover 21 new, state-of-the-art molecules for tunable dye lasers](https://www.science.org/doi/10.1126/science.adk9227) +(frequently used in quantum physics research), including the world’s brightest +molecule, while only a dozen or so had been discovered over the course of +decades. + +Ax relies on [BoTorch](https://botorch.org/) for its implementation of +state-of-the-art Bayesian optimization components. + +## Bayesian Optimization + +Bayesian optimization begins by building a smooth surrogate model of the +outcomes using a statistical model. This surrogate model makes predictions at +unobserved parameterizations and estimate the uncertainty around them. The +predictions and the uncertainty estimates are combined to derive an acquisition +function, which quantifies the value of observing a particular parameterization. +By optimizing the acquisition function we identify the best candidate +parameterizations for evaluation. In an iterative process, we fit the surrogate +model with newly observed data, optimize the acquisition function to identify +the best configuration to observe, then fit a new surrogate model with the newly +observed outcomes. The entire process is adaptive where the predictions and +uncertainty estimates are updated as new observations are made. + +The strategy of relying on successive surrogate models to update knowledge of +the objective allows BO to strike a balance between the conflicting goals of +exploration (trying out parameterizations with high uncertainty in their +outcomes) and exploitation (converging on configurations that are likely to be +good). As a result, BO is able to find better configurations with fewer +evaluations than is generally possible with grid search or other global +optimization techniques. Therefore, leveraging BO as is done in Ax, is +particularly impactful for applications where the evaluation process is +expensive, allowing for only a limited number of evaluations + +## Surrogate Models + +Because the objective function is a black-box process, we treat it as a random +function and place a prior over it. This prior captures beliefs about the +objective, and it is updated as data is observed to form the posterior. + +This is typically done using a Gaussian process (GP), a probabilistic model that +defines a probability distribution over possible functions that fit a set of +points. Importantly for Bayesian Optimization, GPs can be used to map points in +input space (the parameters we wish to tune) to distributions in output space +(the objectives we wish to optimize). + +In the one-dimensional example below, a surrogate model is fit to five noisy +observations using a GP to predict the objective, depicted by the solid line, +and uncertainty estimates, illustrated by the width of the shaded bands. This +objective is predicted for the entire range of possible parameter values, +corresponding to the full x-axis. Importantly, the model is able to predict the +outcome and quantify the uncertainty of configurations that have not yet been +tested. Intuitively, the uncertainty bands are tight in regions that are +well-explored and become wider as we move away from them. + +![GP surrogate model](assets/surrogate.png) + +## Acquisition Functions + +The acquisition function is a mathematical function that quantifies the utility +of observing a given point in the domain. Ax supports the most commonly used +acquisition functions in BO, including: + +- **Expected Improvement (EI)**, which captures the expected value of a point + above the current best value. +- **Probability of Improvement (PI)**, which captures the probability of a point + producing an observation better than the current best value. +- **Upper Confidence Bound (UCB)**, which sums the predicted mean and standard + deviation. + +Each of these acquisition functions will lead to different behavior during the +optimization. Additionally, many of these acquisition functions have been +extended to perform well in constrained, noisy, multi-objective, and/or batched +settings. + +Expected Improvement is a popular acquisition function owing to well balanced +exploitation vs exploration, a straighforward analytic form, and overall good +practical performance. As the name suggests, it rewards evaluation of the +objective $$f$$ based on the expected improvement relative to the current best. +If $$f^* = \max_i y_i$$ is the current best observed outcome and our goal is to +maximize $f$, then EI is defined as the following: + +$$ +\text{EI}(x) = \mathbb{E}\bigl[\max(f(x) - f^*, 0)\bigr] +$$ + +A visualization of the expected improvement based on the surrogate model +predictions is shown below, where the next suggestion is where the expected +improvement is at its maximum. + +![Expected Improvement (EI) acquisition function](assets/ei.png) + +Once a new highest EI is selected and evaluated, the surrogate model is +retrained and a new suggestion is made. As described above, this process +continues iteratively until a stopping condition, set by the user, is reached. + +![Full Bayesian optimization loop](assets/gpei.gif) + +Using an acquisition function like EI to sample new points initially promotes +quick exploration because the expected values, informed by the uncertainty +estimates, are higher in unexplored regions. Once the parameter space is +adequately explored, EI naturally narrows focuses on regions where there is a +high likelihood of a good objective value (ie exploitation). + +While the combination of a Gaussian process surrogate model and the expected +improvement acquisition function is shown above, different combinations of +surrogate models and acquisition functions can be used. Different surrogates, +either differently configured GPs or entirely different probabilistic models, or +different acquisition functions present various tradeoffs in terms of +optimization performance, computational load, and more. diff --git a/docs/models.md b/docs/models.md deleted file mode 100644 index 45e973551a4..00000000000 --- a/docs/models.md +++ /dev/null @@ -1,227 +0,0 @@ ---- -id: models -title: Generators ---- -## Using models in Ax - -In the optimization algorithms implemented by Ax, models predict the outcomes of metrics within an experiment evaluated at a parameterization, and are used to predict metrics or suggest new parameterizations for trials. Generators in Ax are created using factory functions from the [`ax.modelbridge.factory`](https://ax.readthedocs.io/en/latest/modelbridge.html#module-ax.modelbridge.factory). All of these models share a common API with [`predict()`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.predict) to make predictions at new points and [`gen()`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.gen) to generate new candidates to be tested. There are a variety of models available in the factory; here we describe the usage patterns for the primary model types and show how the various Ax utilities can be used with models. - -#### Sobol sequence - -The [`get_sobol`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.factory.get_sobol) function is used to construct a model that produces a quasirandom Sobol sequence when[`gen`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.gen) is called. This code generates a scrambled Sobol sequence of 10 points: - -```python -from ax.modelbridge.factory import get_sobol - -m = get_sobol(search_space) -gr = m.gen(n=10) -``` - -The output of [`gen`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.gen) is a [`GeneratorRun`](https://ax.readthedocs.io/en/latest/core.html#ax.core.generator_run.GeneratorRun) object that contains the generated points, along with metadata about the generation process. The generated arms can be accessed at [`GeneratorRun.arms`](https://ax.readthedocs.io/en/latest/core.html#ax.core.generator_run.GeneratorRun.arms). - -Additional arguments can be passed to [`get_sobol`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.factory.get_sobol) such as `scramble=False` to disable scrambling, and `seed` to set a seed (see [model API](https://ax.readthedocs.io/en/latest/models.html#ax.models.random.sobol.SobolGenerator)). - -Sobol sequences are typically used to select initialization points, and this model does not implement [`predict`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.predict). It can be used on search spaces with any combination of discrete and continuous parameters. - -#### Gaussian Process with EI - -Gaussian Processes (GPs) are used for [Bayesian Optimization](bayesopt.md) in Ax, the [`Generators.BOTORCH_MODULAR`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.registry.Generators) registry entry constructs a modular BoTorch model that fits a GP to the data, and uses qLogNEI (or qLogNEHVI for MOO) acquisition function to generate new points on calls to [`gen`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.gen). This code fits a GP and generates a batch of 5 points which maximizes EI: -```Python -from ax.modelbridge.registry import Generators - -m = Generators.BOTORCH_MODULAR(experiment=experiment, data=data) -gr = m.gen(n=5, optimization_config=optimization_config) -``` - -In contrast to [`get_sobol`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.factory.get_sobol), the GP requires data and is able to make predictions. We make predictions by constructing a list of [`ObservationFeatures`](https://ax.readthedocs.io/en/latest/core.html#ax.core.observation.ObservationFeatures) objects with the parameter values for which we want predictions: - -```python -from ax.core.observation import ObservationFeatures - -obs_feats = [ - ObservationFeatures(parameters={'x1': 3.14, 'x2': 2.72}), - ObservationFeatures(parameters={'x1': 1.41, 'x2': 1.62}), -] -f, cov = m.predict(obs_feats) -``` - -The output of [`predict`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.predict) is the mean estimate of each metric and the covariance (across metrics) for each point. - -All Ax models that implement [`predict`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.predict) can be used with the built-in plotting utilities, which can produce plots of model predictions on 1-d or 2-d slices of the parameter space: - -```python -from ax.plot.slice import plot_slice -from ax.utils.notebook.plotting import render, init_notebook_plotting - -init_notebook_plotting() -render(plot_slice( - model=m, - param_name='x1', # slice on values of 'x1' - metric_name='metric_a', - slice_values={'x2': 7.5}, # Fix at this value for the slice -)) -``` - -
- -```python -from ax.plot.contour import plot_contour - -render(plot_contour( - model=m, - param_x='x1', - param_y='x2', - metric_name='metric_a', -)) -``` - -
- -Ax also includes utilities for cross validation to assess model predictive performance. Leave-one-out cross validation can be performed as follows: - -```python -from ax.modelbridge.cross_validation import cross_validate, compute_diagnostics - -cv = cross_validate(model) -diagnostics = compute_diagnostics(cv) -``` - -[`compute_diagnostics`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.cross_validation.compute_diagnostics) computes a collection of diagnostics of model predictions, such as the correlation between predictions and actual values, and the p-value for a Fisher test of the model's ability to distinguish high values from low. A very useful tool for assessing model performance is to plot the cross validated predictions against the actual observed values: - -```python -from ax.plot.diagnostic import interact_cross_validation - -render(interact_cross_validation(cv)) -``` - -
- -If the model fits the data well, the values will lie along the diagonal. Poor GP fits tend to produce cross validation plots that are flat with high predictive uncertainty - such fits are unlikely to produce good candidates in [`gen`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.gen). - -By default, this model will apply a number of transformations to the feature space, such as one-hot encoding of [`ChoiceParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter) and log transformation of [`RangeParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.RangeParameter) which have `log_scale` set to `True`. Transforms are also applied to the observed outcomes, such as standardizing the data for each metric. See [the section below on Transforms](/docs/models#transforms) for a description of the default transforms, and how new transforms can be implemented and included. - -GPs typically does a good job of modeling continuous parameters ([`RangeParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.RangeParameter)). If the search space contains [`ChoiceParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter), they will be one-hot-encoded and the GP fit in the encoded space. A search space with a mix of continuous parameters and [`ChoiceParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter) that take a small number of values can be modeled effectively with a GP, but model performance may be poor if there are more than about 20 parameters after one-hot encoding. Cross validation is an effective tool for determining usefulness of the GP on a particular problem. - -In discrete spaces where the GP does not predict well, a multi-armed bandit approach is often preferred, and we now discuss the models suitable for that approach. - -#### Support for mixed search spaces and categorical variables - -The most common way of dealing with categorical variables in Bayesian optimization is to one-hot encode the categories to allow fitting a GP model in a continuous space. In this setting, a categorical variable with categories `["red", "blue", "green"]` is represented by three new variables (one for each category). While this is a convenient choice, it can drastically increase the dimensionality of the search space. In addition, the acquisition function is often optimized in the corresponding continuous space and the final candidate is selected by rounding back to the original space, which may result in selecting sub-optimal points according to the acquisition function. - -Our new approach uses separate kernels for the categorical and ordinal (continuous/integer) variables. In particular, we use a kernel of the form: -$$ -k(x, y) = k_\text{cat}(x_\text{cat}, y_\text{cat}) \times k_\text{ord}(x_\text{ord}, y_\text{ord}) + k_\text{cat}(x_\text{cat}, y_\text{cat}) + k_\text{ord}(x_\text{ord}, y_\text{ord}) -$$ -For the ordinal variables we can use a standard kernel such as Matérn-5/2, but for the categorical variables we need a way to compute distances between the different categories. A natural choice is to set the distance is 0 if two categories are equal and 1 otherwise, similar to the idea of Hamming distances. This approach can be combined with the idea of automatic relevance determination (ARD) where each categorical variable has its own lengthscale. Rather than optimizing the acquisition function in a continuously relaxed space, we optimize it separately over each combination of the categorical variables. While this is likely to result in better optimization performance, it may lead to slow optimization of the acquisition function when there are many categorical variables. - -#### Empirical Bayes and Thompson sampling - -For [Bandit optimization](banditopt.md), The [`get_empirical_bayes_thompson`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.factory.get_empirical_bayes_thompson) factory function returns a model that applies [empirical Bayes shrinkage](banditopt.md#empirical-bayes) to a discrete set of arms, and then uses Thompson sampling to construct a policy with the weight that should be allocated to each arms. Here we apply empirical Bayes to the data and use Thompson sampling to generate a policy that is truncated at `n=10` arms: - -```python -from ax.modelbridge.factory import get_empirical_bayes_thompson - -m = get_empirical_bayes_thompson(experiment, data) -gr = m.gen(n=10, optimization_config=optimization_config) -``` - -The arms and their corresponding weights can be accessed as `gr.arm_weights`. - -As with the GP, we can use [`predict`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.predict) to evaluate the model at points of our choosing. However, because this is a purely in-sample model, those points should correspond to arms that were in the data. The model prediction will return the estimate at that point after applying the empirical Bayes shrinkage: - -```python -f, cov = m.predict([ObservationFeatures(parameters={'x1': 3.14, 'x2': 2.72})]) -``` - -We can generate a plot that shows the predictions for each arm with the shrinkage using [`plot_fitted`](https://ax.readthedocs.io/en/latest/plot.html#ax.plot.scatter.plot_fitted), which shows model predictions on all in-sample arms: - -```python -from ax.plot.scatter import plot_fitted - -render(plot_fitted(m, metric="metric_a", rel=False)) -``` - -
- -#### Factorial designs - -The factory function [`get_factorial`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.factory.get_factorial) can be used to construct a factorial design on a set of [`ChoiceParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter). - -```python -from ax.modelbridge.factory import get_factorial - -m = get_factorial(search_space) -gr = m.gen(n=10) -``` - -Like the Sobol sequence, the factorial model is only used to generate points and does not implement [`predict`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.ModelBridge.predict). - -## Deeper dive: organization of the modeling stack - -Ax uses a bridge design to provide a unified interface for models, while still allowing for modularity in how different types of models are implemented. The modeling stack consists of two layers: the [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) and the Model. - -The [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) is the object that is directly used in Ax: model factories return [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) objects, and plotting and cross validation tools operate on a [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter). The [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) defines a unified API for all of the models used in Ax via methods like [`predict`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.predict) and [`gen`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter.gen). Internally, it is responsible for transforming Ax objects like [`Arm`](https://ax.readthedocs.io/en/latest/core.html#ax.core.arm.Arm) and [`Data`](https://ax.readthedocs.io/en/latest/core.html#ax.core.data.Data) into objects which are then consumed downstream by a Model. - -Model objects are only used in Ax via a [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter). Each Model object defines an API which does not use Ax objects, allowing for modularity of different model types and making it easy to implement new models. For example, the TorchGenerator defines an API for a model that operates on torch tensors. There is a 1-to-1 link between [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) objects and Model objects. For instance, the TorchAdapter takes in Ax objects, converts them to torch tensors, and sends them along to the TorchGenerator. Similar pairings exist for all of the different model types: - -| Adapter | Model | Example implementation | | -| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | - | -| [`TorchAdapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#module-ax.modelbridge.torch) | [`TorchGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel) | [`LegacyBoTorchGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch.botorch.BotorchModel) | | -| [`DiscreteAdapter](https://ax.readthedocs.io/en/latest/modelbridge.html#module-ax.modelbridge.discrete) | [`DiscreteGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.discrete_base.DiscreteModel) | [`ThompsonSampler`](https://ax.readthedocs.io/en/latest/models.html#ax.models.discrete.thompson.ThompsonSampler) | | -| [`RandomAdapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#module-ax.modelbridge.random) | [`RandomGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.random.base.RandomModel) | [`SobolGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.random.sobol.SobolGenerator) | | - -This structure allows for different models like the GP in LegacyBoTorchGenerator and the Random Forest in RandomForest to share an interface and use common plotting tools at the level of the Adapter, while each is implemented using its own torch or numpy structures. - -The primary role of the [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) is to act as a transformation layer. This includes transformations to the data, search space, and optimization config such as standardization and log transforms, as well as the final transform from Ax objects into the objects consumed by the Model. We now describe how transforms are implemented and used in the Adapter. - -## Transforms - -The transformations in the [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) are done by chaining together a set of individual Transform objects. For continuous space models obtained via factory functions ([`get_sobol`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.factory.get_sobol) and [`Generators.BOTORCH_MODULAR`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.registry.Generators)), the following transforms will be applied by default, in this sequence: -* [`RemoveFixed`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.remove_fixed.RemoveFixed): Remove [`FixedParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.FixedParameter) from the search space. -* [`OrderedChoiceEncode`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.choice_encode.OrderedChoiceEncode): [`ChoiceParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter) with `is_ordered` set to `True` are encoded as a sequence of integers. -* [`OneHot`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.one_hot.OneHot): [`ChoiceParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.ChoiceParameter) with `is_ordered` set to `False` are one-hot encoded. -* [`IntToFloat`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.int_to_float.IntToFloat): Integer-valued [`RangeParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.RangeParameter) are converted to have float values. -* [`Log`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.log.Log): [`RangeParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.RangeParameter) with `log_scale` set to `True` are log transformed. -* [`UnitX`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.unit_x.UnitX): All float [`RangeParameters`](https://ax.readthedocs.io/en/latest/core.html#ax.core.parameter.RangeParameter) are mapped to `[0, 1]`. -* [`Derelativize`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.derelativize.Derelativize): Constraints relative to status quo are converted to constraints on raw values. -* [`StandardizeY`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.standardize_y.StandardizeY): The Y values for each metric are standardized (subtract mean, divide by standard deviation). - -Each transform defines both a forward and backwards transform. Arm parameters are passed through the forward transform before being sent along to the Model. The Model works entirely in the transformed space, and when new candidates are generated, they are passed through all of the backwards transforms so the [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) returns points in the original space. - -New transforms can be implemented by creating a subclass of [`Transform`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.base.Transform), which defines the interface for all transforms. There are separate methods for transforming the search space, optimization config, observation features, and observation data. Transforms that operate on only some aspects of the problem do not need to implement all methods, for instance, [`Log`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.log.Log) implements only [`transform_observation_features`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.log.Log.transform_observation_features) (to log transform the parameters), [`transform_search_space`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.log.Log.transform_search_space) (to log transform the search space bounds), and [`untransform_observation_features`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.transforms.log.Log.untransform_observation_features) (to apply the inverse transform). - -The (ordered) list of transforms to apply is an input to the Adapter, and so can easily be altered to add new transforms. It is important that transforms be applied in the right order. For instance, `StandardizeY` and `Winsorize` both transform the observed metric values. Applying them in the order `[StandardizeY, Winsorize]` could produce very different results than `[Winsorize, StandardizeY]`. In the former case, outliers would have already been included in the standardization (a procedure sensitive to outliers), and so the second approach that winsorizes first is preferred. - -See [the API reference](https://ax.readthedocs.io/en/latest/modelbridge.html#transforms) for the full collection of implemented transforms. - -## Implementing new models - -The structure of the modeling stack makes it easy to implement new models and use them inside Ax. There are two ways this might be done. - -### Using an existing Model interface - -The easiest way to implement a new model is if it can be adapted to one of the existing Model interfaces: ([`TorchModel`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel), [`DiscreteGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.discrete_base.DiscreteGenerator), or [`RandomGenerator`](https://ax.readthedocs.io/en/latest/models.html#ax.models.random.base.RandomGenerator)). The class definition provides the interface for each of the methods that should be implemented in order for Ax to be able to fully use the new model. Note however that not all methods must need be implemented to use some Ax functionality. For instance, an implementation of [`TorchModel`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel) that implements only [`fit`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel.fit) and [`predict`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel.predict) can be used to fit data and make plots in Ax; however, it will not be able to generate new candidates (requires implementing [`gen`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel.gen)) or be used with Ax's cross validation utility (requires implementing [`cross_validate`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel.cross_validate)). - -Once the new model has been implemented, it can be used in Ax with the corresponding [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) from the table above. For instance, suppose a new torch-based model was implemented as a subclass of [`TorchModel`](https://ax.readthedocs.io/en/latest/models.html#ax.models.torch_base.TorchModel). We can use that model in Ax like: - -```python -new_model_obj = NewModel(init_args) # An instance of the new model class -m = TorchAdapter( - experiment=experiment, - search_space=search_space, - data=data, - model=new_model_obj, - transforms=[UnitX, StandardizeY], # Include the desired set of transforms -) -``` - -The [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) object `m` can then be used with plotting and cross validation utilities exactly the same way as the built-in models. - -### Creating a new Model interface - -If none of the existing Model interfaces work are suitable for the new model type, then a new interface will have to be created. This involves two steps: creating the new model interface and creating the new model bridge. The new model bridge must be a subclass of [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) that implements `Adapter._fit`, `Adapter._predict`, `Adapter._gen`, and `Adapter._cross_validate`. The implementation of each of these methods will transform the Ax objects in the inputs into objects required for the interface with the new model type. The model bridge will then call out to the new model interface to do the actual modeling work. All of the Adapter/Model pairs in the table above provide examples of how this interface can be defined. The main key is that the inputs on the [`Adapter`](https://ax.readthedocs.io/en/latest/modelbridge.html#ax.modelbridge.base.Adapter) side are fixed, but those inputs can then be transformed in whatever way is desired for the downstream Model interface to be that which is most convenient for implementing the model. - - - - - diff --git a/docs/storage.md b/docs/storage.md deleted file mode 100644 index 2bb9693f42a..00000000000 --- a/docs/storage.md +++ /dev/null @@ -1,226 +0,0 @@ ---- -id: storage -title: Storage ---- -Ax has extensible support for saving and loading experiments in both JSON and SQL. The former is a good option for users who prefer lightweight, transportable storage, and the latter is better suited to production applications requiring a centralized, high-performance database. - -## JSON - -### Saving - -To save an experiment to JSON, specify the filepath: - -```py -from ax import Experiment -from ax.storage.json_store.save import save_experiment - -experiment = Experiment(...) -filepath = "experiments/experiment.json" -save_experiment(experiment, filepath) -``` - -The experiment (including attached data) will be serialized and saved to the specified file. - -### Updating - -To update a JSON-backed experiment, re-save to the same file. - -### Loading - -To load an experiment from JSON, specify the filepath again: - -```py -from ax.storage.json_store.load import load_experiment -experiment = load_experiment(filepath) -``` - -### Customizing - -If you add a custom [`Metric`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.metric) or [`Runner`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner) and want to ensure it is saved to JSON properly, create a [`RegistryBundle`](https://ax.readthedocs.io/en/latest/storage.html#ax.storage.registry_bundle.RegistryBundle), which bundles together encoding and decoding logic for use in the various save/load functions as follows: - -```py -from ax import Experiment, Metric, Runner, SearchSpace -from ax.storage.json_store.load import load_experiment -from ax.storage.json_store.save import save_experiment -from ax.storage.registry_bundle import RegistryBundle - -# Minimal custom runner/metric. -class MyRunner(Runner): - def run(): - pass - -class MyMetric(Metric): - pass - -# Minimal experiment must have a search space, plus our custom classes. -experiment = Experiment( - search_space=SearchSpace(parameters=[]), - runner=MyRunner(), - tracking_metrics=[MyMetric(name="my_metric")] -) - -# A RegistryBundle allows Ax to encode/decode the custom classes. -bundle = RegistryBundle( - runner_clss={MyRunner: None} - metric_clss={MyMetric: None}, -) - -filepath = "experiments/experiment.json" -save_experiment(experiment=experiment, filepath=filepath, encoder_registry=bundle.encoder_registry) - -loaded_experiment=load_experiment(filepath=filepath, decoder_registry=bundle.decoder_registry) -``` - -## SQL - -### Saving - -To save an experiment to SQL, first initialize a session by passing a URL pointing to your database. Such a URL is typically composed of a dialect (e.g. sqlite, mysql, postgresql), optional driver (DBAPI used to connect to the database; e.g. psycopg2 for postgresql), username, password, hostname, and database name. A more detailed explanation how to generate a URL can be found in the [SQLAlchemy docs](https://docs.sqlalchemy.org/en/13/core/engines.html#database-urls). - -```py -from ax.storage.sqa_store.db import init_engine_and_session_factory - -# url is of the form "dialect+driver://username:password@host:port/database" -init_engine_and_session_factory(url="postgresql+psycopg2://[USERNAME]:[PASSWORD]@localhost:[PORT]/[DATABASE]") -``` - -Then create all tables: - -```py -from ax.storage.sqa_store.db import get_engine, create_all_tables - -engine = get_engine() -create_all_tables(engine) -``` - -Then save your experiment: - -```py -from ax import Experiment -from ax.storage.sqa_store.save import save_experiment - -experiment = Experiment(...) -save_experiment(experiment) -``` - -The experiment (including attached data) will be saved to the corresponding tables. - -Alternatively, you can pass a [creator function](https://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine.params.creator) instead of a url to `init_engine_and_session_factory`: - -```py -from ax import Experiment -from ax.storage.sqa_store.db import init_engine_and_session_factory -from ax.storage.sqa_store.save import save_experiment - -init_engine_and_session_factory(creator=creator) -experiment = Experiment(...) -save_experiment(experiment) -``` - -### Updating - -To update a SQL-backed experiment, call `save_experiment(experiment)` again. Ax will determine what updates to perform. - -### Loading - -To load an experiment from SQL, specify the name: - -```py -from ax import Experiment -from ax.storage.sqa_store.db import init_engine_and_session_factory -from ax.storage.sqa_store.load import load_experiment - -init_engine_and_session_factory(url=dialect+driver://username:password@host:port/database) -experiment = load_experiment(experiment_name) -``` - -### Customizing - -**Adding a new metric or runner:** - -If you add a custom [`Metric`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.metric) or [`Runner`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner) and want to ensure it is saved to SQL properly, create a [`RegistryBundle`](https://ax.readthedocs.io/en/latest/storage.html#ax.storage.registry_bundle.RegistryBundle), which bundles together encoding and decoding logic for use in the various save/load functions as follows: - -```py -from ax import Experiment, RangeParameter, ParameterType -from ax.storage.sqa_store.load import load_experiment -from ax.storage.sqa_store.save import save_experiment -from ax.storage.sqa_store.sqa_config import SQAConfig - -# Minimal custom runner/metric. -class MyRunner(Runner): - def run(): - pass - -class MyMetric(Metric): - pass - -# Minimal experiment for SQA must have a name and a nonempty SearchSpace, plus our custom classes. -experiment = Experiment( - name="my_experiment", - search_space=SearchSpace( - parameters=[ - RangeParameter( - lower=0, - upper=1, - name="my_parameter", - parameter_type=ParameterType.FLOAT - ) - ] - ), - runner=MyRunner(), - tracking_metrics=[MyMetric(name="my_metric")], -) - -# The RegistryBundle contains our custom classes. -bundle = RegistryBundle( - metric_clss={MyMetric: None}, - runner_clss={MyRunner: None} -) - -# Abstract this into a SQAConfig as follows, to make loading/saving a bit simpler. -sqa_config = SQAConfig( - json_encoder_registry=bundle.encoder_registry, - json_decoder_registry=bundle.decoder_registry, - metric_registry=bundle.metric_registry, - runner_registry=bundle.runner_registry, -) - -save_experiment(experiment, config=sqa_config) - -loaded_experiment = load_experiment(experiment_name="my_experiment", config=sqa_config) -``` - -**Specifying experiment types:** - -If you choose to add types to your experiments, create an Enum mapping experiment types to integer representations, pass this Enum to a custom instance of `SQAConfig`, and then pass the config to `sqa_store.save`: - -```py -from ax import Experiment -from ax.storage.sqa_store.save import save_experiment -from ax.storage.sqa_store.sqa_config import SQAConfig -from enum import Enum - -class ExperimentType(Enum): - DEFAULT: 0 - -config = SQAConfig(experiment_type_enum=ExperimentType) -save_experiment(experiment, config=config) -``` - -**Specifying generator run types:** - -If you choose to add types to your generator runs (beyond the existing `status_quo` type), create an enum mapping generator run types to integer representations, pass this enum to a custom instance of `SQAConfig`, and then pass the config to `sqa_store.save`: - -```py -from ax import Experiment -from ax.storage.sqa_store.save import save_experiment -from ax.storage.sqa_store.sqa_config import SQAConfig -from enum import Enum - -class GeneratorRunType(Enum): - DEFAULT: 0 - STATUS_QUO: 1 - -config = SQAConfig(generator_run_type_enum=GeneratorRunType) -save_experiment(experiment, config=config) -``` diff --git a/docs/trial-evaluation.md b/docs/trial-evaluation.md deleted file mode 100644 index 5a9960a747a..00000000000 --- a/docs/trial-evaluation.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -id: trial-evaluation -title: Trial Evaluation ---- -There are 3 paradigms for evaluating [trials](glossary.md#trial) in Ax. Note: -ensure that you are using the -[appropriate type of trials](/docs/core#trial-vs-batch-trial) for your -experiment, before proceeding to trial evaluation. - -## [RECOMMENDED] Service API - -The Service API [`AxClient`](https://ax.readthedocs.io/en/latest/service.html#module-ax.service.ax_client) -exposes -[`get_next_trial`](https://ax.readthedocs.io/en/latest/service.html#ax.service.ax_client.AxClient.get_next_trial), -as well as -[`complete_trial`](https://ax.readthedocs.io/en/latest/service.html#ax.service.ax_client.AxClient.complete_trial). -The user is responsible for evaluating the trial parameters and passing the -results to -[`complete_trial`](https://ax.readthedocs.io/en/latest/service.html#ax.service.ax_client.AxClient.complete_trial). - -```python -... -for i in range(25): - parameters, trial_index = ax_client.get_next_trial() - raw_data = evaluate_trial(parameters) - ax_client.complete_trial(trial_index=trial_index, raw_data=raw_data) -``` - -### Evaluating Trial Parameters - -In the Service API, the -[`complete_trial`](https://ax.readthedocs.io/en/latest/service.html#ax.service.ax_client.AxClient.complete_trial) -method requires `raw_data` evaluated from the parameters suggested by -[`get_next_trial`](https://ax.readthedocs.io/en/latest/service.html#ax.service.ax_client.AxClient.get_next_trial). - -The data can be in the form of: - -- A dictionary of metric names to tuples of (mean and [SEM](glossary.md#sem)) -- A single (mean, SEM) tuple -- A single mean - -In the second case, Ax will assume that the mean and the SEM are for the -experiment objective (if the evaluations are noiseless, simply provide an SEM of -0.0). In the third case, Ax will assume that observations are corrupted by -Gaussian noise with zero mean and unknown SEM, and infer the SEM from the data -(this is equivalent to specifying an SEM of None). Note that if the observation -noise is non-zero (either provided or inferred), the "best arm" suggested by Ax -may not always be the one whose evaluation returned the best observed value (as -the "best arm" is selected based on the model-predicted mean). - -For example, this evaluation function computes mean and SEM for -[Hartmann6](https://www.sfu.ca/~ssurjano/hart6.html) function and for the -L2-norm. We return `0.0` for SEM since the observations are noiseless: - -```python -from ax.utils.measurement.synthetic_functions import hartmann6 -def hartmann_evaluation_function(parameterization): - x = np.array([parameterization.get(f"x{i+1}") for i in range(6)]) - # Standard error is 0 since we are computing a synthetic function. - return {"hartmann6": (hartmann6(x), 0.0), "l2norm": (np.sqrt((x ** 2).sum()), 0.0)} -``` - -This function computes just the objective mean and SEM, assuming the -[Branin](https://www.sfu.ca/~ssurjano/branin.html) function is the objective of -the experiment: - -```python -from ax.utils.measurement.synthetic_functions import branin -def branin_evaluation_function(parameterization): - # Standard error is 0 since we are computing a synthetic function. - return (branin(parameterization.get("x1"), parameterization.get("x2")), 0.0) -``` - -Alternatively, if the SEM is unknown, we could use the following form: - -```python -lambda parameterization: branin(parameterization.get("x1"), parameterization.get("x2")) -``` - -This is equivalent to returning `None` for the SEM: - -```python -from ax.utils.measurement.synthetic_functions import branin -def branin_evaluation_function_unknown_sem(parameterization): - return (branin(parameterization.get("x1"), parameterization.get("x2")), None) -``` - -## Loop API - -The [`optimize`](https://ax.readthedocs.io/en/latest/service.html#ax.service.managed_loop.optimize) function -requires an `evaluation_function`, which accepts parameters and returns raw data -in the format described above. It can also accept a `weight` parameter, a -nullable `float` representing the fraction of available data on which the -parameterization should be evaluated. For example, this could be a downsampling -rate in case of hyperparameter optimization (what portion of data the ML model -should be trained on for evaluation) or the percentage of users exposed to a -given configuration in A/B testing. This weight is not used in unweighted -experiments and defaults to `None`. - -## Developer API - -The Developer API is supported by the -[`Experiment`](https://ax.readthedocs.io/en/latest/core.html#module-ax.core.experiment) class. In this -paradigm, the user specifies: - -- [`Runner`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner): Defines how to deploy the - experiment. -- List of [`Metrics`](https://ax.readthedocs.io/en/latest/core.html#ax.core.metric.Metric): Each defines how - to compute/fetch data for a given objective or outcome. - -The experiment requires a `generator_run` to create a new trial or batch trial. -A generator run can be generated by a model. The trial then has its own `run` -and `mark_complete` methods. - -```python -... -sobol = Generators.SOBOL(exp.search_space) -for i in range(5): - trial = exp.new_trial(generator_run=sobol.gen(1)) - trial.run() - trial.mark_completed() - -for i in range(15): - gpei = Generators.BOTORCH_MODULAR(experiment=exp, data=exp.fetch_data()) - generator_run = gpei.gen(1) - trial = exp.new_trial(generator_run=generator_run) - trial.run() - trial.mark_completed() -``` - -### Custom Metrics - -Similar to a trial evaluation in the Service API, a custom metric computes a -mean and SEM for each arm of a trial. However, the metric's `fetch_trial_data` -method will be called automatically by the experiment's -[`fetch_data`](https://ax.readthedocs.io/en/latest/core.html#ax.core.base_trial.BaseTrial.fetch_data) method. -If there are multiple objectives or outcomes that need to be optimized for, each -needs its own metric. - -```python -class MyMetric(Metric): - def fetch_trial_data(self, trial): - records = [] - for arm_name, arm in trial.arms_by_name.items(): - params = arm.parameters - records.append({ - "arm_name": arm_name, - "metric_name": self.name, - "mean": self.foo(params["x1"], params["x2"]), - "sem": 0.0, - "trial_index": trial.index, - }) - return Data(df=pd.DataFrame.from_records(records)) -``` - -### Adding Your Own Runner - -In order to control how the experiment is deployed, you can add your own runner. -To do so, subclass [`Runner`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner) and -implement the [`run`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner.run) method and -[`staging_required`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner.staging_required) -property. - -The [`run`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner.run) method accepts a -[`Trial`](https://ax.readthedocs.io/en/latest/core.html#ax.core.trial.Trial) and returns a JSON-serializable -dictionary of any necessary tracking info to fetch data later from this external -system. A unique identifier or name for this trial in the external system should -be stored in this dictionary with the key `"name"`, and this can later be -accessed via `trial.deployed_name`. - -The -[`staging_required`](https://ax.readthedocs.io/en/latest/core.html#ax.core.runner.Runner.staging_required) -indicates whether the trial requires an intermediate staging period before -evaluation begins. This property returns False by default. - -An example implementation is given below: - -```python -from foo_system import deploy_to_foo -from ax import Runner - -class FooRunner(Runner): - def __init__(self, foo_param): - self.foo_param = foo_param - - def run(self, trial): - name_to_params = { - arm.name: arm.parameters for arm in trial.arms - } - run_metadata = deploy_to_foo(self.foo_param, name_to_params) - return run_metadata - - @property - def staging_required(self): - return False -``` - -This is then invoked by calling: - -```python -exp = Experiment(...) -exp.runner = FooRunner(foo_param="foo") -trial = exp.new_batch_trial() - -# This calls runner's run method and stores metadata output -# in the trial.run_metadata field -trial.run() -``` diff --git a/docs/tutorials/index.mdx b/docs/tutorials/index.mdx index 7700d3dd682..84b42953ac0 100644 --- a/docs/tutorials/index.mdx +++ b/docs/tutorials/index.mdx @@ -4,37 +4,3 @@ sidebar_label: Overview --- Here you can learn about the structure and applications of Ax from examples. - -**Our 3 API tutorials:** [Loop](/docs/tutorials/gpei_hartmann_loop), [Service](/docs/tutorials/gpei_hartmann_service), and [Developer](/docs/tutorials/gpei_hartmann_developer) — are a good place to start. Each tutorial showcases optimization on a constrained Hartmann6 problem, with the Loop API being the simplest to use and the Developer API being the most customizable. - -**NOTE: We recommend the [Service API](/docs/tutorials/gpei_hartmann_service) for the vast majority of use cases.** This API provides an ideal balance of flexibility and simplicity for most users, and we are in the process of consolidating Ax usage around it more formally. - -**Further, we explore the different components available in Ax in more detail.** {' '} The components explored below serve to set up an experiment, visualize its results, configure an optimization algorithm, run an entire experiment in a managed closed loop, and combine BoTorch components in Ax in a modular way. - -* [Visualizations](/docs/tutorials/visualizations) illustrates the different plots available to view and understand your results. - -* [GenerationStrategy](/docs/tutorials/generation_strategy) steps through setting up a way to specify the optimization algorithm (or multiple). A `GenerationStrategy` is an important component of Service API and the `Scheduler`. - -* [Scheduler](/docs/tutorials/scheduler) demonstrates an example of a managed and configurable closed-loop optimization, conducted in an asyncronous fashion. `Scheduler` is a manager abstraction in Ax that deploys trials, polls them, and uses their results to produce more trials. - -* [Modular `BoTorchModel`](/docs/tutorials/modular_botax) walks though a new beta-feature — an improved interface between Ax and{' '} [BoTorch](https://botorch.org/) — which allows for combining arbitrary BoTorch components like `AcquisitionFunction`, `Model`, `AcquisitionObjective` etc. into a single{' '} `Model` in Ax. - -**Our other Bayesian Optimization tutorials include:** - -* [Hyperparameter Optimization for PyTorch](/docs/tutorials/tune_cnn_service) provides an example of hyperparameter optimization with Ax and integration with an external ML library. - -* [Hyperparameter Optimization on SLURM via SubmitIt](/docs/tutorials/submitit) shows how to use the AxClient to schedule jobs and tune hyperparameters on a Slurm cluster. - -* [Multi-Task Modeling](/docs/tutorials/multi_task) illustrates multi-task Bayesian Optimization on a constrained synthetic Hartmann6 problem. - -* [Multi-Objective Optimization](/docs/tutorials/multiobjective_optimization) demonstrates Multi-Objective Bayesian Optimization on a synthetic Branin-Currin test function. - -* [Trial-Level Early Stopping](/docs/tutorials/early_stopping) shows how to use trial-level early stopping on an ML training job to save resources and iterate faster. - -{/* * [Benchmarking Suite](/docs/tutorials/benchmarking_suite_example) demonstrates how to use the Ax benchmarking suite to compare Bayesian Optimization algorithm performances and generate a comparative report with visualizations. */} - -For experiments done in a real-life setting, refer to our field experiments tutorials: - -* [Bandit Optimization](/docs/tutorials/factorial) shows how Thompson Sampling can be used to intelligently reallocate resources to well-performing configurations in real-time. - -* [Human-in-the-Loop Optimization](/docs/tutorials/human_in_the_loop) walks through manually influencing the course of optimization in real-time. diff --git a/tutorials/ask_tell/ask_tell.ipynb b/tutorials/ask_tell/ask_tell.ipynb new file mode 100644 index 00000000000..6123eb6923b --- /dev/null +++ b/tutorials/ask_tell/ask_tell.ipynb @@ -0,0 +1,333 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ask-tell Optimization with Ax\n", + "\n", + "We often encounter complex optimization problems in which we wish to tune the values of some parameters to improve metric performance, but have little to no knowledge of their effect on each other.\n", + "We call this class of problems “black-box optimization” and it appears across many disciplines including machine learning, robotics, materials science, and chemistry.\n", + "These problems present a unique challenge, and can be made even more challenging if evaluations are expensive to conduct, time-consuming, or noisy.\n", + "\n", + "We can use Ax to efficiently conduct an experiment in which we \"ask\" for candidate points to evaluate, \"tell\" Ax the results, and repeat.\n", + "We'll uses Ax's `Client`, a tool for managing the state of our experiment, and we'll learn how to define an optimization problem, configure an experiment, run trials, analyze results, and persist the experiment for later use using the `Client`.\n", + "\n", + "Because Ax is a black box optimizer, we can use it to optimize any arbitrary function. In this example we will minimize the [Hartmann6 function](https://www.sfu.ca/~ssurjano/hart6.html), a complicated 6-dimensional function with multiple local minima -- a challenging test case for optimization algorithms that is commonly used in the global optimization literature.\n", + "Looking at its analytic form we can see that it would be incredibly challenging to efficiently find the global minimum either by manual trial-and-error or traditional design of experiments like grid-search or random-search.\n", + "\n", + "$$\n", + "f(\\mathbf{x})=-\\sum_{i=1}^4 \\alpha_i \\exp \\left(-\\sum_{j=1}^6 A_{i j}\\left(x_j-P_{i j}\\right)^2\\right)\n", + "$$\n", + "\n", + "where\n", + "\n", + "$$\\alpha=(1.0,1.2,3.0,3.2)^T$$\n", + "\n", + "$$\n", + "\\mathbf{A}=\\left(\\begin{array}{cccccc}10 & 3 & 17 & 3.50 & 1.7 & 8 \\\\ 0.05 & 10 & 17 & 0.1 & 8 & 14 \\\\ 3 & 3.5 & 1.7 & 10 & 17 & 8 \\\\ 17 & 8 & 0.05 & 10 & 0.1 & 14\\end{array}\\right)\n", + "$$\n", + "\n", + "\n", + "$$\n", + "\\mathbf{P}=10^{-4}\\left(\\begin{array}{cccccc}1312 & 1696 & 5569 & 124 & 8283 & 5886 \\\\ 2329 & 4135 & 8307 & 3736 & 1004 & 9991 \\\\ 2348 & 1451 & 3522 & 2883 & 3047 & 6650 \\\\ 4047 & 8828 & 8732 & 5743 & 1091 & 381\\end{array}\\right)\n", + "$$\n", + "\n", + "\n", + "### Learning Objectives\n", + "- Understand the basic concepts of black box optimization\n", + "- Learn how to define an optimization problem using Ax\n", + "- Configure and run an experiment using Ax's `Client`\n", + "- Analyze the results of the optimization\n", + "\n", + "### Prerequisites\n", + "\n", + "* Familiarity with Python and basic programming concepts\n", + "* Understanding of adaptive experimentation and Bayesian optimization (see [Introduction to Adaptive Experimentation](#) and [Introduction to Bayesian Optimization](#))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 1: Import Necessary Modules\n", + "\n", + "First, ensure you have all the necessary imports:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from ax.preview.api.client import Client\n", + "from ax.preview.api.configs import (\n", + " ExperimentConfig,\n", + " RangeParameterConfig,\n", + " ParameterType,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 2: Initialize the Client\n", + "\n", + "Create an instance of the `Client` to manage the state of your experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "client = Client()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 3: Configure the Experiment\n", + "\n", + "The `Client` instance can be configured with a series of `Config`s that define how the experiment will be run.\n", + "\n", + "The Hartmann6 problem is usually evaluated on the hypercube $x_i \\in (0, 1)$, so we will define six identical `RangeParameterConfig`s with these bounds and add these to an `ExperimentConfig` along with other metadata about the experiment.\n", + "\n", + "You may specify additional features like parameter constraints to further refine the search space and parameter scaling to help navigate parameters with nonuniform effects.\n", + "For more on configuring experiments, see this [recipe](#)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define six float parameters x1, x2, x3, ... for the Hartmann6 function\n", + "parameters = [\n", + " RangeParameterConfig(\n", + " name=f\"x{i + 1}\", parameter_type=ParameterType.FLOAT, bounds=(0, 1)\n", + " )\n", + " for i in range(6)\n", + "]\n", + "\n", + "# Create an experiment configuration\n", + "experiment_config = ExperimentConfig(\n", + " name=\"hartmann6_experiment\",\n", + " parameters=parameters,\n", + " # The following arguments are optional\n", + " description=\"Optimization of the Hartmann6 function\",\n", + " owner=\"developer\",\n", + ")\n", + "\n", + "# Apply the experiment configuration to the client\n", + "client.configure_experiment(experiment_config=experiment_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 4: Configure Optimization\n", + "Now, we must configure the objective for this optimization, which we do using `Client.configure_optimization`.\n", + "This method expects a string `objective`, an expression containing either a single metric to maximize, a linear combination of metrics to maximize, or a tuple or multiple metrics to jointly maximize.\n", + "These expressions are parsed using [SymPy](https://www.sympy.org/en/index.html). For example:\n", + "* `\"score\"` would direct Ax to maximize a metric named score\n", + "* `\"-loss\"` would direct Ax to Ax to minimize a metric named loss\n", + "* `\"task_0 + 0.5 * task_1\"` would direct Ax to maximize the sum of two task scores, downweighting task_1 by a factor of 0.5\n", + "* `\"score, -flops\"` would direct Ax to simultaneously maximize score while minimizing flops\n", + "\n", + "For more information, see the [string parsing recipe](#)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "metric_name = \"hartmann6\" # this name is used during the optimization loop in Step 5\n", + "objective = f\"-{metric_name}\" # minimization is specified by the negative sign\n", + "\n", + "client.configure_optimization(objective=objective)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 5: Run Trials\n", + "Here, we will configure the ask-tell loop.\n", + "\n", + "We begin by defining our Hartmann6 function as written above.\n", + "Remember, this is just an example problem and any Python function can be substituted here.\n", + "\n", + "Then we will iteratively call `client.get_next_trials` to \"ask\" Ax for a parameterization to evaluate, call `hartmann6` using those parameters, and \"tell\" Ax the result using `client.complete_trial`.\n", + "\n", + "This loop will run multiple trials to optimize the function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Hartmann6 function\n", + "def hartmann6(x1, x2, x3, x4, x5, x6):\n", + " alpha = np.array([1.0, 1.2, 3.0, 3.2])\n", + " A = np.array([\n", + " [10, 3, 17, 3.5, 1.7, 8],\n", + " [0.05, 10, 17, 0.1, 8, 14],\n", + " [3, 3.5, 1.7, 10, 17, 8],\n", + " [17, 8, 0.05, 10, 0.1, 14]\n", + " ])\n", + " P = 10**-4 * np.array([\n", + " [1312, 1696, 5569, 124, 8283, 5886],\n", + " [2329, 4135, 8307, 3736, 1004, 9991],\n", + " [2348, 1451, 3522, 2883, 3047, 6650],\n", + " [4047, 8828, 8732, 5743, 1091, 381]\n", + " ])\n", + "\n", + " outer = 0.0\n", + " for i in range(4):\n", + " inner = 0.0\n", + " for j, x in enumerate([x1, x2, x3, x4, x5, x6]):\n", + " inner += A[i, j] * (x - P[i, j])**2\n", + " outer += alpha[i] * np.exp(-inner)\n", + " return -outer\n", + "\n", + "hartmann6(0.1, 0.45, 0.8, 0.25, 0.552, 1.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Optimization Loop\n", + "\n", + "Having configured the experiment and optimization settings and defined the Python function, proceed with the optimization loop, where several trials are run sequentially." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Number of trials to run\n", + "\n", + "num_trials = 30\n", + "\n", + "# Run trials\n", + "\n", + "for _ in range(num_trials):\n", + " trials = client.get_next_trials(\n", + " maximum_trials=1\n", + " ) # We will request just one trial at a time in this example\n", + " for trial_index, parameters in trials.items():\n", + " x1 = parameters[\"x1\"]\n", + " x2 = parameters[\"x2\"]\n", + " x3 = parameters[\"x3\"]\n", + " x4 = parameters[\"x4\"]\n", + " x5 = parameters[\"x5\"]\n", + " x6 = parameters[\"x6\"]\n", + "\n", + " result = hartmann6(x1, x2, x3, x4, x5, x6)\n", + "\n", + " # Set raw_data as a dictionary with metric names as keys and results as values\n", + "\n", + " raw_data = {metric_name: result}\n", + "\n", + " # Complete the trial with the result\n", + "\n", + " client.complete_trial(trial_index=trial_index, raw_data=raw_data)\n", + " print(f\"Completed trial {trial_index} with {raw_data=}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 6: Analyze Results\n", + "\n", + "After running trials, you can analyze the results.\n", + "Most commonly this means extracting the parameterization from the best performing trial you conducted." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "best_parameters, prediction, index, name = client.get_best_parameterization()\n", + "print(\"Best Parameters:\", best_parameters)\n", + "print(\"Prediction (mean, variance):\", prediction)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 7: Compute Analyses\n", + "\n", + "Ax can also produce a number of analyses to help interpret the results of the experiment via `client.compute_analyses`.\n", + "These analyses can be anything from dataframes to markdown messages to Plotly figures, and they help us gain a deeper understanding of our experiment.\n", + "Users can manually select which analyses to run, or can allow Ax to select which would be most relevant.\n", + "In this case Ax selects the following:\n", + "* **Parrellel Coordinates Plot** shows which parameterizations were evaluated and what metric values were observed -- this is useful for getting a high level overview of how thoroughly the search space was explored and which regions tend to produce which outcomes\n", + "* **Interaction Analysis Plot** shows which parameters have the largest affect on the function and plots the most important parameters as 1 or 2 dimensional surfaces\n", + "* **Summary** lists all trials generated along with their parameterizations, observations, and miscellaneous metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "client.compute_analyses(display=True) # By default Ax will display the AnalysisCards produced by compute_analyses" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "This tutorial demonstrates how to use Ax's `Client` for ask-tell optimization of Python functions using the Hartmann6 function as an example.\n", + "You can adjust the function and parameters to suit your specific optimization problem." + ] + } + ], + "metadata": { + "fileHeader": "", + "fileUid": "9dfaed34-de4d-42ed-8755-25343d677ef0", + "isAdHoc": false, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/early_stopping/early_stopping.ipynb b/tutorials/early_stopping/early_stopping.ipynb index 26b27fcf942..1e8d6e54036 100644 --- a/tutorials/early_stopping/early_stopping.ipynb +++ b/tutorials/early_stopping/early_stopping.ipynb @@ -1,681 +1,461 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "12fe3797", - "metadata": {}, - "source": [ - "## Trial-level early stopping in Ax\n", - "\n", - "This tutorial illustrates how to add a trial-level early stopping strategy to an Ax hyper-parameter optimization (HPO) loop. The goal of trial-level early stopping is to monitor the results of expensive evaluations and terminate those that are unlikely to produce promising results, freeing up resources to explore more configurations.\n", - "\n", - "Most of this tutorial is adapted from the [PyTorch Ax Multiobjective NAS Tutorial](https://pytorch.org/tutorials/intermediate/ax_multiobjective_nas_tutorial.html). The training job is different from the original in that we do not optimize `batch_size` or `epochs`. This was done for illustrative purposes, as each validation curve now has the same number of points. The companion training file `mnist_train_nas.py` has also been altered to log to Tensorboard during training.\n", - "\n", - "NOTE: Although the original NAS tutorial is for a multi-objective problem, this tutorial focuses on a single objective (validation accuracy) problem. Early stopping currently does not support \\\"true\\\" multi-objective stopping, although one can use [logical compositions of early stopping strategies](https://github.com/facebook/Ax/blob/main/ax/early_stopping/strategies/logical.py) to target multiple objectives separately. Early stopping for the multi-objective case is currently a work in progress." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "779ea790", - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cb953f30", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "from pathlib import Path\n", - "\n", - "import torchx\n", - "\n", - "from ax.core import Experiment, Objective, ParameterType, RangeParameter, SearchSpace\n", - "from ax.core.optimization_config import OptimizationConfig\n", - "\n", - "from ax.early_stopping.strategies import PercentileEarlyStoppingStrategy\n", - "from ax.metrics.tensorboard import TensorboardMetric\n", - "\n", - "from ax.generation_strategy.dispatch_utils import choose_generation_strategy\n", - "\n", - "from ax.runners.torchx import TorchXRunner\n", - "\n", - "from ax.service.scheduler import Scheduler, SchedulerOptions\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "\n", - "from tensorboard.backend.event_processing import plugin_event_multiplexer as event_multiplexer\n", - "\n", - "from torchx import specs\n", - "from torchx.components import utils\n", - "\n", - "from matplotlib import pyplot as plt\n", - "\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8a7bd328", - "metadata": {}, - "outputs": [], - "source": [ - "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "fe2cf6fe", - "metadata": {}, - "source": [ - "## Defining the TorchX App\n", - "\n", - "Our goal is to optimize the PyTorch Lightning training job defined in\n", - "[mnist_train_nas.py](https://github.com/pytorch/tutorials/tree/master/intermediate_source/mnist_train_nas.py)_.\n", - "To do this using TorchX, we write a helper function that takes in\n", - "the values of the architcture and hyperparameters of the training\n", - "job and creates a [TorchX AppDef](https://pytorch.org/torchx/latest/basics.html)_\n", - "with the appropriate settings.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e21d309", - "metadata": {}, - "outputs": [], - "source": [ - "if SMOKE_TEST:\n", - " epochs = 3\n", - "else:\n", - " epochs = 10" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b423923c", - "metadata": {}, - "outputs": [], - "source": [ - "def trainer(\n", - " log_path: str,\n", - " hidden_size_1: int,\n", - " hidden_size_2: int,\n", - " learning_rate: float,\n", - " dropout: float,\n", - " trial_idx: int = -1,\n", - ") -> specs.AppDef:\n", - "\n", - " # define the log path so we can pass it to the TorchX AppDef\n", - " if trial_idx >= 0:\n", - " log_path = Path(log_path).joinpath(str(trial_idx)).absolute().as_posix()\n", - "\n", - " batch_size = 32\n", - "\n", - " return utils.python(\n", - " # command line args to the training script\n", - " \"--log_path\",\n", - " log_path,\n", - " \"--hidden_size_1\",\n", - " str(hidden_size_1),\n", - " \"--hidden_size_2\",\n", - " str(hidden_size_2),\n", - " \"--learning_rate\",\n", - " str(learning_rate),\n", - " \"--epochs\",\n", - " str(epochs),\n", - " \"--dropout\",\n", - " str(dropout),\n", - " \"--batch_size\",\n", - " str(batch_size),\n", - " # other config options\n", - " name=\"trainer\",\n", - " script=\"tutorials/early_stopping/mnist_train_nas.py\",\n", - " image=torchx.version.TORCHX_IMAGE,\n", - " )" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "65f7011d", - "metadata": {}, - "source": [ - "## Setting up the Runner\n", - "\n", - "Ax’s [Runner](https://ax.dev/api/core.html#ax.core.runner.Runner)\n", - "abstraction allows writing interfaces to various backends.\n", - "Ax already comes with Runner for TorchX, so we just need to\n", - "configure it. For the purpose of this tutorial, we run jobs locally\n", - "in a fully asynchronous fashion. In order to launch them on a cluster, you can instead specify a\n", - "different TorchX scheduler and adjust the configuration appropriately.\n", - "For example, if you have a Kubernetes cluster, you just need to change the\n", - "scheduler from ``local_cwd`` to ``kubernetes``.\n", - "\n", - "The training job launched by this runner will log partial results to Tensorboard, which will then be monitored by the early stopping strategy. We will show how this is done using an Ax \n", - "[TensorboardMetric](https://ax.dev/api/metrics.html#module-ax.metrics.tensorboard) below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "998e5835", - "metadata": {}, - "outputs": [], - "source": [ - "# Make a temporary dir to log our results into\n", - "log_dir = tempfile.mkdtemp()\n", - "\n", - "ax_runner = TorchXRunner(\n", - " tracker_base=\"/tmp/\",\n", - " component=trainer,\n", - " # NOTE: To launch this job on a cluster instead of locally you can\n", - " # specify a different scheduler and adjust args appropriately.\n", - " scheduler=\"local_cwd\",\n", - " component_const_params={\"log_path\": log_dir},\n", - " cfg={},\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2fec7495", - "metadata": {}, - "source": [ - "## Setting up the SearchSpace\n", - "\n", - "First, we define our search space. Ax supports both range parameters\n", - "of type integer and float as well as choice parameters which can have\n", - "non-numerical types such as strings.\n", - "We will tune the hidden sizes, learning rate, and dropout parameters." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cf6f869f", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = [\n", - " # NOTE: In a real-world setting, hidden_size_1 and hidden_size_2\n", - " # should probably be powers of 2, but in our simple example this\n", - " # would mean that num_params can't take on that many values, which\n", - " # in turn makes the Pareto frontier look pretty weird.\n", - " RangeParameter(\n", - " name=\"hidden_size_1\",\n", - " lower=16,\n", - " upper=128,\n", - " parameter_type=ParameterType.INT,\n", - " log_scale=True,\n", - " ),\n", - " RangeParameter(\n", - " name=\"hidden_size_2\",\n", - " lower=16,\n", - " upper=128,\n", - " parameter_type=ParameterType.INT,\n", - " log_scale=True,\n", - " ),\n", - " RangeParameter(\n", - " name=\"learning_rate\",\n", - " lower=1e-4,\n", - " upper=1e-2,\n", - " parameter_type=ParameterType.FLOAT,\n", - " log_scale=True,\n", - " ),\n", - " RangeParameter(\n", - " name=\"dropout\",\n", - " lower=0.0,\n", - " upper=0.5,\n", - " parameter_type=ParameterType.FLOAT,\n", - " ),\n", - "]\n", - "\n", - "search_space = SearchSpace(\n", - " parameters=parameters,\n", - " # NOTE: In practice, it may make sense to add a constraint\n", - " # hidden_size_2 <= hidden_size_1\n", - " parameter_constraints=[],\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "a8005e80", - "metadata": {}, - "source": [ - "## Setting up Metrics\n", - "\n", - "Ax has the concept of a Metric that defines properties of outcomes and how observations are obtained for these outcomes. This allows e.g. encodig how data is fetched from some distributed execution backend and post-processed before being passed as input to Ax.\n", - "\n", - "We will optimize the validation accuracy, which is a `TensorboardMetric` that points to the logging directory assigned above. Note that we have set `is_available_while_running`, allowing for the metric to be queried as the trial progresses. This is critical for the early stopping strategy to monitor partial results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0775a96e", - "metadata": {}, - "outputs": [], - "source": [ - "class MyTensorboardMetric(TensorboardMetric):\n", - "\n", - " # NOTE: We need to tell the new Tensorboard metric how to get the id /\n", - " # file handle for the tensorboard logs from a trial. In this case\n", - " # our convention is to just save a separate file per trial in\n", - " # the pre-specified log dir.\n", - " def _get_event_multiplexer_for_trial(self, trial):\n", - " mul = event_multiplexer.EventMultiplexer(max_reload_threads=20)\n", - " mul.AddRunsFromDirectory(Path(log_dir).joinpath(str(trial.index)).as_posix(), None)\n", - " mul.Reload()\n", - "\n", - " return mul\n", - "\n", - " # This indicates whether the metric is queryable while the trial is\n", - " # still running. This is required for early stopping to monitor the\n", - " # progress of the running trial.ArithmeticError\n", - " @classmethod\n", - " def is_available_while_running(cls):\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a5c5a7d0", - "metadata": {}, - "outputs": [], - "source": [ - "val_acc = MyTensorboardMetric(\n", - " name=\"val_acc\",\n", - " tag=\"val_acc\",\n", - " lower_is_better=False,\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "d4f3ba5d", - "metadata": {}, - "source": [ - "## Setting up the OptimizationConfig\n", - "\n", - "The `OptimizationConfig` specifies the objective for Ax to optimize." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ada66cf3", - "metadata": {}, - "outputs": [], - "source": [ - "opt_config = OptimizationConfig(\n", - " objective=Objective(\n", - " metric=val_acc,\n", - " minimize=False,\n", - " )\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "57aa9cf7", - "metadata": {}, - "source": [ - "## Defining an Early Stopping Strategy\n", - "\n", - "A `PercentileEarlyStoppingStrategy` is a simple method that stops a trial if its performance falls below a certain percentile of other trials at the same step (e.g., when `percentile_threshold` is 50, at a given point in time, if a trial ranks in the bottom 50% of trials, it is stopped). \n", - "- We make use of `normalize_progressions` which normalizes the progression column (e.g. timestamp, epochs, training data used) to be in [0, 1]. This is useful because one doesn't need to know the maximum progression values of the curve (which might be, e.g., the total number of data points in the training dataset).\n", - "- The `min_progression` parameter specifies that trials should only be considered for stopping if the latest progression value is greater than this threshold.\n", - "- The `min_curves` parameter specifies the minimum number of completed curves (i.e., fully completed training jobs) before early stopping will be considered. This should be larger than zero if `normalize_progression` is used. In general, we want a few completed curves to have a baseline for comparison.\n", - "\n", - "Note that `PercentileEarlyStoppingStrategy` does not make use of learning curve modeling or prediction. More sophisticated model-based methods will be available in future versions of Ax." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "949e8ab5", - "metadata": {}, - "outputs": [], - "source": [ - "percentile_early_stopping_strategy = PercentileEarlyStoppingStrategy(\n", - " # stop if in bottom 70% of runs at the same progression\n", - " percentile_threshold=70,\n", - " # the trial must have passed `min_progression` steps before early stopping is initiated\n", - " # note that we are using `normalize_progressions`, so this is on a scale of [0, 1]\n", - " min_progression=0.3,\n", - " # there must be `min_curves` completed trials and `min_curves` trials reporting data in\n", - " # order for early stopping to be applicable\n", - " min_curves=5,\n", - " # specify, e.g., [0, 1] if the first two trials should never be stopped\n", - " trial_indices_to_ignore=None,\n", - " normalize_progressions=True,\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2665ca93", - "metadata": {}, - "source": [ - "## Creating the Ax Experiment\n", - "\n", - "In Ax, the Experiment object is the object that stores all the information about the problem setup." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "12849b31", - "metadata": {}, - "outputs": [], - "source": [ - "experiment = Experiment(\n", - " name=\"torchx_mnist\",\n", - " search_space=search_space,\n", - " optimization_config=opt_config,\n", - " runner=ax_runner,\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "49a4ed0e", - "metadata": {}, - "source": [ - "## Choosing the GenerationStrategy\n", - "\n", - "A [GenerationStrategy](https://ax.dev/api/modelbridge.html#ax.generation_strategy.generation_strategy.GenerationStrategy)\n", - "is the abstract representation of how we would like to perform the\n", - "optimization. While this can be customized (if you’d like to do so, see\n", - "[this tutorial](https://ax.dev/tutorials/generation_strategy.html)),\n", - "in most cases Ax can automatically determine an appropriate strategy\n", - "based on the search space, optimization config, and the total number\n", - "of trials we want to run.\n", - "\n", - "Typically, Ax chooses to evaluate a number of random configurations\n", - "before starting a model-based Bayesian Optimization strategy.\n", - "\n", - "We remark that in Ax, generation strategies and early stopping strategies are separate, a design decision motivated by ease-of-use. However, we should acknowledge that jointly considering generation and stopping using a single strategy would likely be the \"proper\" formulation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e38d0237", - "metadata": {}, - "outputs": [], - "source": [ - "if SMOKE_TEST:\n", - " total_trials = 6\n", - "else:\n", - " total_trials = 15 # total evaluation budget\n", - "\n", - "gs = choose_generation_strategy(\n", - " search_space=experiment.search_space,\n", - " optimization_config=experiment.optimization_config,\n", - " num_trials=total_trials,\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "78d86fea", - "metadata": {}, - "source": [ - "## Configuring the Scheduler\n", - "\n", - "The `Scheduler` acts as the loop control for the optimization.\n", - "It communicates with the backend to launch trials, check their status, retrieve (partial) results, and importantly for this tutorial, calls the early stopping strategy. If the early stopping strategy suggests a trial to be the stopped, the `Scheduler` communicates with the backend to terminate the trial.\n", - "\n", - "The ``Scheduler`` requires the ``Experiment`` and the ``GenerationStrategy``.\n", - "A set of options can be passed in via ``SchedulerOptions``. Here, we\n", - "configure the number of total evaluations as well as ``max_pending_trials``,\n", - "the maximum number of trials that should run concurrently. In our\n", - "local setting, this is the number of training jobs running as individual\n", - "processes, while in a remote execution setting, this would be the number\n", - "of machines you want to use in parallel.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "499fb9b5", - "metadata": {}, - "outputs": [], - "source": [ - "scheduler = Scheduler(\n", - " experiment=experiment,\n", - " generation_strategy=gs,\n", - " options=SchedulerOptions(\n", - " total_trials=total_trials,\n", - " max_pending_trials=5,\n", - " early_stopping_strategy=percentile_early_stopping_strategy,\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "78257ebb", - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "scheduler.run_all_trials()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "8c5afbe8", - "metadata": {}, - "source": [ - "## Results\n", - "\n", - "First, we examine the data stored on the experiment. This shows that each trial is associated with an entire learning curve, represented by the column \"steps\"." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "764365f0", - "metadata": {}, - "outputs": [], - "source": [ - "experiment.lookup_data().map_df.head(n=10)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "0033ed2e", - "metadata": {}, - "source": [ - "Below is a summary of the experiment, showing that a portion of trials have been early stopped." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "00f2b35f", - "metadata": {}, - "outputs": [], - "source": [ - "exp_to_df(experiment)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f8909cf2", - "metadata": {}, - "source": [ - "We can give a very rough estimate of the amount of computational savings due to early stopping, by looking at the total number of steps used when early stopping is used versus the number of steps used if we ran all trials to completion. Note to do a true comparison, one should run full HPO loops with and without early stopping (as early stopping will influence the model and future points selected by the generation strategy). " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5abb3ce8", - "metadata": {}, - "outputs": [], - "source": [ - "map_df = experiment.lookup_data().map_df\n", - "trial_to_max_steps = map_df.groupby(\"trial_index\")[\"step\"].max()\n", - "completed_trial_steps = trial_to_max_steps.iloc[0]\n", - "savings = 1.0 - trial_to_max_steps.sum() / (\n", - " completed_trial_steps * len(trial_to_max_steps)\n", - ")\n", - "# TODO format nicer\n", - "print(f\"A rough estimate of the computational savings is {100 * savings}%.\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "37df6964", - "metadata": {}, - "source": [ - "## Visualizations\n", - "\n", - "Finally, we show a visualization of learning curves versus actual elapsed wall time. This helps to illustrate that stopped trials make room for additional trials to be run." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c88cb8d0", - "metadata": {}, - "outputs": [], - "source": [ - "# helper function for getting trial start times\n", - "def time_started(row):\n", - " trial_index = row[\"trial_index\"]\n", - " return experiment.trials[trial_index].time_run_started\n", - "\n", - "\n", - "# helper function for getting trial completion times\n", - "def time_completed(row):\n", - " trial_index = row[\"trial_index\"]\n", - " return experiment.trials[trial_index].time_completed\n", - "\n", - "\n", - "# helper function for getting relevant data from experiment\n", - "# with early stopping into useful dfs\n", - "def early_stopping_exp_to_df(experiment):\n", - " trials_df = exp_to_df(experiment)\n", - " curve_df = experiment.lookup_data().map_df\n", - " training_row_df = (\n", - " curve_df.groupby(\"trial_index\").max().reset_index()[[\"trial_index\", \"steps\"]]\n", - " )\n", - " trials_df = trials_df.merge(training_row_df, on=\"trial_index\")\n", - " trials_df[\"time_started\"] = trials_df.apply(func=time_started, axis=1)\n", - " trials_df[\"time_completed\"] = trials_df.apply(func=time_completed, axis=1)\n", - " start_time = trials_df[\"time_started\"].min()\n", - " trials_df[\"time_started_rel\"] = (\n", - " trials_df[\"time_started\"] - start_time\n", - " ).dt.total_seconds()\n", - " trials_df[\"time_completed_rel\"] = (\n", - " trials_df[\"time_completed\"] - start_time\n", - " ).dt.total_seconds()\n", - " return trials_df, curve_df\n", - "\n", - "\n", - "def plot_curves_by_wall_time(trials_df, curve_df):\n", - " trials = set(curve_df[\"trial_index\"])\n", - " fig, ax = plt.subplots(1, 1, figsize=(10, 6))\n", - " ax.set(xlabel=\"seconds since start\", ylabel=\"validation accuracy\")\n", - " for trial_index in trials:\n", - " this_trial_df = curve_df[curve_df[\"trial_index\"] == trial_index]\n", - " start_time_rel = trials_df[\"time_started_rel\"].iloc[trial_index]\n", - " completed_time_rel = trials_df[\"time_completed_rel\"].iloc[trial_index]\n", - " total_steps = trials_df.loc[trial_index, \"steps\"]\n", - " smoothed_curve = this_trial_df[\"mean\"].rolling(window=3).mean()\n", - " x = (\n", - " start_time_rel\n", - " + (completed_time_rel - start_time_rel)\n", - " / total_steps\n", - " * this_trial_df[\"steps\"]\n", - " )\n", - " ax.plot(\n", - " x,\n", - " smoothed_curve,\n", - " label=f\"trial #{trial_index}\" if trial_index % 2 == 1 else None,\n", - " )\n", - " ax.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d7f52fed", - "metadata": {}, - "outputs": [], - "source": [ - "# wrap in try/except in case of flaky I/O issues\n", - "try:\n", - " trials_df, curve_df = early_stopping_exp_to_df(experiment)\n", - " plot_curves_by_wall_time(trials_df, curve_df)\n", - "except Exception as e:\n", - " print(f\"Encountered exception while plotting results: {e}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "193e2fc7", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "e0bc4e17-2f06-4c45-b5c2-da9ae6121f64", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "# Ask-tell experimentation with trial-level early stopping\n", + "\n", + "Sometimes, there is stepwise information available on the way to a final measurement.\n", + "The goal of trial-level early stopping is to monitor the results of expensive evaluations with timeseries-like data and terminate those that are unlikely to produce promising results, freeing up resources to explore more configurations.\n", + "\n", + "Like the [ask-tell tutorial](#) we'll be minimizing the Hartmann6 function, but this time we've modified it to incorporate a new parameter $t$ which allows the function to produce timeseries-like data where the value returned is closer and closer to Hartmann6's true value as $t$ increases.\n", + "At $t = 100$ the function will simply return Hartmann6's unaltered value.\n", + "$$\n", + "f(x, t) = hartmann6(x) - log_2(t/100)\n", + "$$\n", + "While the function is synthetic, the workflow captures the intended principles for this tutorial and is similar to the process of training typical machine learning models.\n", + "\n", + "## Learning Objectives\n", + "- Understand when time-series-like data can be used in an optimization experiment\n", + "- Run a simple optimization experiment with early stopping\n", + "- Configure details of an early stopping strategy\n", + "- Analyze the results of the optimization\n", + "\n", + "## Prerequisites\n", + "- Familiarity with Python and basic programming concepts\n", + "- Understanding of [adaptive experimentation](#) and [Bayesian optimization](#)\n", + "- [Ask-tell Optimization of Python Functions](#)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "language": "markdown", + "originalKey": "6c37f67a-3e56-4338-947d-915c6e62bd79", + "showInput": false + }, + "source": [ + "## Step 1: Import Necessary Modules\n", + "\n", + "First, ensure you have all the necessary imports:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309769186, + "executionStopTime": 1739309769452, + "isAgentGenerated": false, + "language": "python", + "originalKey": "288b1d67-ac58-4cbc-b625-26445141ce64", + "outputsInitialized": true, + "requestMsgId": "288b1d67-ac58-4cbc-b625-26445141ce64", + "serverExecutionDuration": 1.428663963452, + "showInput": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import plotly.express as px\n", + "import plotly.graph_objects as go\n", + "from ax.early_stopping.strategies import PercentileEarlyStoppingStrategy\n", + "from ax.preview.api.client import Client\n", + "from ax.preview.api.configs import ExperimentConfig, ParameterType, RangeParameterConfig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "2d90d50e-8258-4fd3-a99e-dc26077a90a7", + "outputsInitialized": false, + "showInput": false + }, + "source": [ + "## Step 2: Initialize the Client\n", + "Create an instance of the `Client` to manage the state of your experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309769456, + "executionStopTime": 1739309770044, + "isAgentGenerated": false, + "language": "python", + "originalKey": "14d7212e-426e-407a-8ad7-3e5c9b9881cb", + "outputsInitialized": true, + "requestMsgId": "14d7212e-426e-407a-8ad7-3e5c9b9881cb", + "serverExecutionDuration": 1.5575950965285, + "showInput": true + }, + "outputs": [], + "source": [ + "client = Client(random_seed=42)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "02887e7c-6e0e-4940-8cd5-4e3aa78ae16c", + "outputsInitialized": false, + "showInput": false + }, + "source": [ + "## Step 3: Configure the Experiment\n", + "\n", + "The `Client` expects a series of `Config`s which define how the experiment will be run.\n", + "We'll set this up the same way as we did in our previous tutorial.\n", + "\n", + "The Hartmann6 is usually evaluated on the hypercube $x_i \\in (0, 1)$, so we will define six identical `RangeParameterConfig`s with the appropriate bounds, and add these to an `ExperimentConfig` along with other metadata about the experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309770048, + "executionStopTime": 1739309770238, + "isAgentGenerated": false, + "language": "python", + "originalKey": "3027314b-2076-4199-9641-6e8b8ec401da", + "outputsInitialized": true, + "requestMsgId": "3027314b-2076-4199-9641-6e8b8ec401da", + "serverExecutionDuration": 1.8919380381703, + "showInput": true + }, + "outputs": [], + "source": [ + "# Define six float parameters for the Hartmann6 function\n", + "parameters = [\n", + " RangeParameterConfig(\n", + " name=f\"x{i + 1}\", parameter_type=ParameterType.FLOAT, bounds=(0, 1)\n", + " )\n", + " for i in range(6)\n", + "]\n", + "\n", + "# Create an experiment configuration\n", + "experiment_config = ExperimentConfig(\n", + " name=\"hartmann6_experiment\",\n", + " parameters=parameters,\n", + " # The following arguments are optional\n", + " description=\"Optimization of the Hartmann6 function\",\n", + " owner=\"developer\",\n", + ")\n", + "\n", + "# Apply the experiment configuration to the client\n", + "client.configure_experiment(experiment_config=experiment_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "d73ca67f-eb86-4d74-b4cc-ef211dba66ba", + "outputsInitialized": false, + "showInput": false + }, + "source": [ + "## Step 4: Configure Optimization\n", + "Now, we must set up the optimization objective in `Client`, where `objective` is a string that specifies which metric we would like to optimize and which direction we consider optimal.\n", + "\n", + "We set the objective to be `-hartmann6` to signify that we want to minimize the function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309770243, + "executionStopTime": 1739309770451, + "isAgentGenerated": false, + "language": "python", + "originalKey": "237f31f6-cad2-4cfd-8cc8-ade5d5f7cc30", + "outputsInitialized": true, + "requestMsgId": "237f31f6-cad2-4cfd-8cc8-ade5d5f7cc30", + "serverExecutionDuration": 2.1110590314493, + "showInput": true + }, + "outputs": [], + "source": [ + "client.configure_optimization(objective=\"-hartmann6\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "ba47a991-d87b-48b5-88ba-40a72620332a", + "outputsInitialized": false, + "showInput": false + }, + "source": [ + "## Step 5: Run Trials with early stopping\n", + "Here, we will configure the ask-tell loop.\n", + "\n", + "We begin by defining our Hartmann6 function as written above.\n", + "Remember, this is just an example problem and any Python function can be substituted here.\n", + "\n", + "Then we will iteratively do the following:\n", + "* Call `client.get_next_trials` to \"ask\" Ax for a parameterization to evaluate\n", + "* Evaluate `hartmann6_curve` using those parameters in an inner loop to simulate the generation of timeseries data\n", + "* \"Tell\" Ax the partial result using `client.attach_data`\n", + "* Query whether the trial should be stopped via `client.should_stop_trial_early`\n", + "* Stop the underperforming trial and report back to Ax that is has been stopped\n", + "\n", + "This loop will run multiple trials to optimize the function.\n", + "\n", + "Ax will configure an EarlyStoppingStrategy when `should_stop_trial_early` is called for the first time.\n", + "By default Ax uses Percentile early stopping, a strategy where trials are ended early if its performance falls below that of other trials at the same step.\n", + "This is parameterized via a minimum number of \"progressions\" to prevent the trial from stopping prematurely, i.e., before enough data is gathered to make a decision as well as the minimum number of trials with curve data that should complete before trials are allowed to be stopped early." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309770456, + "executionStopTime": 1739309770668, + "isAgentGenerated": false, + "language": "python", + "originalKey": "b1208371-8d12-43d1-9602-c85b30a38492", + "outputsInitialized": true, + "requestMsgId": "b1208371-8d12-43d1-9602-c85b30a38492", + "serverExecutionDuration": 1.9606580026448, + "showInput": true + }, + "outputs": [], + "source": [ + "# Hartmann6 function\n", + "def hartmann6(x1, x2, x3, x4, x5, x6):\n", + " alpha = np.array([1.0, 1.2, 3.0, 3.2])\n", + " A = np.array([\n", + " [10, 3, 17, 3.5, 1.7, 8],\n", + " [0.05, 10, 17, 0.1, 8, 14],\n", + " [3, 3.5, 1.7, 10, 17, 8],\n", + " [17, 8, 0.05, 10, 0.1, 14]\n", + " ])\n", + " P = 10**-4 * np.array([\n", + " [1312, 1696, 5569, 124, 8283, 5886],\n", + " [2329, 4135, 8307, 3736, 1004, 9991],\n", + " [2348, 1451, 3522, 2883, 3047, 6650],\n", + " [4047, 8828, 8732, 5743, 1091, 381]\n", + " ])\n", + "\n", + " outer = 0.0\n", + " for i in range(4):\n", + " inner = 0.0\n", + " for j, x in enumerate([x1, x2, x3, x4, x5, x6]):\n", + " inner += A[i, j] * (x - P[i, j])**2\n", + " outer += alpha[i] * np.exp(-inner)\n", + " return -outer\n", + "\n", + "# Hartmann6 function with additional t term\n", + "def hartmann6_curve(x1, x2, x3, x4, x5, x6, t):\n", + " return hartmann6(x1, x2, x3, x4, x5, x6) - np.log2(t)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309770670, + "executionStopTime": 1739309792689, + "isAgentGenerated": false, + "language": "python", + "originalKey": "850df094-3b9b-4527-bd28-ce7d991d22ce", + "outputsInitialized": true, + "requestMsgId": "850df094-3b9b-4527-bd28-ce7d991d22ce", + "serverExecutionDuration": 21860.721127014, + "showInput": true + }, + "outputs": [], + "source": [ + "maximum_progressions = 100 # Observe hartmann6_curve over 100 progressions\n", + "\n", + "for _ in range(30): # Run 30 trials\n", + " trials = client.get_next_trials(maximum_trials=1)\n", + " for trial_index, parameters in trials.items():\n", + " for t in range(1, maximum_progressions + 1):\n", + " raw_data = {\"hartmann6\": hartmann6_curve(t=t, **parameters)}\n", + "\n", + " # On the final reading call complete_trial, else call attach_data\n", + " if t == maximum_progressions:\n", + " client.complete_trial(\n", + " trial_index=trial_index, raw_data=raw_data, progression=t\n", + " )\n", + " else:\n", + " client.attach_data(\n", + " trial_index=trial_index, raw_data=raw_data, progression=t\n", + " )\n", + "\n", + " # If the trial is underperforming, stop it\n", + " if client.should_stop_trial_early(trial_index=trial_index):\n", + " client.mark_trial_early_stopped(\n", + " trial_index=trial_index, raw_data=raw_data, progression=t\n", + " )\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "c2e49a05-899e-4274-9c9a-bc86b4e7be5e", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 6: Analyze Results\n", + "\n", + "After running trials, you can analyze the results.\n", + "Most commonly this means extracting the parameterization from the best performing trial you conducted." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "customOutput": null, + "executionStartTime": 1739309857743, + "executionStopTime": 1739309861050, + "isAgentGenerated": false, + "language": "python", + "originalKey": "c196b391-6966-456e-9400-2aef149595ff", + "outputsInitialized": true, + "requestMsgId": "c196b391-6966-456e-9400-2aef149595ff", + "serverExecutionDuration": 3080.3436069982, + "showInput": true + }, + "outputs": [], + "source": [ + "best_parameters, prediction, index, name = client.get_best_parameterization()\n", + "print(\"Best Parameters:\", best_parameters)\n", + "print(\"Prediction (mean, variance):\", prediction)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "767ee110-8ab8-4856-805b-a1b8b7912d4e", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 7: Compute Analyses\n", + "\n", + "Ax can also produce a number of analyses to help interpret the results of the experiment via `client.compute_analyses`.\n", + "Users can manually select which analyses to run, or can allow Ax to select which would be most relevant.\n", + "In this case Ax selects the following:\n", + "* **Parrellel Coordinates Plot** shows which parameterizations were evaluated and what metric values were observed -- this is useful for getting a high level overview of how thoroughly the search space was explored and which regions tend to produce which outcomes\n", + "* **Interaction Analysis Plot** shows which parameters have the largest affect on the function and plots the most important parameters as 1 or 2 dimensional surfaces\n", + "* **Summary** lists all trials generated along with their parameterizations, observations, and miscellaneous metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customOutput": null, + "executionStartTime": 1739309914120, + "executionStopTime": 1739309919999, + "isAgentGenerated": false, + "language": "python", + "originalKey": "9f0fcad5-74c8-409d-bd49-47e8112c664c", + "outputsInitialized": true, + "requestMsgId": "9f0fcad5-74c8-409d-bd49-47e8112c664c", + "serverExecutionDuration": 5307.3820680147 + }, + "outputs": [], + "source": [ + "client.compute_analyses(display=True) # By default Ax will display the AnalysisCards produced by compute_analyses" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "b21c1ff4-3472-48ef-9c32-103cf9a17d01", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Conclusion\n", + "\n", + "This tutorial demonstates Ax's early stopping capabilities, which utilize timeseries-like data to monitor the results of expensive evaluations and terminate those that are unlikely to produce promising results, freeing up resources to explore more configurations.\n", + "This can be used in a number of applications, and is especially useful in machine learning contexts." + ] + } + ], + "metadata": { + "fileHeader": "", + "fileUid": "d58f434d-b29c-4c6d-a882-70fdf8fb4978", + "isAdHoc": false, + "kernelspec": { + "display_name": "python3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/tutorials/early_stopping/mnist_train_nas.py b/tutorials/early_stopping/mnist_train_nas.py deleted file mode 100644 index 957685a357a..00000000000 --- a/tutorials/early_stopping/mnist_train_nas.py +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# -# This source code is licensed under the MIT license found in the -# LICENSE file in the root directory of this source tree. - - -import argparse -import logging -import os -import time -import warnings - -import torch -from pytorch_lightning import LightningModule, loggers as pl_loggers, Trainer -from torch import nn -from torch.nn import functional as F -from torch.utils.data import DataLoader -from torchmetrics.functional.classification.accuracy import multiclass_accuracy -from torchvision import transforms -from torchvision.datasets import MNIST - -warnings.filterwarnings("ignore") # Disable data logger warnings -logging.getLogger("pytorch_lightning").setLevel(logging.ERROR) # Disable GPU/TPU prints - - -def parse_args(): - parser = argparse.ArgumentParser(description="train mnist") - parser.add_argument( - "--log_path", - type=str, - required=True, - help="dir to place tensorboard logs from all trials", - ) - parser.add_argument( - "--hidden_size_1", type=int, required=True, help="hidden size layer 1" - ) - parser.add_argument( - "--hidden_size_2", type=int, required=True, help="hidden size layer 2" - ) - parser.add_argument( - "--learning_rate", type=float, required=True, help="learning rate" - ) - parser.add_argument("--epochs", type=int, required=True, help="number of epochs") - parser.add_argument( - "--dropout", type=float, required=True, help="dropout probability" - ) - parser.add_argument("--batch_size", type=int, required=True, help="batch size") - return parser.parse_args() - - -args = parse_args() - -PATH_DATASETS = os.environ.get("PATH_DATASETS", ".") - - -class MnistModel(LightningModule): - def __init__(self): - super().__init__() - - # Tunable parameters - self.hidden_size_1 = args.hidden_size_1 - self.hidden_size_2 = args.hidden_size_2 - self.learning_rate = args.learning_rate - self.dropout = args.dropout - self.batch_size = args.batch_size - - # Set class attributes - self.data_dir = PATH_DATASETS - - # Hardcode some dataset specific attributes - self.num_classes = 10 - self.dims = (1, 28, 28) - channels, width, height = self.dims - self.transform = transforms.Compose( - [ - transforms.ToTensor(), - transforms.Normalize((0.1307,), (0.3081,)), - ] - ) - - # Create a PyTorch model - layers = [nn.Flatten()] - width = channels * width * height - hidden_layers = [self.hidden_size_1, self.hidden_size_2] - num_params = 0 - for hidden_size in hidden_layers: - if hidden_size > 0: - layers.append(nn.Linear(width, hidden_size)) - layers.append(nn.ReLU()) - layers.append(nn.Dropout(self.dropout)) - num_params += width * hidden_size - width = hidden_size - layers.append(nn.Linear(width, self.num_classes)) - num_params += width * self.num_classes - - # Save the model and parameter counts - self.num_params = num_params - self.model = nn.Sequential(*layers) # No need to use Relu for the last layer - - def forward(self, x): - x = self.model(x) - return F.log_softmax(x, dim=1) - - def training_step(self, batch, batch_idx): - x, y = batch - logits = self(x) - loss = F.nll_loss(logits, y) - return loss - - def validation_step(self, batch, batch_idx): - x, y = batch - logits = self(x) - loss = F.nll_loss(logits, y) - preds = torch.argmax(logits, dim=1) - acc = multiclass_accuracy(preds, y, num_classes=self.num_classes) - self.log("val_acc", acc, prog_bar=False) - return loss - - def configure_optimizers(self): - optimizer = torch.optim.Adam(self.parameters(), lr=self.learning_rate) - return optimizer - - def prepare_data(self): - MNIST(self.data_dir, train=True, download=True) - MNIST(self.data_dir, train=False, download=True) - - def setup(self, stage=None): - self.mnist_train = MNIST(self.data_dir, train=True, transform=self.transform) - self.mnist_val = MNIST(self.data_dir, train=False, transform=self.transform) - - def train_dataloader(self): - return DataLoader(self.mnist_train, batch_size=self.batch_size) - - def val_dataloader(self): - return DataLoader(self.mnist_val, batch_size=self.batch_size) - - -def run_training_job(): - mnist_model = MnistModel() - - # Initialize a trainer - logger = pl_loggers.TensorBoardLogger(args.log_path) - trainer = Trainer( - logger=logger, - log_every_n_steps=1, - max_epochs=args.epochs, - enable_progress_bar=False, - deterministic=True, # Do we want a bit of noise? - default_root_dir=args.log_path, - ) - logger.save() - - print(f"Logging to path: {args.log_path}.") - - # Train the model and log time - start = time.time() - trainer.fit(model=mnist_model) - end = time.time() - train_time = end - start - - # Compute the validation accuracy - val_accuracy = trainer.validate()[0]["val_acc"] - - # Log the number of model parameters - num_params = trainer.model.num_params - - # Print outputs - print( - f"train time: {train_time}, val acc: {val_accuracy}, num_params: {num_params}" - ) - - -if __name__ == "__main__": - run_training_job() diff --git a/tutorials/external_generation_node/external_generation_node.ipynb b/tutorials/external_generation_node/external_generation_node.ipynb deleted file mode 100644 index 61c9c3f7f4a..00000000000 --- a/tutorials/external_generation_node/external_generation_node.ipynb +++ /dev/null @@ -1,414 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "448bd7a0-af5a-43b4-a4fa-6a43577193b5", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "# Using external methods for candidate generation in Ax\n", - "\n", - "Out of the box, Ax offers many options for candidate generation, most of which utilize Bayesian optimization algorithms built using [BoTorch](https://botorch.org/). For users that want to leverage Ax for experiment orchestration (via `AxClient` or `Scheduler`) and other features (e.g., early stopping), while relying on other methods for candidate generation, we introduced `ExternalGenerationNode`. \n", - "\n", - "A `GenerationNode` is a building block of a `GenerationStrategy`. They can be combined together utilize different methods for generating candidates at different stages of an experiment. `ExternalGenerationNode` exposes a lightweight interface to allow the users to easily integrate their methods into Ax, and use them as standalone or with other `GenerationNode`s in a `GenerationStrategy`.\n", - "\n", - "In this tutorial, we will implement a simple generation node using `RandomForestRegressor` from sklearn, and combine it with Sobol (for initialization) to optimize the Hartmann6 problem.\n", - "\n", - "NOTE: This is for illustration purposes only. We do not recommend using this strategy as it typically does not perform well compared to Ax's default algorithms due to it's overly greedy behavior." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1710539298590, - "executionStopTime": 1710539307671, - "originalKey": "d07e3074-f374-40e8-af49-a018a00288b5", - "output": { - "id": "314819867912827", - "loadingStatus": "before loading" - }, - "outputsInitialized": true, - "requestMsgId": "d07e3074-f374-40e8-af49-a018a00288b5", - "serverExecutionDuration": 4039.838102879 - }, - "outputs": [], - "source": [ - "import time\n", - "from typing import Any, Dict, List, Optional, Tuple\n", - "\n", - "import numpy as np\n", - "from ax.core.base_trial import TrialStatus\n", - "from ax.core.data import Data\n", - "from ax.core.experiment import Experiment\n", - "from ax.core.parameter import RangeParameter\n", - "from ax.core.types import TParameterization\n", - "from ax.generation_strategy.external_generation_node import ExternalGenerationNode\n", - "from ax.generation_strategy.generation_node import GenerationNode\n", - "from ax.generation_strategy.generation_strategy import GenerationStrategy\n", - "from ax.generation_strategy.model_spec import GeneratorSpec\n", - "from ax.generation_strategy.transition_criterion import MaxTrials\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.plot.trace import plot_objective_value_vs_trial_index\n", - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "from ax.utils.measurement.synthetic_functions import hartmann6\n", - "from sklearn.ensemble import RandomForestRegressor\n", - "from pyre_extensions import assert_is_instance\n", - "\n", - "\n", - "class RandomForestGenerationNode(ExternalGenerationNode):\n", - " \"\"\"A generation node that uses the RandomForestRegressor\n", - " from sklearn to predict candidate performance and picks the\n", - " next point as the random sample that has the best prediction.\n", - "\n", - " To leverage external methods for candidate generation, the user must\n", - " create a subclass that implements ``update_generator_state`` and\n", - " ``get_next_candidate`` methods. This can then be provided\n", - " as a node into a ``GenerationStrategy``, either as standalone or as\n", - " part of a larger generation strategy with other generation nodes,\n", - " e.g., with a Sobol node for initialization.\n", - " \"\"\"\n", - "\n", - " def __init__(self, num_samples: int, regressor_options: Dict[str, Any]) -> None:\n", - " \"\"\"Initialize the generation node.\n", - "\n", - " Args:\n", - " regressor_options: Options to pass to the random forest regressor.\n", - " num_samples: Number of random samples from the search space\n", - " used during candidate generation. The sample with the best\n", - " prediction is recommended as the next candidate.\n", - " \"\"\"\n", - " t_init_start = time.monotonic()\n", - " super().__init__(node_name=\"RandomForest\")\n", - " self.num_samples: int = num_samples\n", - " self.regressor: RandomForestRegressor = RandomForestRegressor(\n", - " **regressor_options\n", - " )\n", - " # We will set these later when updating the state.\n", - " # Alternatively, we could have required experiment as an input\n", - " # and extracted them here.\n", - " self.parameters: Optional[List[RangeParameter]] = None\n", - " self.minimize: Optional[bool] = None\n", - " # Recording time spent in initializing the generator. This is\n", - " # used to compute the time spent in candidate generation.\n", - " self.fit_time_since_gen: float = time.monotonic() - t_init_start\n", - "\n", - " def update_generator_state(self, experiment: Experiment, data: Data) -> None:\n", - " \"\"\"A method used to update the state of the generator. This includes any\n", - " models, predictors or any other custom state used by the generation node.\n", - " This method will be called with the up-to-date experiment and data before\n", - " ``get_next_candidate`` is called to generate the next trial(s). Note\n", - " that ``get_next_candidate`` may be called multiple times (to generate\n", - " multiple candidates) after a call to ``update_generator_state``.\n", - "\n", - " For this example, we will train the regressor using the latest data from\n", - " the experiment.\n", - "\n", - " Args:\n", - " experiment: The ``Experiment`` object representing the current state of the\n", - " experiment. The key properties includes ``trials``, ``search_space``,\n", - " and ``optimization_config``. The data is provided as a separate arg.\n", - " data: The data / metrics collected on the experiment so far.\n", - " \"\"\"\n", - " search_space = experiment.search_space\n", - " parameter_names = list(search_space.parameters.keys())\n", - " metric_names = list(experiment.optimization_config.metrics.keys())\n", - " if any(\n", - " not isinstance(p, RangeParameter) for p in search_space.parameters.values()\n", - " ):\n", - " raise NotImplementedError(\n", - " \"This example only supports RangeParameters in the search space.\"\n", - " )\n", - " if search_space.parameter_constraints:\n", - " raise NotImplementedError(\n", - " \"This example does not support parameter constraints.\"\n", - " )\n", - " if len(metric_names) != 1:\n", - " raise NotImplementedError(\n", - " \"This example only supports single-objective optimization.\"\n", - " )\n", - " # Get the data for the completed trials.\n", - " num_completed_trials = len(experiment.trials_by_status[TrialStatus.COMPLETED])\n", - " x = np.zeros([num_completed_trials, len(parameter_names)])\n", - " y = np.zeros([num_completed_trials, 1])\n", - " for t_idx, trial in experiment.trials.items():\n", - " if trial.status == \"COMPLETED\":\n", - " trial_parameters = trial.arm.parameters\n", - " x[t_idx, :] = np.array([trial_parameters[p] for p in parameter_names])\n", - " trial_df = data.df[data.df[\"trial_index\"] == t_idx]\n", - " y[t_idx, 0] = trial_df[trial_df[\"metric_name\"] == metric_names[0]][\n", - " \"mean\"\n", - " ].item()\n", - "\n", - " # Train the regressor.\n", - " self.regressor.fit(x, y)\n", - " # Update the attributes not set in __init__.\n", - " self.parameters = search_space.parameters\n", - " self.minimize = experiment.optimization_config.objective.minimize\n", - "\n", - " def get_next_candidate(\n", - " self, pending_parameters: List[TParameterization]\n", - " ) -> TParameterization:\n", - " \"\"\"Get the parameters for the next candidate configuration to evaluate.\n", - "\n", - " We will draw ``self.num_samples`` random samples from the search space\n", - " and predict the objective value for each sample. We will then return\n", - " the sample with the best predicted value.\n", - "\n", - " Args:\n", - " pending_parameters: A list of parameters of the candidates pending\n", - " evaluation. This is often used to avoid generating duplicate candidates.\n", - " We ignore this here for simplicity.\n", - "\n", - " Returns:\n", - " A dictionary mapping parameter names to parameter values for the next\n", - " candidate suggested by the method.\n", - " \"\"\"\n", - " bounds = np.array([[p.lower, p.upper] for p in self.parameters.values()])\n", - " unit_samples = np.random.random_sample([self.num_samples, len(bounds)])\n", - " samples = bounds[:, 0] + (bounds[:, 1] - bounds[:, 0]) * unit_samples\n", - " # Predict the objective value for each sample.\n", - " y_pred = self.regressor.predict(samples)\n", - " # Find the best sample.\n", - " best_idx = np.argmin(y_pred) if self.minimize else np.argmax(y_pred)\n", - " best_sample = samples[best_idx, :]\n", - " # Convert the sample to a parameterization.\n", - " candidate = {\n", - " p_name: best_sample[i].item()\n", - " for i, p_name in enumerate(self.parameters.keys())\n", - " }\n", - " return candidate" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "e1c194ea-53f9-466b-a04a-d1e222751a62", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## Construct the GenerationStrategy\n", - "\n", - "We will use Sobol for the first 5 trials and defer to random forest for the rest." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1710539307673, - "executionStopTime": 1710539307752, - "originalKey": "389cb09c-adeb-4724-82b0-903806b6b403", - "outputsInitialized": true, - "requestMsgId": "389cb09c-adeb-4724-82b0-903806b6b403", - "serverExecutionDuration": 5.2677921485156, - "showInput": true - }, - "outputs": [], - "source": [ - "generation_strategy = GenerationStrategy(\n", - " name=\"Sobol+RandomForest\",\n", - " nodes=[\n", - " GenerationNode(\n", - " node_name=\"Sobol\",\n", - " model_specs=[GeneratorSpec(Generators.SOBOL)],\n", - " transition_criteria=[\n", - " MaxTrials(\n", - " # This specifies the maximum number of trials to generate from this node, \n", - " # and the next node in the strategy.\n", - " threshold=5,\n", - " block_transition_if_unmet=True,\n", - " transition_to=\"RandomForest\"\n", - " )\n", - " ],\n", - " ),\n", - " RandomForestGenerationNode(num_samples=128, regressor_options={}),\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "7bcf0a8e-39f7-4ceb-a791-c5453024bcfd", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## Run a simple experiment using AxClient\n", - "\n", - "More details on how to use AxClient can be found in the [tutorial](https://ax.dev/tutorials/gpei_hartmann_service.html)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1710539307754, - "executionStopTime": 1710539307854, - "originalKey": "4be26fc1-6183-40c4-a45e-79adb613b950", - "outputsInitialized": true, - "requestMsgId": "4be26fc1-6183-40c4-a45e-79adb613b950", - "serverExecutionDuration": 15.909331152216, - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client = AxClient(generation_strategy=generation_strategy)\n", - "\n", - "ax_client.create_experiment(\n", - " name=\"hartmann_test_experiment\",\n", - " parameters=[\n", - " {\n", - " \"name\": f\"x{i}\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " \"value_type\": \"float\", # Optional, defaults to inference from type of \"bounds\".\n", - " }\n", - " for i in range(1, 7)\n", - " ],\n", - " objectives={\"hartmann6\": ObjectiveProperties(minimize=True)},\n", - ")\n", - "\n", - "\n", - "def evaluate(parameterization: TParameterization) -> Dict[str, Tuple[float, float]]:\n", - " x = np.array([parameterization.get(f\"x{i+1}\") for i in range(6)])\n", - " return {\"hartmann6\": (assert_is_instance(hartmann6(x), float), 0.0)}" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "a470eb3e-40a0-45d2-9d53-13a98a137ec2", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "### Run the optimization loop" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1710539307855, - "executionStopTime": 1710539309651, - "originalKey": "f67454e1-2a1a-4e87-ba3b-038c3134b09d", - "outputsInitialized": false, - "requestMsgId": "f67454e1-2a1a-4e87-ba3b-038c3134b09d", - "serverExecutionDuration": 1679.0952710435, - "showInput": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 02-03 18:39:20] ax.service.ax_client: Generated new trial 14 with parameters {'x1': 0.722061, 'x2': 0.537668, 'x3': 0.340365, 'x4': 0.187451, 'x5': 0.27493, 'x6': 0.107343} using model RandomForest.\n", - "[INFO 02-03 18:39:20] ax.service.ax_client: Completed trial 14 with data: {'hartmann6': (-0.110032, 0.0)}.\n" - ] - } - ], - "source": [ - "for i in range(15):\n", - " parameterization, trial_index = ax_client.get_next_trial()\n", - " ax_client.complete_trial(\n", - " trial_index=trial_index, raw_data=evaluate(parameterization)\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "d0655321-4875-46d7-a4bf-ac2c4e166d94", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "### View the trials generated during optimization" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1710539309652, - "executionStopTime": 1710539309824, - "originalKey": "ba69ed8c-7ee2-49ef-9ccf-0aad2bc5ac61", - "outputsInitialized": true, - "requestMsgId": "ba69ed8c-7ee2-49ef-9ccf-0aad2bc5ac61", - "serverExecutionDuration": 73.840260040015, - "showInput": true - }, - "outputs": [], - "source": [ - "exp_df = exp_to_df(ax_client.experiment)\n", - "exp_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_objective_value_vs_trial_index(\n", - " exp_df=exp_df,\n", - " metric_colname=\"hartmann6\",\n", - " minimize=True,\n", - " title=\"Hartmann6 Objective Value vs. Trial Index\",\n", - ")" - ] - } - ], - "metadata": { - "fileHeader": "", - "fileUid": "1ab8b45a-525c-4c25-b142-f7ef9fffb1c5", - "isAdHoc": false, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/factorial/factorial.ipynb b/tutorials/factorial/factorial.ipynb deleted file mode 100644 index 5b6462029ed..00000000000 --- a/tutorials/factorial/factorial.ipynb +++ /dev/null @@ -1,671 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - }, - "originalKey": "11c796cc-b85d-4940-8b15-cc43257f2f6f" - }, - "source": [ - "# Factorial design with empirical Bayes and Thompson Sampling" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "8a8399a7-2159-4c29-a614-496e40142b0e" - }, - "source": [ - "\n", - "This tutorial illustrates how to run a factorial experiment. In such an experiment, each parameter (factor) can be assigned one of multiple discrete values (levels). A full-factorial experiment design explores all possible combinations of factors and levels.\n", - "\n", - "For instance, consider a banner with a title and an image. We are considering two different titles and three different images. A full-factorial experiment will compare all 2*3=6 possible combinations of title and image, to see which version of the banner performs the best.\n", - "\n", - "In this example, we first run an exploratory batch to collect data on all possible combinations. Then we use empirical Bayes to model the data and shrink noisy estimates toward the mean. Next, we use Thompson Sampling to suggest a set of arms (combinations of factors and levels) on which to collect more data. We repeat the process until we have identified the best performing combination(s)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:07.844357Z", - "start_time": "2019-04-01T09:59:06.377921-07:00" - }, - "code_folding": [], - "executionStartTime": 1626981053537, - "executionStopTime": 1626981053715, - "hidden_ranges": [], - "originalKey": "4cd9a25a-24ad-478b-8e13-d44dcda79470", - "requestMsgId": "14098f9a-32b6-44a7-a299-96d926ed0094" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import sklearn as skl\n", - "from typing import Dict, Optional, Tuple, Union\n", - "from ax import (\n", - " Arm,\n", - " ChoiceParameter,\n", - " Generators,\n", - " ParameterType,\n", - " SearchSpace,\n", - " Experiment,\n", - " OptimizationConfig,\n", - " Objective,\n", - ")\n", - "from ax.plot.scatter import plot_fitted\n", - "from ax.utils.notebook.plotting import render, init_notebook_plotting\n", - "from ax.utils.stats.statstools import agresti_coull_sem" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:07.852360Z", - "start_time": "2019-04-01T09:59:07.846655-07:00" - }, - "executionStartTime": 1626979627293, - "executionStopTime": 1626979629392, - "originalKey": "4b037028-dc23-4ded-97ab-29f322c4e955", - "requestMsgId": "ba949adc-1e0a-465a-9a5f-cb88406aacb1" - }, - "outputs": [], - "source": [ - "import plotly.io as pio\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "178bb166-21ad-4632-980a-ed80cfdef665" - }, - "source": [ - "## 1. Define the search space" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "481d6b12-6bec-4290-a3a9-286452ca969d" - }, - "source": [ - "\n", - "First, we define our search space. A factorial search space contains a ChoiceParameter for each factor, where the values of the parameter are its levels." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:07.861686Z", - "start_time": "2019-04-01T09:59:07.854353-07:00" - }, - "executionStartTime": 1626981051101, - "executionStopTime": 1626981051122, - "originalKey": "1f1e7bb9-d7f5-4d94-8568-6a99dd99ad31", - "requestMsgId": "f88cb237-fbb3-4cb6-be08-d81b339f6ccb" - }, - "outputs": [], - "source": [ - "search_space = SearchSpace(\n", - " parameters=[\n", - " ChoiceParameter(\n", - " name=\"factor1\",\n", - " parameter_type=ParameterType.STRING,\n", - " values=[\"level11\", \"level12\", \"level13\"],\n", - " ),\n", - " ChoiceParameter(\n", - " name=\"factor2\",\n", - " parameter_type=ParameterType.STRING,\n", - " values=[\"level21\", \"level22\"],\n", - " ),\n", - " ChoiceParameter(\n", - " name=\"factor3\",\n", - " parameter_type=ParameterType.STRING,\n", - " values=[\"level31\", \"level32\", \"level33\", \"level34\"],\n", - " ),\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "collapsed": true, - "hidden_ranges": [], - "jupyter": { - "outputs_hidden": true - }, - "originalKey": "1efa918f-2dc7-484a-9d26-f2c132729364", - "showInput": true - }, - "source": [ - "## 2. Define a custom metric" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "63587acb-5dd2-481c-bc47-b4fb4d59b6ea", - "showInput": true - }, - "source": [ - "Second, we define a custom metric, which is responsible for computing\n", - "the mean and standard error of a given arm.\n", - "\n", - "In this example, each possible parameter value is given a coefficient. The higher the level, the higher the coefficient, and the higher the coefficients, the greater the mean.\n", - "\n", - "The standard error of each arm is determined by the weight passed into the evaluation function, which represents the size of the population on which this arm was evaluated. The higher the weight, the greater the sample size, and thus the lower the standard error." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:07.871141Z", - "start_time": "2019-04-01T09:59:07.863475-07:00" - }, - "code_folding": [], - "executionStartTime": 1626985050014, - "executionStopTime": 1626985050042, - "hidden_ranges": [], - "originalKey": "18b36086-8b22-468e-b661-4aa155fa1731", - "requestMsgId": "320dd2d7-0b0e-4f30-a622-d61ea619655a" - }, - "outputs": [], - "source": [ - "from ax import Data, Metric\n", - "from ax.utils.common.result import Ok\n", - "import pandas as pd\n", - "from random import random\n", - "\n", - "\n", - "one_hot_encoder = skl.preprocessing.OneHotEncoder(\n", - " categories=[par.values for par in search_space.parameters.values()],\n", - ")\n", - "\n", - "\n", - "class FactorialMetric(Metric):\n", - " def fetch_trial_data(self, trial):\n", - " records = []\n", - " for arm_name, arm in trial.arms_by_name.items():\n", - " params = arm.parameters\n", - " batch_size = 10000\n", - " noise_level = 0.0\n", - " weight = trial.normalized_arm_weights().get(arm, 1.0)\n", - " coefficients = np.array([0.1, 0.2, 0.3, 0.1, 0.2, 0.1, 0.2, 0.3, 0.4])\n", - " features = np.array(list(params.values())).reshape(1, -1)\n", - " encoded_features = one_hot_encoder.fit_transform(features)\n", - " z = (\n", - " coefficients @ encoded_features.T\n", - " + np.sqrt(noise_level) * np.random.randn()\n", - " )\n", - " p = np.exp(z) / (1 + np.exp(z))\n", - " plays = np.random.binomial(batch_size, weight)\n", - " successes = np.random.binomial(plays, p)\n", - " records.append(\n", - " {\n", - " \"arm_name\": arm_name,\n", - " \"metric_name\": self.name,\n", - " \"trial_index\": trial.index,\n", - " \"mean\": float(successes) / plays,\n", - " \"sem\": agresti_coull_sem(successes, plays),\n", - " }\n", - " )\n", - " return Ok(value=Data(df=pd.DataFrame.from_records(records)))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "554b78ab-b22b-4527-b8fe-1bb880d4b5da" - }, - "source": [ - "## 3. Define the experiment" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "6528d970-a599-4a54-a0c2-d537391f2cdd" - }, - "source": [ - "\n", - "We now set up our experiment and define the status quo arm, in which each parameter is assigned to the lowest level." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:07.876425Z", - "start_time": "2019-04-01T09:59:07.872766-07:00" - }, - "code_folding": [], - "executionStartTime": 1626985052799, - "executionStopTime": 1626985052823, - "hidden_ranges": [], - "originalKey": "0cfdaace-d333-41e2-8e32-97d529f2e6f6", - "requestMsgId": "3aba5566-54c8-4c9b-98f5-e5a8cca320be" - }, - "outputs": [], - "source": [ - "from ax import Runner\n", - "\n", - "\n", - "class MyRunner(Runner):\n", - " def run(self, trial):\n", - " trial_metadata = {\"name\": str(trial.index)}\n", - " return trial_metadata\n", - "\n", - "\n", - "exp = Experiment(\n", - " name=\"my_factorial_closed_loop_experiment\",\n", - " search_space=search_space,\n", - " optimization_config=OptimizationConfig(\n", - " objective=Objective(metric=FactorialMetric(name=\"success_metric\"), minimize=False)\n", - " ),\n", - " runner=MyRunner(),\n", - ")\n", - "exp.status_quo = Arm(\n", - " parameters={\"factor1\": \"level11\", \"factor2\": \"level21\", \"factor3\": \"level31\"}\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "af6e0970-7ef7-43d6-bf51-53d49fb3faca" - }, - "source": [ - "## 4. Run an exploratory batch" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "03ece8d9-05e8-467b-af53-7bf6bf27100f" - }, - "source": [ - "\n", - "We then generate an a set of arms that covers the full space of the factorial design, including the status quo. There are three parameters, with two, three, and four values, respectively, so there are 24 possible arms." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from math import prod\n", - "n = prod(len(p.values) for p in search_space.parameters.values())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1626985056428, - "executionStopTime": 1626985056466, - "originalKey": "336e037d-856c-4b64-9b29-a867c59504f8", - "requestMsgId": "7d00cd3f-82ec-4280-986c-8d0eebec37fe" - }, - "outputs": [], - "source": [ - "factorial = Generators.FACTORIAL(search_space=exp.search_space)\n", - "factorial_run = factorial.gen(\n", - " # Number of arms to generate is derived from the search space. \n", - " # So n passed here will be overwritten by internal logic.\n", - " n=n \n", - ") \n", - "print(len(factorial_run.arms))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "f333ba26-51e4-4420-9ef2-ce70753e761a" - }, - "source": [ - "Now we create a trial including all of these arms, so that we can collect data and evaluate the performance of each." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1626985058790, - "executionStopTime": 1626985058824, - "originalKey": "f2827f56-4047-400d-b04a-abe54c92f741", - "requestMsgId": "a437ff61-38f1-431e-a3e7-db6201a815a9" - }, - "outputs": [], - "source": [ - "trial = exp.new_batch_trial(optimize_for_power=True).add_generator_run(\n", - " factorial_run, multiplier=1\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "685dbafd-41d2-43f3-bfa6-8b2de0693939" - }, - "source": [ - "By default, the weight of each arm in `factorial_run` will be 1. However, to optimize for power on the contrasts of `k` groups against the status quo, the status quo should be `sqrt(k)` larger than any of the treatment groups. Since we have 24 different arms in our search space, the status quo should be roughly five times larger. That larger weight is automatically set by Ax under the hood if `optimize_for_power` kwarg is set to True on new batched trial creation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1626985063153, - "executionStopTime": 1626985063222, - "originalKey": "5595e26c-e177-4cb8-8a08-072887a46518", - "requestMsgId": "a272e32c-eef2-41c7-97e7-79597ad3bfdc" - }, - "outputs": [], - "source": [ - "trial._status_quo_weight_override" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "29988eea-ca36-4dcb-86e8-3074d1724a79" - }, - "source": [ - "## 5. Iterate using Thompson Sampling" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "b129269f-f305-4d3f-a714-edd2eaa3d5cc", - "showInput": true - }, - "source": [ - "\n", - "Next, we run multiple trials (iterations of the experiment) to hone in on the optimal arm(s). \n", - "\n", - "In each iteration, we first collect data about all arms in that trial by calling `trial.run()` and `trial.mark_complete()`. Then we run Thompson Sampling, which assigns a weight to each arm that is proportional to the probability of that arm being the best. Arms whose weight exceed `min_weight` are added to the next trial, so that we can gather more data on their performance." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:08.480646Z", - "start_time": "2019-04-01T09:59:07.908822-07:00" - }, - "code_folding": [], - "executionStartTime": 1626985067022, - "executionStopTime": 1626985068028, - "hidden_ranges": [], - "originalKey": "ef666431-ac01-4f6e-9c45-2d87d5e3c17d", - "requestMsgId": "56be7e99-c8ca-4ff0-a09e-9685cf21a38c" - }, - "outputs": [], - "source": [ - "models = []\n", - "for i in range(4):\n", - " print(f\"Running trial {i+1}...\")\n", - " trial.run()\n", - " trial.mark_completed()\n", - " thompson = Generators.THOMPSON(experiment=exp, data=trial.fetch_data(), min_weight=0.01)\n", - " models.append(thompson)\n", - " thompson_run = thompson.gen(n=n)\n", - " trial = exp.new_batch_trial(optimize_for_power=True).add_generator_run(thompson_run)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "61073290-8081-4d86-8d35-6ed0572f78ed", - "showInput": false - }, - "source": [ - "## Plot 1: Predicted outcomes for each arm in initial trial" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "c91bdb84-b539-4e62-9b62-ed3109387a4e", - "showInput": false - }, - "source": [ - "\n", - "The plot below shows the mean and standard error for each arm in the first trial. We can see that the standard error for the status quo is the smallest, since this arm was assigned 5x weight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:08.534814Z", - "start_time": "2019-04-01T09:59:08.482576-07:00" - }, - "code_folding": [], - "executionStartTime": 1626984357974, - "executionStopTime": 1626984358116, - "hidden_ranges": [], - "originalKey": "a67258fa-d063-44e7-95b4-f106cd5c9920", - "requestMsgId": "2f6e361b-a3d4-4d4a-b9c2-0b001d605b40" - }, - "outputs": [], - "source": [ - "render(plot_fitted(models[0], metric=\"success_metric\", rel=False))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e1a49380-6a6f-4d8d-a637-090ddb2ea9ce" - }, - "source": [ - "## Plot 2: Predicted outcomes for arms in last trial" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "8ff61bf1-1794-480c-83d5-d2e5ff2388a1" - }, - "source": [ - "The following plot below shows the mean and standard error for each arm that made it to the last trial (as well as the status quo, which appears throughout). " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1626984362259, - "executionStopTime": 1626984362405, - "originalKey": "4297845f-c757-4e4e-a90d-d381e7ebf9f6", - "requestMsgId": "9d659e4e-7c71-4327-be1b-58684eaa07fc" - }, - "outputs": [], - "source": [ - "render(plot_fitted(models[-1], metric=\"success_metric\", rel=False))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "db5d2ac7-230a-445a-ba86-bd17190bfa71" - }, - "source": [ - "\n", - "As expected given our evaluation function, arms with higher levels\n", - "perform better and are given higher weight. Below we see the arms\n", - "that made it to the final trial." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:08.548754Z", - "start_time": "2019-04-01T09:59:08.536758-07:00" - }, - "executionStartTime": 1626984366493, - "executionStopTime": 1626984366528, - "originalKey": "c28a65ed-d02c-418c-9c31-af9ce3fd2cee", - "requestMsgId": "777c0d21-4c3f-434a-a394-09e10440fa49" - }, - "outputs": [], - "source": [ - "results = pd.DataFrame(\n", - " [\n", - " {\"values\": \",\".join(arm.parameters.values()), \"weight\": weight}\n", - " for arm, weight in trial.normalized_arm_weights().items()\n", - " ]\n", - ")\n", - "print(results)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "1b35fc96-10db-41f0-9046-86a2d3a0086b" - }, - "source": [ - "## Plot 3: Rollout Process" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e7973105-5c2a-46aa-90c7-fe7c7fed8fc7" - }, - "source": [ - "We can also visualize the progression of the experience in the following rollout chart. Each bar represents a trial, and the width of the bands within a bar are proportional to the weight of the arms in that trial. \n", - "\n", - "In the first trial, all arms appear with equal weight, except for the status quo. By the last trial, we have narrowed our focus to only four arms, with arm 0_22 (the arm with the highest levels) having the greatest weight." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T16:59:08.569844Z", - "start_time": "2019-04-01T09:59:08.550440-07:00" - }, - "executionStartTime": 1626984396783, - "executionStopTime": 1626984396959, - "originalKey": "58a42f2b-e446-4a4c-8375-1e39754dc1b9", - "requestMsgId": "3eefbfde-8c2b-47bc-b7c7-28cdafc2ad25" - }, - "outputs": [], - "source": [ - "from ax.plot.bandit_rollout import plot_bandit_rollout\n", - "from ax.utils.notebook.plotting import render\n", - "\n", - "render(plot_bandit_rollout(exp))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "a9d4add2-b04e-48c0-87d2-42a702f0ba60" - }, - "source": [ - "## Plot 4: Marginal Effects" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "79e28d86-8752-415c-8f8f-7bdc0357fd5c" - }, - "source": [ - "Finally, we can examine which parameter values had the greatest effect on the overall arm value. As we see in the diagram below, arms whose parameters were assigned the lower level values (such as `levell1`, `levell2`, `level31` and `level32`) performed worse than average, whereas arms with higher levels performed better than average." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "end_time": "2019-04-01T17:03:56.645223Z", - "start_time": "2019-04-01T10:03:56.563655-07:00" - }, - "code_folding": [], - "executionStartTime": 1626984407454, - "executionStopTime": 1626984407690, - "hidden_ranges": [], - "originalKey": "8e347a24-b6d8-462a-9f89-5527eb7aac6b", - "requestMsgId": "f1d12da0-7576-43d7-a9c6-c5d71981899f" - }, - "outputs": [], - "source": [ - "from ax.plot.marginal_effects import plot_marginal_effects\n", - "\n", - "render(plot_marginal_effects(models[0], \"success_metric\"))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/generation_strategy/generation_strategy.ipynb b/tutorials/generation_strategy/generation_strategy.ipynb deleted file mode 100644 index eb54dee59c1..00000000000 --- a/tutorials/generation_strategy/generation_strategy.ipynb +++ /dev/null @@ -1,467 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ax.generation_strategy.dispatch_utils import choose_generation_strategy\n", - "from ax.generation_strategy.generation_strategy import GenerationStep, GenerationStrategy\n", - "from ax.modelbridge.modelbridge_utils import get_pending_observation_features\n", - "from ax.modelbridge.registry import ModelRegistryBase, Generators\n", - "\n", - "from ax.utils.testing.core_stubs import get_branin_experiment, get_branin_search_space" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Generation Strategy (GS) Tutorial\n", - "\n", - "`GenerationStrategy` ([API reference](https://ax.dev/api/modelbridge.html#ax.generation_strategy.generation_strategy.GenerationStrategy)) is a key abstraction in Ax:\n", - "- It allows for specifying multiple optimization algorithms to chain one after another in the course of the optimization. \n", - "- Many higher-level APIs in Ax use generation strategies: Service and Loop APIs, `Scheduler` etc. (tutorials for all those higher-level APIs are here: https://ax.dev/tutorials/).\n", - "- Generation strategy allows for storage and resumption of modeling setups, making optimization resumable from SQL or JSON snapshots.\n", - "\n", - "This tutorial walks through a few examples of generation strategies and discusses its important settings. Before reading it, we recommend familiarizing yourself with how `Generator` and `Adapter` work in Ax: https://ax.dev/docs/models.html#deeper-dive-organization-of-the-modeling-stack.\n", - "\n", - "**Contents:**\n", - "1. Quick-start examples\n", - " 1. Manually configured GS\n", - " 2. Auto-selected GS\n", - " 3. Candidate generation from a GS\n", - "2. Deep dive: `GenerationStep` a building block of the generation strategy\n", - " 1. Describing a model\n", - " 2. Other `GenerationStep` settings\n", - " 3. Chaining `GenerationStep`-s together\n", - " 4. `max_parallelism` enforcement and handling the `MaxParallelismReachedException`\n", - "3. `GenerationStrategy` storage\n", - " 1. JSON storage\n", - " 2. SQL storage\n", - "4. Advanced considerations / \"gotchas\"\n", - " 1. Generation strategy produces `GeneratorRun`-s, not `Trial`-s\n", - " 2. `model_kwargs` elements that don't have associated serialization logic in Ax\n", - " 3. Why prefer `Models` registry enum entries over a factory function?\n", - " 4. How to request more modeling setups in `Models`?\n", - " \n", - "----" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Quick-start examples\n", - "\n", - "### 1A. Manually configured generation strategy\n", - "\n", - "Below is a typical generation strategy used for most single-objective optimization cases in Ax:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gs = GenerationStrategy(\n", - " steps=[\n", - " # 1. Initialization step (does not require pre-existing data and is well-suited for\n", - " # initial sampling of the search space)\n", - " GenerationStep(\n", - " model=Generators.SOBOL,\n", - " num_trials=5, # How many trials should be produced from this generation step\n", - " min_trials_observed=3, # How many trials need to be completed to move to next model\n", - " max_parallelism=5, # Max parallelism for this step\n", - " model_kwargs={\"seed\": 999}, # Any kwargs you want passed into the model\n", - " model_gen_kwargs={}, # Any kwargs you want passed to `modelbridge.gen`\n", - " ),\n", - " # 2. Bayesian optimization step (requires data obtained from previous phase and learns\n", - " # from all data available at the time of each new candidate generation call)\n", - " GenerationStep(\n", - " model=Generators.BOTORCH_MODULAR,\n", - " num_trials=-1, # No limitation on how many trials should be produced from this step\n", - " max_parallelism=3, # Parallelism limit for this step, often lower than for Sobol\n", - " # More on parallelism vs. required samples in BayesOpt:\n", - " # https://ax.dev/docs/bayesopt.html#tradeoff-between-parallelism-and-total-number-of-trials\n", - " ),\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1B. Auto-selected generation strategy\n", - "\n", - "Ax provides a [`choose_generation_strategy`](https://github.com/facebook/Ax/blob/main/ax/modelbridge/dispatch_utils.py#L115) utility, which can auto-select a suitable generation strategy given a search space and an array of other optional settings. The utility is fairly simple at the moment, but additional development (support for multi-objective optimization, multi-fidelity optimization, Bayesian optimization with categorical kernels etc.) is coming soon." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gs = choose_generation_strategy(\n", - " # Required arguments:\n", - " search_space=get_branin_search_space(), # Ax `SearchSpace`\n", - " # Some optional arguments (shown with their defaults), see API docs for more settings:\n", - " # https://ax.dev/api/modelbridge.html#module-ax.generation_strategy.dispatch_utils\n", - " use_batch_trials=False, # Whether this GS will be used to generate 1-arm `Trial`-s or `BatchTrials`\n", - " no_bayesian_optimization=False, # Use quasi-random candidate generation without BayesOpt\n", - " max_parallelism_override=None, # Integer, to which to set the `max_parallelism` setting of all steps in this GS\n", - ")\n", - "gs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1C. Candidate generation from a generation strategy\n", - "\n", - "While often used through Service or Loop API or other higher-order abstractions like the Ax `Scheduler` (where the generation strategy is used to fit models and produce candidates from them under-the-hood), it's also possible to use the GS directly, in place of a `Adapter` instance. The interface of `GenerationStrategy.gen` is the same as `Adapter.gen`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment = get_branin_experiment()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that it's important to **specify pending observations** to the call to `gen` to avoid getting the same points re-suggested. Without `pending_observations` argument, Ax models are not aware of points that should be excluded from generation. Points are considered \"pending\" when they belong to `STAGED`, `RUNNING`, or `ABANDONED` trials (with the latter included so model does not re-suggest points that are considered \"bad\" and should not be re-suggested).\n", - "\n", - "If the call to `get_pending_obervation_features` becomes slow in your setup (since it performs data-fetching etc.), you can opt for `get_pending_observation_features_based_on_trial_status` (also from `ax.modelbridge.modelbridge_utils`), but note the limitations of that utility (detailed in its docstring)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "generator_run = gs.gen(\n", - " experiment=experiment, # Ax `Experiment`, for which to generate new candidates\n", - " data=None, # Ax `Data` to use for model training, optional.\n", - " n=1, # Number of candidate arms to produce\n", - " pending_observations=get_pending_observation_features(\n", - " experiment\n", - " ), # Points that should not be re-generated\n", - " # Any other kwargs specified will be passed through to `ModelBridge.gen` along with `GenerationStep.model_gen_kwargs`\n", - ")\n", - "generator_run" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then we can add the newly produced [`GeneratorRun`](https://ax.dev/docs/glossary.html#generator-run) to the experiment as a [`Trial` (or `BatchTrial` if `n` > 1)](https://ax.dev/docs/glossary.html#trial):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "trial = experiment.new_trial(generator_run)\n", - "trial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Important notes on `GenerationStrategy.gen`:**\n", - "- if `data` argument above is not specified, GS will pull experiment data from cache via `experiment.lookup_data`,\n", - "- without specifying `pending_observations`, the GS (and any model in Ax) could produce the same candidate over and over, as without that argument the model is not 'aware' that the candidate is part of a `RUNNING` or `ABANDONED` trial and should not be re-suggested again.\n", - "\n", - "In cases where `get_pending_observation_features` is too slow and the experiment consists of 1-arm `Trial`-s only, it's possible to use `get_pending_observation_features_based_on_trial_status` instead (found in the same file)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that when using the Ax Service API, one of the arguments to `AxClient` is `choose_generation_strategy_kwargs`; specifying that argument is a convenient way to influence the choice of generation strategy in `AxClient` without manually specifying a full `GenerationStrategy`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "-----" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. `GenerationStep` as a building block of generation strategy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2A. Describing a generator to use in a given `GenerationStep`\n", - "\n", - "There are two ways of specifying a generator for a generation step: via an entry in a `Models` enum or via a 'factory function' –– a callable generator constructor (e.g. [`get_GPEI`](https://github.com/facebook/Ax/blob/0e454b71d5e07b183c0866855555b6a21ddd5da1/ax/modelbridge/factory.py#L154) and other factory functions in the same file). Note that using the latter path, a factory function, will prohibit `GenerationStrategy` storage and is generally discouraged. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2B. Other `GenerationStep` settings\n", - "\n", - "All of the available settings are described in the documentation:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(GenerationStep.__doc__)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2C. Chaining `GenerationStep`-s together\n", - "\n", - "A `GenerationStrategy` moves from one step to another when: \n", - "1. `N=num_trials` generator runs were produced and attached as trials to the experiment AND \n", - "2. `M=min_trials_observed` have been completed and have data.\n", - "\n", - "**Caveat: `enforce_num_trials` setting**:\n", - "\n", - "1. If `enforce_num_trials=True` for a given generation step, if 1) is reached but 2) is not yet reached, the generation strategy will raise a `DataRequiredError`, indicating that more trials need to be completed before the next step.\n", - "2. If `enforce_num_trials=False`, the GS will continue producing generator runs from the current step until 2) is reached." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2D. `max_parallelism` enforcement\n", - "\n", - "Generation strategy can restrict the number of trials that can be ran simultaneously (to encourage sequential optimization, which benefits Bayesian optimization performance). When the parallelism limit is reached, a call to `GenerationStrategy.gen` will result in a `MaxParallelismReachedException`.\n", - "\n", - "The correct way to handle this exception:\n", - "1. Make sure that `GenerationStep.max_parallelism` is configured correctly for all steps in your generation strategy (to disable it completely, configure `GenerationStep.max_parallelism=None`),\n", - "2. When encountering the exception, wait to produce more generator runs until more trial evluations complete and log the trial completion via `trial.mark_completed`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "----\n", - "\n", - "## 3. SQL and JSON storage of a generation strategy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When used through Service API or `Scheduler`, generation strategy will be automatically stored to SQL or JSON via specifying `DBSettings` to either `AxClient` or `Scheduler` (details in respective tutorials in the [\"Tutorials\" page](https://ax.dev/tutorials/)). Generation strategy can also be stored to SQL or JSON individually, as shown below.\n", - "\n", - "More detail on SQL and JSON storage in Ax generally can be [found in \"Building Blocks of Ax\" tutorial](https://ax.dev/tutorials/building_blocks.html#9.-Save-to-JSON-or-SQL)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3A. SQL storage\n", - "For SQL storage setup in Ax, read through the [\"Storage\" documentation page](https://ax.dev/docs/storage.html).\n", - "\n", - "Note that unlike an Ax experiment, a generation strategy does not have a name or another unique identifier. Therefore, a generation strategy is stored in association with experiment and can be retrieved by the associated experiment's name." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ax.storage.sqa_store.db import (\n", - " create_all_tables,\n", - " get_engine,\n", - " init_engine_and_session_factory,\n", - ")\n", - "from ax.storage.sqa_store.load import (\n", - " load_experiment,\n", - " load_generation_strategy_by_experiment_name,\n", - ")\n", - "from ax.storage.sqa_store.save import save_experiment, save_generation_strategy\n", - "\n", - "init_engine_and_session_factory(url=\"sqlite:///foo2.db\")\n", - "\n", - "engine = get_engine()\n", - "create_all_tables(engine)\n", - "\n", - "save_experiment(experiment)\n", - "save_generation_strategy(gs)\n", - "\n", - "experiment = load_experiment(experiment_name=experiment.name)\n", - "gs = load_generation_strategy_by_experiment_name(\n", - " experiment_name=experiment.name,\n", - " experiment=experiment, # Can optionally specify experiment object to avoid loading it from database twice\n", - ")\n", - "gs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3B. JSON storage" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ax.storage.json_store.decoder import object_from_json\n", - "from ax.storage.json_store.encoder import object_to_json\n", - "\n", - "gs_json = object_to_json(gs) # Can be written to a file or string via `json.dump` etc.\n", - "gs = object_from_json(\n", - " gs_json\n", - ") # Decoded back from JSON (can be loaded from file, string via `json.load` etc.)\n", - "gs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "------" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Advanced considerations\n", - "\n", - "Below is a list of important \"gotchas\" of using generation strategy (especially outside of the higher-level APIs like the Service API or the `Scheduler`):\n", - "\n", - "### 3A. `GenerationStrategy.gen` produces `GeneratorRun`-s, not trials\n", - "\n", - "Since `GenerationStrategy.gen` mimics `Adapter.gen` and allows for human-in-the-loop usage mode, a call to `gen` produces a `GeneratorRun`, which can then be added (or altered before addition or not added at all) to a `Trial` or `BatchTrial` on a given experiment. So it's important to add the generator run to a trial, since otherwise it will not be attached to the experiment on its own." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "generator_run = gs.gen(\n", - " experiment=experiment,\n", - " n=1,\n", - " pending_observations=get_pending_observation_features(experiment),\n", - ")\n", - "experiment.new_trial(generator_run)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3B. `model_kwargs` elements that do not define serialization logic in Ax" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that passing objects that are not yet serializable in Ax (e.g. a BoTorch `Prior` object) as part of `GenerationStep.model_kwargs` or `GenerationStep.model_gen_kwargs` will prevent correct generation strategy storage. If this becomes a problem, feel free to open an issue on our Github: https://github.com/facebook/Ax/issues to get help with adding storage support for a given object." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3C. Why prefer `Generators` enum entries over a factory function?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1. **Storage potential:** a call to, for example, `Generators.GPEI` captures all arguments to the model and model bridge and stores them on a generator runs, subsequently produced by the model. Since the capturing logic is part of `Generators.__call__` function, it is not present in a factory function. Furthermore, there is no safe and flexible way to serialize callables in Python.\n", - "2. **Standardization:** While a 'factory function' is by default more flexible (accepts any specified inputs and produces a `Adapter` with an underlying `Generator` instance based on them), it is not standard in terms of its inputs. `Generators` introduces a standardized interface, making it easy to adapt any example to one's specific case." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3D. How can I request more modeling setups added to `Generators` and natively supported in Ax?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Please open a [Github issue](https://github.com/facebook/Ax/issues) to request a new modeling setup in Ax (or for any other questions or requests)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/gpei_hartmann_developer/gpei_hartmann_developer.ipynb b/tutorials/gpei_hartmann_developer/gpei_hartmann_developer.ipynb deleted file mode 100644 index a203031c757..00000000000 --- a/tutorials/gpei_hartmann_developer/gpei_hartmann_developer.ipynb +++ /dev/null @@ -1,696 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "08064d6a-453e-44d7-85dc-896d40b6303a", - "showInput": true - }, - "source": [ - "# Developer API Example on Hartmann6\n", - "\n", - "The Developer API is suitable when the user wants maximal customization of the optimization loop. This tutorial demonstrates optimization of a Hartmann6 function using the `Experiment` construct. In this example, trials will be evaluated synchronously." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646323252842, - "executionStopTime": 1646323256492, - "hidden_ranges": [], - "originalKey": "7b98b243-30da-468b-82c7-7e22dbce6b57", - "requestMsgId": "7b98b243-30da-468b-82c7-7e22dbce6b57" - }, - "outputs": [], - "source": [ - "from ax import (\n", - " ChoiceParameter,\n", - " ComparisonOp,\n", - " Experiment,\n", - " FixedParameter,\n", - " Metric,\n", - " Objective,\n", - " OptimizationConfig,\n", - " OrderConstraint,\n", - " OutcomeConstraint,\n", - " ParameterType,\n", - " RangeParameter,\n", - " SearchSpace,\n", - " SumConstraint,\n", - ")\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "f522bb04-8372-4647-8c90-cffb8a664be3", - "showInput": true - }, - "source": [ - "## 1. Create Search Space\n", - "\n", - "First, we define a search space, which defines the type and allowed range for the parameters." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646323256533, - "executionStopTime": 1646323256546, - "originalKey": "9b782d53-f9e2-4b13-a8ba-b7941aba802e", - "requestMsgId": "9b782d53-f9e2-4b13-a8ba-b7941aba802e" - }, - "outputs": [], - "source": [ - "from ax.metrics.l2norm import L2NormMetric\n", - "from ax.metrics.hartmann6 import Hartmann6Metric\n", - "\n", - "\n", - "hartmann_search_space = SearchSpace(\n", - " parameters=[\n", - " RangeParameter(\n", - " name=f\"x{i}\", parameter_type=ParameterType.FLOAT, lower=0.0, upper=1.0\n", - " )\n", - " for i in range(6)\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "9e0c312c-e290-4e7b-bf9c-45bd5c360c25", - "showInput": false - }, - "source": [ - "Note that there are two other parameter classes, FixedParameter and ChoiceParameter. Although we won't use these in this example, you can create them as follows.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646323256562, - "executionStopTime": 1646323256584, - "hidden_ranges": [], - "originalKey": "e29cbb8f-9045-4d9c-8a57-aeff1cd91da6", - "requestMsgId": "e29cbb8f-9045-4d9c-8a57-aeff1cd91da6", - "showInput": true - }, - "outputs": [], - "source": [ - "choice_param = ChoiceParameter(\n", - " name=\"choice\", values=[\"foo\", \"bar\"], parameter_type=ParameterType.STRING\n", - ")\n", - "fixed_param = FixedParameter(\n", - " name=\"fixed\", value=[True], parameter_type=ParameterType.BOOL\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "75b46af0-9739-46a6-9b95-21c8e2e9e22a", - "showInput": false - }, - "source": [ - "Sum constraints enforce that the sum of a set of parameters is greater or less than some bound, and order constraints enforce that one parameter is smaller than the other. We won't use these either, but see two examples below.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646323256616, - "executionStopTime": 1646323256621, - "hidden_ranges": [], - "originalKey": "b782e8cf-c11c-4f4e-a416-2577a56b4100", - "requestMsgId": "b782e8cf-c11c-4f4e-a416-2577a56b4100", - "showInput": true - }, - "outputs": [], - "source": [ - "sum_constraint = SumConstraint(\n", - " parameters=[\n", - " hartmann_search_space.parameters[\"x0\"],\n", - " hartmann_search_space.parameters[\"x1\"],\n", - " ],\n", - " is_upper_bound=True,\n", - " bound=5.0,\n", - ")\n", - "\n", - "order_constraint = OrderConstraint(\n", - " lower_parameter=hartmann_search_space.parameters[\"x0\"],\n", - " upper_parameter=hartmann_search_space.parameters[\"x1\"],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "7bf887e2-2b02-4237-ba5e-6fa8beaa85fb", - "showInput": false - }, - "source": [ - "## 2. Create Optimization Config\n", - "\n", - "Second, we define the `optimization_config` with an `objective` and `outcome_constraints`.\n", - "\n", - "When doing the optimization, we will find points that minimize the objective while obeying the constraints (which in this case means `l2norm < 1.25`).\n", - "\n", - "Note: we are using `Hartmann6Metric` and `L2NormMetric` here, which have built in evaluation functions for testing. For creating your own cutom metrics, see [8. Defining custom metrics](/docs/tutorials/gpei_hartmann_developer/#8-defining-custom-metrics)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646323256629, - "executionStopTime": 1646323256633, - "hidden_ranges": [], - "originalKey": "d0e2b580-bfb5-4a73-8db1-34a3c43c3ef2", - "requestMsgId": "d0e2b580-bfb5-4a73-8db1-34a3c43c3ef2" - }, - "outputs": [], - "source": [ - "param_names = [f\"x{i}\" for i in range(6)]\n", - "optimization_config = OptimizationConfig(\n", - " objective=Objective(\n", - " metric=Hartmann6Metric(name=\"hartmann6\", param_names=param_names),\n", - " minimize=True,\n", - " ),\n", - " outcome_constraints=[\n", - " OutcomeConstraint(\n", - " metric=L2NormMetric(name=\"l2norm\", param_names=param_names, noise_sd=0.2),\n", - " op=ComparisonOp.LEQ,\n", - " bound=1.25,\n", - " relative=False,\n", - " )\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "ed80a5e4-4786-4961-979e-22a295bfa7f0", - "showInput": false - }, - "source": [ - "## 3. Define a Runner\n", - "Before an experiment can collect data, it must have a Runner attached. A runner handles the deployment of trials. A trial must be \"run\" before it can be evaluated.\n", - "\n", - "Here, we have a dummy runner that does nothing. In practice, a runner might be in charge of pushing an experiment to production.\n", - "\n", - "The only method that needs to be defined for runner subclasses is run, which performs any necessary deployment logic, and returns a dictionary of resulting metadata. This metadata can later be accessed through the trial's `run_metadata` property." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646323256641, - "executionStopTime": 1646323256645, - "hidden_ranges": [], - "originalKey": "c9862804-4c0c-4691-be2c-5cb0eb778460", - "requestMsgId": "c9862804-4c0c-4691-be2c-5cb0eb778460", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax import Runner\n", - "\n", - "\n", - "class MyRunner(Runner):\n", - " def run(self, trial):\n", - " trial_metadata = {\"name\": str(trial.index)}\n", - " return trial_metadata" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "131ab2a9-e2c7-4752-99a3-547c7dbe42ec", - "showInput": false - }, - "source": [ - "## 4. Create Experiment\n", - "Next, we make an `Experiment` with our search space, runner, and optimization config." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646323256653, - "executionStopTime": 1646323256658, - "hidden_ranges": [], - "originalKey": "18ce7d69-d556-48f5-9945-c75bedb362bb", - "requestMsgId": "18ce7d69-d556-48f5-9945-c75bedb362bb", - "showInput": true - }, - "outputs": [], - "source": [ - "exp = Experiment(\n", - " name=\"test_hartmann\",\n", - " search_space=hartmann_search_space,\n", - " optimization_config=optimization_config,\n", - " runner=MyRunner(),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "8a04eba9-97f2-45f7-8b10-7216fe9c0101", - "showInput": true - }, - "source": [ - "## 5. Perform Optimization\n", - "\n", - "Run the optimization using the settings defined on the experiment. We will create 5 random sobol points for exploration followed by 15 points generated using the GPEI optimizer.\n", - "\n", - "Instead of a member of the `Generators` enum to produce generator runs, users can leverage a `GenerationStrategy`. See the [Generation Strategy Tutorial](https://ax.dev/docs/tutorials/generation_strategy) for more info." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646323256665, - "executionStopTime": 1646323714923, - "hidden_ranges": [], - "originalKey": "b48e26da-57e7-4b81-baf0-122a71f0bb72", - "requestMsgId": "b48e26da-57e7-4b81-baf0-122a71f0bb72" - }, - "outputs": [], - "source": [ - "from ax.modelbridge.registry import Generators\n", - "\n", - "NUM_SOBOL_TRIALS = 5\n", - "NUM_BOTORCH_TRIALS = 15\n", - "\n", - "print(f\"Running Sobol initialization trials...\")\n", - "sobol = Generators.SOBOL(search_space=exp.search_space)\n", - "\n", - "for i in range(NUM_SOBOL_TRIALS):\n", - " # Produce a GeneratorRun from the model, which contains proposed arm(s) and other metadata\n", - " generator_run = sobol.gen(n=1)\n", - " # Add generator run to a trial to make it part of the experiment and evaluate arm(s) in it\n", - " trial = exp.new_trial(generator_run=generator_run)\n", - " # Start trial run to evaluate arm(s) in the trial\n", - " trial.run()\n", - " # Mark trial as completed to record when a trial run is completed\n", - " # and enable fetching of data for metrics on the experiment\n", - " # (by default, trials must be completed before metrics can fetch their data,\n", - " # unless a metric is explicitly configured otherwise)\n", - " trial.mark_completed()\n", - "\n", - "for i in range(NUM_BOTORCH_TRIALS):\n", - " print(\n", - " f\"Running BO trial {i + NUM_SOBOL_TRIALS + 1}/{NUM_SOBOL_TRIALS + NUM_BOTORCH_TRIALS}...\"\n", - " )\n", - " # Reinitialize GP+EI model at each step with updated data.\n", - " gpei = Generators.BOTORCH_MODULAR(experiment=exp, data=exp.fetch_data())\n", - " generator_run = gpei.gen(n=1)\n", - " trial = exp.new_trial(generator_run=generator_run)\n", - " trial.run()\n", - " trial.mark_completed()\n", - "\n", - "print(\"Done!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "f503e648-e3f2-419f-a60e-5bfcbc6775bd", - "showInput": true - }, - "source": [ - "## 6. Inspect trials' data\n", - "\n", - "Now we can inspect the `Experiment`'s data by calling `fetch_data()`, which retrieves evaluation data for all trials of the experiment.\n", - "\n", - "To fetch trial data, we need to run it and mark it completed. For most metrics in Ax, data is only available once the status of the trial is `COMPLETED`, since in real-worlds scenarios, metrics can typically only be fetched after the trial finished running.\n", - "\n", - "NOTE: Metrics classes may implement the `is_available_while_running` method. When this method returns `True`, data is available when trials are either `RUNNING` or `COMPLETED`. This can be used to obtain intermediate results from A/B test trials and other online experiments, or when metric values are available immediately, like in the case of synthetic problem metrics.\n", - "The below call to `exp.fetch_data()` also attaches data to the last trial, which because of the way we looped through Botorch trials in [5. Perform Optimization](/docs/tutorials/gpei_hartmann_developer/#5-perform-optimization), would otherwise not have data attached. This is necessary to get `objective_means` in [7. Plot results](/docs/tutorials/gpei_hartmann_developer/#7-plot-results)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646323715232, - "executionStopTime": 1646323715950, - "hidden_ranges": [], - "originalKey": "88fb1408-0965-48f9-a211-140ea57f46a6", - "requestMsgId": "88fb1408-0965-48f9-a211-140ea57f46a6", - "showInput": true - }, - "outputs": [], - "source": [ - "exp.fetch_data().df" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "940865f9-af61-4668-aea0-b19ed5c5497d", - "showInput": false - }, - "source": [ - "## 7. Plot results\n", - "Now we can plot the results of our optimization:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646323715983, - "executionStopTime": 1646323716634, - "hidden_ranges": [], - "originalKey": "5a4d2c4d-756a-492a-8938-d080a499b66c", - "requestMsgId": "5a4d2c4d-756a-492a-8938-d080a499b66c" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "from ax.plot.trace import optimization_trace_single_method\n", - "\n", - "# `plot_single_method` expects a 2-d array of means, because it expects to average means from multiple\n", - "# optimization runs, so we wrap out best objectives array in another array.\n", - "objective_means = np.array([[trial.objective_mean for trial in exp.trials.values()]])\n", - "best_objective_plot = optimization_trace_single_method(\n", - " y=np.minimum.accumulate(objective_means, axis=1),\n", - " optimum=-3.32237, # Known minimum objective for Hartmann6 function.\n", - ")\n", - "render(best_objective_plot)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "934db3fd-1dce-421b-8228-820025f3821a", - "showInput": true - }, - "source": [ - "## 8. Defining custom metrics\n", - "In order to perform an optimization, we also need to define an optimization config for the experiment. An optimization config is composed of an objective metric to be minimized or maximized in the experiment, and optionally a set of outcome constraints that place restrictions on how other metrics can be moved by the experiment.\n", - "\n", - "In order to define an objective or outcome constraint, we first need to subclass Metric. Metrics are used to evaluate trials, which are individual steps of the experiment sequence. Each trial contains one or more arms for which we will collect data at the same time.\n", - "\n", - "Our custom metric(s) will determine how, given a trial, to compute the mean and SEM of each of the trial's arms.\n", - "\n", - "The only method that needs to be defined for most metric subclasses is `fetch_trial_data`, which defines how a single trial is evaluated, and returns a pandas dataframe.\n", - " \n", - "The `is_available_while_running` method is optional and returns a boolean, specifying whether the trial data can be fetched before the trial is complete. See [6. Inspect trials' data](/docs/tutorials/gpei_hartmann_developer/#6-inspect-trials-data) for more details." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646323716638, - "executionStopTime": 1646323716697, - "hidden_ranges": [], - "originalKey": "7ec75ae4-1d7f-4ff4-8d9d-b77fdf28ccfe", - "requestMsgId": "7ec75ae4-1d7f-4ff4-8d9d-b77fdf28ccfe", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax import Data\n", - "import pandas as pd\n", - "\n", - "\n", - "class BoothMetric(Metric):\n", - " def fetch_trial_data(self, trial):\n", - " records = []\n", - " for arm_name, arm in trial.arms_by_name.items():\n", - " params = arm.parameters\n", - " records.append(\n", - " {\n", - " \"arm_name\": arm_name,\n", - " \"metric_name\": self.name,\n", - " \"trial_index\": trial.index,\n", - " # in practice, the mean and sem will be looked up based on trial metadata\n", - " # but for this tutorial we will calculate them\n", - " \"mean\": (params[\"x1\"] + 2 * params[\"x2\"] - 7) ** 2\n", - " + (2 * params[\"x1\"] + params[\"x2\"] - 5) ** 2,\n", - " \"sem\": 0.0,\n", - " }\n", - " )\n", - " return Data(df=pd.DataFrame.from_records(records))\n", - "\n", - " def is_available_while_running(self) -> bool:\n", - " return True" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "92fcddf9-9d86-45cd-b9fb-a0a7acdb267d", - "showInput": false - }, - "source": [ - "## 9. Save to JSON or SQL\n", - "At any point, we can also save our experiment to a JSON file. To ensure that our custom metrics and runner are saved properly, we first need to register them." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646324682655, - "executionStopTime": 1646324682796, - "hidden_ranges": [], - "originalKey": "f57e11d7-cc68-4323-a0cd-ff6f464dcd97", - "requestMsgId": "f57e11d7-cc68-4323-a0cd-ff6f464dcd97", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax.storage.registry_bundle import RegistryBundle\n", - "\n", - "bundle = RegistryBundle(\n", - " metric_clss={BoothMetric: None, L2NormMetric: None, Hartmann6Metric: None},\n", - " runner_clss={MyRunner: None},\n", - ")\n", - "\n", - "from ax.storage.json_store.load import load_experiment\n", - "from ax.storage.json_store.save import save_experiment\n", - "\n", - "save_experiment(exp, \"experiment.json\", encoder_registry=bundle.encoder_registry)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646324718153, - "executionStopTime": 1646324720104, - "hidden_ranges": [], - "originalKey": "e19ec7fb-f266-417e-ad17-5662a53a9ae3", - "requestMsgId": "e19ec7fb-f266-417e-ad17-5662a53a9ae3", - "showInput": true - }, - "outputs": [], - "source": [ - "loaded_experiment = load_experiment(\n", - " \"experiment.json\", decoder_registry=bundle.decoder_registry\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "dc1f6800-437e-45de-85d3-276ae5f8ca99", - "showInput": false - }, - "source": [ - "To save our experiment to SQL, we must first specify a connection to a database and create all necessary tables.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646324834810, - "executionStopTime": 1646324835293, - "hidden_ranges": [], - "originalKey": "a0376ade-9a26-430b-b08b-0b93e890539c", - "requestMsgId": "a0376ade-9a26-430b-b08b-0b93e890539c", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax.storage.sqa_store.db import (\n", - " init_engine_and_session_factory,\n", - " get_engine,\n", - " create_all_tables,\n", - ")\n", - "from ax.storage.sqa_store.load import load_experiment\n", - "from ax.storage.sqa_store.save import save_experiment\n", - "\n", - "init_engine_and_session_factory(url=\"sqlite:///foo3.db\")\n", - "\n", - "engine = get_engine()\n", - "create_all_tables(engine)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646324891053, - "executionStopTime": 1646324897271, - "hidden_ranges": [], - "originalKey": "82f58ead-8f0d-44cf-9fa8-dd67f7c8c8df", - "requestMsgId": "82f58ead-8f0d-44cf-9fa8-dd67f7c8c8df", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax.storage.sqa_store.sqa_config import SQAConfig\n", - "\n", - "exp.name = \"new\"\n", - "\n", - "sqa_config = SQAConfig(\n", - " json_encoder_registry=bundle.encoder_registry,\n", - " json_decoder_registry=bundle.decoder_registry,\n", - " metric_registry=bundle.metric_registry,\n", - " runner_registry=bundle.runner_registry,\n", - ")\n", - "\n", - "save_experiment(exp, config=sqa_config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1646324904964, - "executionStopTime": 1646324906901, - "hidden_ranges": [], - "originalKey": "ed1be69c-da92-4a1d-a5e8-e76bba42f0ba", - "requestMsgId": "ed1be69c-da92-4a1d-a5e8-e76bba42f0ba", - "showInput": true - }, - "outputs": [], - "source": [ - "load_experiment(exp.name, config=sqa_config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "originalKey": "d144e372-c212-4454-b507-564c825c1fc5", - "showInput": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/gpei_hartmann_loop/gpei_hartmann_loop.ipynb b/tutorials/gpei_hartmann_loop/gpei_hartmann_loop.ipynb deleted file mode 100644 index 320df994853..00000000000 --- a/tutorials/gpei_hartmann_loop/gpei_hartmann_loop.ipynb +++ /dev/null @@ -1,251 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Loop API Example on Hartmann6\n", - "\n", - "The loop API is the most lightweight way to do optimization in Ax. The user makes one call to `optimize`, which performs all of the optimization under the hood and returns the optimized parameters.\n", - "\n", - "For more customizability of the optimization procedure, consider the Service or Developer API." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from ax.metrics.branin import branin\n", - "\n", - "from ax.plot.contour import plot_contour\n", - "from ax.plot.trace import optimization_trace_single_method\n", - "from ax.service.managed_loop import optimize\n", - "from ax.utils.measurement.synthetic_functions import hartmann6\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Define evaluation function\n", - "\n", - "First, we define an evaluation function that is able to compute all the metrics needed for this experiment. This function needs to accept a set of parameter values and can also accept a weight. It should produce a dictionary of metric names to tuples of mean and standard error for those metrics." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def hartmann_evaluation_function(parameterization):\n", - " x = np.array([parameterization.get(f\"x{i+1}\") for i in range(6)])\n", - " # In our case, standard error is 0, since we are computing a synthetic function.\n", - " return {\"hartmann6\": (hartmann6(x), 0.0), \"l2norm\": (np.sqrt((x**2).sum()), 0.0)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If there is only one metric in the experiment – the objective – then evaluation function can return a single tuple of mean and SEM, in which case Ax will assume that evaluation corresponds to the objective. It can also return only the mean as a float, in which case Ax will treat SEM as unknown and use a model that can infer it. For more details on evaluation function, refer to the \"Trial Evaluation\" section in the docs." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Run optimization\n", - "The setup for the loop is fully compatible with JSON. The optimization algorithm is selected based on the properties of the problem search space." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_parameters, values, experiment, model = optimize(\n", - " parameters=[\n", - " {\n", - " \"name\": \"x1\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " \"value_type\": \"float\", # Optional, defaults to inference from type of \"bounds\".\n", - " \"log_scale\": False, # Optional, defaults to False.\n", - " },\n", - " {\n", - " \"name\": \"x2\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x3\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x4\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x5\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x6\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " ],\n", - " experiment_name=\"test\",\n", - " objective_name=\"hartmann6\",\n", - " evaluation_function=hartmann_evaluation_function,\n", - " minimize=True, # Optional, defaults to False.\n", - " parameter_constraints=[\"x1 + x2 <= 20\"], # Optional.\n", - " outcome_constraints=[\"l2norm <= 1.25\"], # Optional.\n", - " total_trials=30, # Optional.\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And we can introspect optimization results:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "means, covariances = values\n", - "means" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For comparison, minimum of Hartmann6 is:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "hartmann6.fmin" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Plot results\n", - "Here we arbitrarily select \"x1\" and \"x2\" as the two parameters to plot for both metrics, \"hartmann6\" and \"l2norm\"." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(plot_contour(model=model, param_x=\"x1\", param_y=\"x2\", metric_name=\"hartmann6\"))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(plot_contour(model=model, param_x=\"x1\", param_y=\"x2\", metric_name=\"l2norm\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We also plot optimization trace, which shows best hartmann6 objective value seen by each iteration of the optimization:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# `plot_single_method` expects a 2-d array of means, because it expects to average means from multiple\n", - "# optimization runs, so we wrap out best objectives array in another array.\n", - "best_objectives = np.array(\n", - " [[trial.objective_mean for trial in experiment.trials.values()]]\n", - ")\n", - "best_objective_plot = optimization_trace_single_method(\n", - " y=np.minimum.accumulate(best_objectives, axis=1),\n", - " optimum=hartmann6.fmin,\n", - " title=\"Model performance vs. # of iterations\",\n", - " ylabel=\"Hartmann6\",\n", - ")\n", - "render(best_objective_plot)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/gpei_hartmann_service/gpei_hartmann_service.ipynb b/tutorials/gpei_hartmann_service/gpei_hartmann_service.ipynb deleted file mode 100644 index c56aa2e5542..00000000000 --- a/tutorials/gpei_hartmann_service/gpei_hartmann_service.ipynb +++ /dev/null @@ -1,540 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Service API Example on Hartmann6\n", - "\n", - "The Ax Service API is designed to allow the user to control scheduling of trials and data computation while having an easy to use interface with Ax.\n", - "\n", - "The user iteratively:\n", - "- Queries Ax for candidates\n", - "- Schedules / deploys them however they choose\n", - "- Computes data and logs to Ax\n", - "- Repeat" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from ax.utils.measurement.synthetic_functions import hartmann6\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Initialize client\n", - "\n", - "Create a client object to interface with Ax APIs. By default this runs locally without storage." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client = AxClient()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Set up experiment\n", - "An experiment consists of a **search space** (parameters and parameter constraints) and **optimization configuration** (objectives and outcome constraints). Note that:\n", - "- Only `parameters`, and `objectives` arguments are required.\n", - "- Dictionaries in `parameters` have the following required keys: \"name\" - parameter name, \"type\" - parameter type (\"range\", \"choice\" or \"fixed\"), \"bounds\" for range parameters, \"values\" for choice parameters, and \"value\" for fixed parameters.\n", - "- Dictionaries in `parameters` can optionally include \"value_type\" (\"int\", \"float\", \"bool\" or \"str\"), \"log_scale\" flag for range parameters, and \"is_ordered\" flag for choice parameters.\n", - "- `parameter_constraints` should be a list of strings of form \"p1 >= p2\" or \"p1 + p2 <= some_bound\".\n", - "- `outcome_constraints` should be a list of strings of form \"constrained_metric <= some_bound\"." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client.create_experiment(\n", - " name=\"hartmann_test_experiment\",\n", - " parameters=[\n", - " {\n", - " \"name\": \"x1\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " \"value_type\": \"float\", # Optional, defaults to inference from type of \"bounds\".\n", - " \"log_scale\": False, # Optional, defaults to False.\n", - " },\n", - " {\n", - " \"name\": \"x2\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x3\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x4\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x5\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " {\n", - " \"name\": \"x6\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " },\n", - " ],\n", - " objectives={\"hartmann6\": ObjectiveProperties(minimize=True)},\n", - " parameter_constraints=[\"x1 + x2 <= 2.0\"], # Optional.\n", - " outcome_constraints=[\"l2norm <= 1.25\"], # Optional.\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Define how to evaluate trials\n", - "When using Ax a service, evaluation of parameterizations suggested by Ax is done either locally or, more commonly, using an external scheduler. Below is a dummy evaluation function that outputs data for two metrics \"hartmann6\" and \"l2norm\". Note that all returned metrics correspond to either the `objectives` set on experiment creation or the metric names mentioned in `outcome_constraints`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "\n", - "def evaluate(parameterization):\n", - " x = np.array([parameterization.get(f\"x{i+1}\") for i in range(6)])\n", - " # In our case, standard error is 0, since we are computing a synthetic function.\n", - " return {\"hartmann6\": (hartmann6(x), 0.0), \"l2norm\": (np.sqrt((x**2).sum()), 0.0)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Result of the evaluation should generally be a mapping of the format: `{metric_name -> (mean, SEM)}`. If there is only one metric in the experiment – the objective – then evaluation function can return a single tuple of mean and SEM, in which case Ax will assume that evaluation corresponds to the objective. _It can also return only the mean as a float, in which case Ax will treat SEM as unknown and use a model that can infer it._ \n", - "\n", - "For more details on evaluation function, refer to the \"Trial Evaluation\" section in the Ax docs at [ax.dev](https://ax.dev/)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Run optimization loop\n", - "With the experiment set up, we can start the optimization loop.\n", - "\n", - "At each step, the user queries the client for a new trial then submits the evaluation of that trial back to the client.\n", - "\n", - "Note that Ax auto-selects an appropriate optimization algorithm based on the search space. For more advance use cases that require a specific optimization algorithm, pass a `generation_strategy` argument into the `AxClient` constructor. Note that when Bayesian Optimization is used, generating new trials may take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(25):\n", - " parameterization, trial_index = ax_client.get_next_trial()\n", - " # Local evaluation here can be replaced with deployment to external system.\n", - " ax_client.complete_trial(trial_index=trial_index, raw_data=evaluate(parameterization))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many trials can run in parallel?\n", - "By default, Ax restricts number of trials that can run in parallel for some optimization stages, in order to improve the optimization performance and reduce the number of trials that the optimization will require. To check the maximum parallelism for each optimization stage:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client.get_max_parallelism()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The output of this function is a list of tuples of form (number of trials, max parallelism), so the example above means \"the max parallelism is 12 for the first 12 trials and 3 for all subsequent trials.\" This is because the first 12 trials are produced quasi-randomly and can all be evaluated at once, and subsequent trials are produced via Bayesian optimization, which converges on optimal point in fewer trials when parallelism is limited. `MaxParallelismReachedException` indicates that the parallelism limit has been reached –– refer to the 'Service API Exceptions Meaning and Handling' section at the end of the tutorial for handling." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How to view all existing trials during optimization?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client.generation_strategy.trials_as_df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Retrieve best parameters\n", - "\n", - "Once it's complete, we can access the best parameters found, as well as the corresponding metric values." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_parameters, values = ax_client.get_best_parameters()\n", - "best_parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "means, covariances = values\n", - "means" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For comparison, Hartmann6 minimum:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "hartmann6.fmin" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 6. Plot the response surface and optimization trace\n", - "Here we arbitrarily select \"x1\" and \"x2\" as the two parameters to plot for both metrics, \"hartmann6\" and \"l2norm\"." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(ax_client.get_contour_plot())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also retrieve a contour plot for the other metric, \"l2norm\" –– say, we are interested in seeing the response surface for parameters \"x3\" and \"x4\" for this one." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(ax_client.get_contour_plot(param_x=\"x3\", param_y=\"x4\", metric_name=\"l2norm\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we plot the optimization trace, showing the progression of finding the point with the optimal objective:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(\n", - " ax_client.get_optimization_trace(objective_optimum=hartmann6.fmin)\n", - ") # Objective_optimum is optional." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 7. Save / reload optimization to JSON / SQL\n", - "We can serialize the state of optimization to JSON and save it to a `.json` file or save it to the SQL backend. For the former:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client.save_to_json_file() # For custom filepath, pass `filepath` argument." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "restored_ax_client = (\n", - " AxClient.load_from_json_file()\n", - ") # For custom filepath, pass `filepath` argument." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To store state of optimization to an SQL backend, first follow [setup instructions](https://ax.dev/docs/storage.html#sql) on Ax website." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Having set up the SQL backend, pass `DBSettings` to `AxClient` on instantiation (note that `SQLAlchemy` dependency will have to be installed – for installation, refer to [optional dependencies](https://ax.dev/docs/installation.html#optional-dependencies) on Ax website):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ax.storage.sqa_store.structs import DBSettings\n", - "\n", - "# URL is of the form \"dialect+driver://username:password@host:port/database\".\n", - "db_settings = DBSettings(url=\"sqlite:///foo.db\")\n", - "# Instead of URL, can provide a `creator function`; can specify custom encoders/decoders if necessary.\n", - "new_ax = AxClient(db_settings=db_settings)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When valid `DBSettings` are passed into `AxClient`, a unique experiment name is a required argument (`name`) to `ax_client.create_experiment`. The **state of the optimization is auto-saved** any time it changes (i.e. a new trial is added or completed, etc). \n", - "\n", - "To reload an optimization state later, instantiate `AxClient` with the same `DBSettings` and use `ax_client.load_experiment_from_database(experiment_name=\"my_experiment\")`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Special Cases" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Evaluation failure**: should any optimization iterations fail during evaluation, `log_trial_failure` will ensure that the same trial is not proposed again." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "_, trial_index = ax_client.get_next_trial()\n", - "ax_client.log_trial_failure(trial_index=trial_index)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Adding custom trials**: should there be need to evaluate a specific parameterization, `attach_trial` will add it to the experiment." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client.attach_trial(\n", - " parameters={\"x1\": 0.9, \"x2\": 0.9, \"x3\": 0.9, \"x4\": 0.9, \"x5\": 0.9, \"x6\": 0.9}\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Need to run many trials in parallel**: for optimal results and optimization efficiency, we strongly recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). However, if your use case needs to dispatch many trials in parallel before they are updated with data and you are running into the *\"All trials for current model have been generated, but not enough data has been observed to fit next model\"* error, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Nonlinear parameter constraints and/or constraints on non-Range parameters:** Ax parameter constraints can currently only support linear inequalities ([discussion](https://github.com/facebook/Ax/issues/153)). Users may be able to simulate this functionality, however, by substituting the following `evaluate` function for that defined in section 3 above." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def evaluate(parameterization):\n", - " x = np.array([parameterization.get(f\"x{i+1}\") for i in range(6)])\n", - " # First calculate the nonlinear quantity to be constrained.\n", - " l2norm = np.sqrt((x**2).sum())\n", - " # Then define a constraint consistent with an outcome constraint on this experiment.\n", - " if l2norm > 1.25:\n", - " return {\"l2norm\": (l2norm, 0.0)}\n", - " return {\"hartmann6\": (hartmann6(x), 0.0), \"l2norm\": (l2norm, 0.0)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For this to work, the constraint quantity (`l2norm` in this case) should have a corresponding outcome constraint on the experiment. See the outcome_constraint arg to ax_client.create_experiment in section 2 above for how to specify outcome constraints.\n", - "\n", - "This setup accomplishes the following:\n", - "1. Allows computation of an arbitrarily complex constraint value.\n", - "2. Skips objective computation when the constraint is violated, useful when the objective is relatively expensive to compute.\n", - "3. Constraint metric values are returned even when there is a violation. This helps the model understand + avoid constraint violations." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Service API Exceptions Meaning and Handling\n", - "[**`DataRequiredError`**](https://ax.dev/api/exceptions.html#ax.exceptions.core.DataRequiredError): Ax generation strategy needs to be updated with more data to proceed to the next optimization model. When the optimization moves from initialization stage to the Bayesian optimization stage, the underlying BayesOpt model needs sufficient data to train. For optimal results and optimization efficiency (finding the optimal point in the least number of trials), we recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). Therefore, the correct way to handle this exception is to wait until more trial evaluations complete and log their data via `ax_client.complete_trial(...)`. \n", - "\n", - "However, if there is strong need to generate more trials before more data is available, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`. With this setting, as many trials will be generated from the initialization stage as requested, and the optimization will move to the BayesOpt stage whenever enough trials are completed." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[**`MaxParallelismReachedException`**](https://ax.dev/api/modelbridge.html#ax.modelbridge.generation_strategy.MaxParallelismReachedException): generation strategy restricts the number of trials that can be ran simultaneously (to encourage sequential optimization), and the parallelism limit has been reached. The correct way to handle this exception is the same as `DataRequiredError` – to wait until more trial evluations complete and log their data via `ax_client.complete_trial(...)`.\n", - " \n", - "In some cases higher parallelism is important, so `enforce_sequential_optimization=False` kwarg to AxClient allows to suppress limiting of parallelism. It's also possible to override the default parallelism setting for all stages of the optimization by passing `choose_generation_strategy_kwargs` to `ax_client.create_experiment`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client = AxClient()\n", - "ax_client.create_experiment(\n", - " parameters=[\n", - " {\"name\": \"x\", \"type\": \"range\", \"bounds\": [-5.0, 10.0]},\n", - " {\"name\": \"y\", \"type\": \"range\", \"bounds\": [0.0, 15.0]},\n", - " ],\n", - " # Sets max parallelism to 10 for all steps of the generation strategy.\n", - " choose_generation_strategy_kwargs={\"max_parallelism_override\": 10},\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ax_client.get_max_parallelism() # Max parallelism is now 10 for all stages of the optimization." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/gss/gss.ipynb b/tutorials/gss/gss.ipynb deleted file mode 100644 index 3fcc7260d31..00000000000 --- a/tutorials/gss/gss.ipynb +++ /dev/null @@ -1,558 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "06e172a0-2da3-4c90-93c2-be01bf4f6d45", - "showInput": false - }, - "source": [ - "This tutorial illustrates use of a Global Stopping Strategy (GSS) in combination with the Service API. For background on the Service API, see the Service API Tutorial: https://ax.dev/tutorials/gpei_hartmann_service.html GSS is also supported in the Scheduler API, where it can be provided as part of `SchedulerOptions`. For more on `Scheduler`, see the Scheduler tutorial: https://ax.dev/tutorials/scheduler.html\n", - "\n", - "Global Stopping stops an optimization loop when some data-based criteria are met which suggest that future trials will not be very helpful. For example, we might stop when there has been very little improvement in the last five trials. This is as opposed to trial-level early stopping, which monitors the results of expensive evaluations and terminates those that are unlikely to produce promising results, freeing resources to explore more promising configurations. For more on trial-level early stopping, see the tutorial: https://ax.dev/tutorials/early_stopping/early_stopping.html" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "customOutput": null, - "executionStartTime": 1683829335587, - "executionStopTime": 1683829339370, - "originalKey": "00a04d2c-d990-41c1-9eef-bbb05fba000d", - "requestMsgId": "1c560539-1c7d-4c7a-ae55-e87c3b601859" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from ax.utils.measurement.synthetic_functions import Branin, branin\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "8688d729-b402-4a4c-b796-94fdcf5e022c", - "showInput": false - }, - "source": [ - "# 1. What happens without global stopping? Optimization can run for too long.\n", - "This example uses the Branin test problem. We run 25 trials, which turns out to be far more than needed, because we get close to the optimum quite quickly." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829339516, - "executionStopTime": 1683829339531, - "originalKey": "320a952b-9e78-43e1-a55b-76a355e90f83", - "requestMsgId": "14e3a517-c7d0-4300-92d9-57ceb5afca34", - "showInput": true - }, - "outputs": [], - "source": [ - "def evaluate(parameters):\n", - " x = np.array([parameters.get(f\"x{i+1}\") for i in range(2)])\n", - " return {\"branin\": (branin(x), 0.0)}" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829339659, - "executionStopTime": 1683829339668, - "originalKey": "5740fbc2-97d6-465b-b01c-61e6c34c0220", - "requestMsgId": "ff819cc9-ff17-4763-a857-83662b01e955", - "showInput": true - }, - "outputs": [], - "source": [ - "params = [\n", - " {\n", - " \"name\": f\"x{i + 1}\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [*Branin._domain[i]],\n", - " \"value_type\": \"float\",\n", - " \"log_scale\": False,\n", - " }\n", - "\n", - " for i in range(2)\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829339782, - "executionStopTime": 1683829339834, - "originalKey": "65667172-14df-437b-bdd0-5a59580e4054", - "requestMsgId": "e0bc2847-17a5-43d7-bf49-ed97c90f1d50", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client = AxClient(random_seed=0, verbose_logging=False)\n", - "\n", - "ax_client.create_experiment(\n", - " name=\"branin_test_experiment\",\n", - " parameters=params,\n", - " objectives={\"branin\": ObjectiveProperties(minimize=True)},\n", - " is_test=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829339928, - "executionStopTime": 1683829356006, - "originalKey": "1f208de3-5189-4847-a779-940795977845", - "requestMsgId": "95f327f2-327f-4284-93ae-3053c9b6ec45", - "showInput": true - }, - "outputs": [], - "source": [ - "%%time\n", - "for i in range(25):\n", - " parameters, trial_index = ax_client.get_next_trial()\n", - " # Local evaluation here can be replaced with deployment to external system.\n", - " ax_client.complete_trial(\n", - " trial_index=trial_index, raw_data=evaluate(parameters)\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829356136, - "executionStopTime": 1683829356616, - "originalKey": "a369aafa-8ee4-4c02-bea6-673271da81ab", - "requestMsgId": "b601e1e9-fd2d-4faf-a369-04e5c4a9f8cb", - "showInput": true - }, - "outputs": [], - "source": [ - "render(ax_client.get_optimization_trace())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "ca391462-4695-44f1-bc53-070a947c5648", - "showInput": false - }, - "source": [ - "# 2. Optimization with global stopping, with the Service API" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "5a2690ef-0990-4cbd-9bc9-529b1455a4c3", - "showInput": false - }, - "source": [ - "Rather than running a fixed number of trials, we can use a GlobalStoppingStrategy (GSS), which checks whether some stopping criteria have been met when `get_next_trial` is called. Here, we use an `ImprovementGlobalStoppingStrategy`, which checks whether the the last `window_size` trials have improved by more than some threshold amount.\n", - "\n", - "For single-objective optimization, which we are doing here, `ImprovementGlobalStoppingStrategy` checks if an improvement is \"significant\" by comparing it to the inter-quartile range (IQR) of the objective values attained so far. \n", - "\n", - "`ImprovementGlobalStoppingStrategy` also supports multi-objective optimization (MOO), in which case it checks whether the percentage improvement in hypervolume over the last `window_size` trials exceeds `improvement_bar`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829356716, - "executionStopTime": 1683829356725, - "originalKey": "a6634232-448a-4b84-98cd-399c755537df", - "requestMsgId": "7e428336-eeeb-4e5b-91c4-fcf5a671773d", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax.global_stopping.strategies.improvement import ImprovementGlobalStoppingStrategy\n", - "from ax.exceptions.core import OptimizationShouldStop" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829356822, - "executionStopTime": 1683829356829, - "originalKey": "c313de63-03ee-4a65-aa5c-5e7b6f436480", - "requestMsgId": "953b064b-8db6-430f-909d-872469bc1e16", - "showInput": true - }, - "outputs": [], - "source": [ - "# Start considering stopping only after the 5 initialization trials + 5 GPEI trials.\n", - "# Stop if the improvement in the best point in the past 5 trials is less than\n", - "# 1% of the IQR thus far.\n", - "stopping_strategy = ImprovementGlobalStoppingStrategy(\n", - " min_trials=5 + 5, window_size=5, improvement_bar=0.01\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829356961, - "executionStopTime": 1683829356997, - "originalKey": "a2c6c699-f0d2-4001-9bee-3964594e435c", - "requestMsgId": "2ba6f82b-1443-4274-83d1-03c56f0190d0", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client_gss = AxClient(\n", - " global_stopping_strategy=stopping_strategy, random_seed=0, verbose_logging=False\n", - ")\n", - "\n", - "ax_client_gss.create_experiment(\n", - " name=\"branin_test_experiment\",\n", - " parameters=params,\n", - " objectives={\"branin\": ObjectiveProperties(minimize=True)},\n", - " is_test=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "7ff170a1-e885-429f-9695-8b64b5b8e209", - "showInput": false - }, - "source": [ - "If there has not been much improvement, `ImprovementGlobalStoppingStrategy` will raise an exception. If the exception is raised, we catch it and terminate optimization." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829357114, - "executionStopTime": 1683829363866, - "originalKey": "3db097cb-1e6e-4320-806a-981dcef6bade", - "requestMsgId": "fd039109-2a23-4287-8935-b74274405e56", - "showInput": true - }, - "outputs": [], - "source": [ - "for i in range(25):\n", - " try:\n", - " parameters, trial_index = ax_client_gss.get_next_trial()\n", - " except OptimizationShouldStop as exc:\n", - " print(exc.message)\n", - " break\n", - " ax_client_gss.complete_trial(trial_index=trial_index, raw_data=evaluate(parameters))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829363988, - "executionStopTime": 1683829364103, - "originalKey": "ffb53ed2-8775-492d-a357-348957637454", - "requestMsgId": "f0f765dd-85db-4519-90d0-064a1bf64b6d", - "showInput": true - }, - "outputs": [], - "source": [ - "render(ax_client_gss.get_optimization_trace())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "b01707f3-0bbf-4003-9222-29ba5e3c77b2", - "showInput": false - }, - "source": [ - "# 3. Write your own custom Global Stopping Strategy" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "23b8372b-0067-4934-b599-210b994e06f1", - "showInput": false - }, - "source": [ - "You can write a custom Global Stopping Strategy by subclassing `BaseGlobalStoppingStrategy` and use it where `ImprovementGlobalStoppingStrategy` was used above." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829364214, - "executionStopTime": 1683829364222, - "originalKey": "2e5512a9-82ed-43a0-8616-6cee7f648b0f", - "requestMsgId": "d5c268a1-fefe-49d5-8ff4-a2cb40fe278b", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax.global_stopping.strategies.base import BaseGlobalStoppingStrategy\n", - "from typing import Tuple\n", - "from ax.core.experiment import Experiment\n", - "from ax.core.base_trial import TrialStatus\n", - "from ax.global_stopping.strategies.improvement import constraint_satisfaction" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "584df5ac-c0f6-4c48-8cec-f9765a04e635", - "showInput": false - }, - "source": [ - "Here, we define `SimpleThresholdGlobalStoppingStrategy`, which stops when we observe a point better than a provided threshold. This can be useful when there is a known optimum. For example, the Branin function has an optimum of zero. When the optimum is not known, this can still be useful from a satisficing perspective: For example, maybe we need a model to take up less than a certain amount of RAM so it doesn't crash our usual hardware, but there is no benefit to further improvements." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829490325, - "executionStopTime": 1683829490340, - "originalKey": "bbd24d6e-a873-49d6-abe3-4d832acb8a60", - "requestMsgId": "74b77cb7-54eb-4321-afae-942b62b90f5d", - "showInput": true - }, - "outputs": [], - "source": [ - "class SimpleThresholdGlobalStoppingStrategy(BaseGlobalStoppingStrategy):\n", - " \"\"\"\n", - " A GSS that stops when we observe a point better than `threshold`.\n", - " \"\"\"\n", - " def __init__(\n", - " self,\n", - " min_trials: int,\n", - " inactive_when_pending_trials: bool = True,\n", - " threshold: float = 0.1\n", - " ):\n", - " self.threshold = threshold\n", - " super().__init__(\n", - " min_trials=min_trials,\n", - " inactive_when_pending_trials=inactive_when_pending_trials\n", - " )\n", - " \n", - " def _should_stop_optimization(\n", - " self, experiment: Experiment\n", - " ) -> Tuple[bool, str]:\n", - " \"\"\"\n", - " Check if the best seen is better than `self.threshold`.\n", - " \"\"\"\n", - " feasible_objectives = [\n", - " trial.objective_mean\n", - " for trial in experiment.trials_by_status[TrialStatus.COMPLETED]\n", - " if constraint_satisfaction(trial)\n", - " ]\n", - "\n", - " # Computing the interquartile for scaling the difference\n", - " if len(feasible_objectives) <= 1:\n", - " message = \"There are not enough feasible arms tried yet.\"\n", - " return False, message\n", - " \n", - " minimize = experiment.optimization_config.objective.minimize\n", - " if minimize:\n", - " best = np.min(feasible_objectives)\n", - " stop = best < self.threshold\n", - " else:\n", - " best = np.max(feasible_objectives)\n", - " stop = best > self.threshold\n", - "\n", - " comparison = \"less\" if minimize else \"greater\"\n", - " if stop:\n", - " message = (\n", - " f\"The best objective seen is {best:.3f}, which is {comparison} \"\n", - " f\"than the threshold of {self.threshold:.3f}.\"\n", - " )\n", - " else:\n", - " message = \"\"\n", - "\n", - " return stop, message" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829491609, - "executionStopTime": 1683829491626, - "originalKey": "f3dc5682-0539-4c85-a66a-0d3128f0cc1c", - "requestMsgId": "9ee9e413-be32-49fc-a7bc-8e1898d1dbf5", - "showInput": true - }, - "outputs": [], - "source": [ - "stopping_strategy = SimpleThresholdGlobalStoppingStrategy(min_trials=5, threshold=1.)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829491833, - "executionStopTime": 1683829491894, - "originalKey": "3d6c1ab2-c3ee-49c8-9969-45f2455bbd60", - "requestMsgId": "08232010-46f8-4b28-b581-454ddacdc57b", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client_custom_gss = AxClient(\n", - " global_stopping_strategy=stopping_strategy,\n", - " random_seed=0,\n", - " verbose_logging=False,\n", - ")\n", - "\n", - "ax_client_custom_gss.create_experiment(\n", - " name=\"branin_test_experiment\",\n", - " parameters=params,\n", - " objectives={\"branin\": ObjectiveProperties(minimize=True)},\n", - " is_test=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829492064, - "executionStopTime": 1683829495338, - "originalKey": "a306cb15-364f-4e91-b569-9067843a7578", - "requestMsgId": "81121dac-3a2a-4dde-b866-44e448e73ad5", - "showInput": true - }, - "outputs": [], - "source": [ - "for i in range(25):\n", - " try:\n", - " parameters, trial_index = ax_client_custom_gss.get_next_trial()\n", - " except OptimizationShouldStop as exc:\n", - " print(exc.message)\n", - " break\n", - " ax_client_custom_gss.complete_trial(\n", - " trial_index=trial_index, raw_data=evaluate(parameters)\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1683829495351, - "executionStopTime": 1683829495740, - "originalKey": "3cb59624-d9bb-4b7a-9f57-7cb968dce889", - "requestMsgId": "4dd4ed93-07ab-4dd1-92a9-f003f405ccbc", - "showInput": true - }, - "outputs": [], - "source": [ - "render(ax_client_custom_gss.get_optimization_trace())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "originalKey": "5f4eaa42-a8cb-42b2-b8b4-b2fa53398270", - "showInput": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/human_in_the_loop/hitl_data.json b/tutorials/human_in_the_loop/hitl_data.json deleted file mode 100644 index c64644ba1bd..00000000000 --- a/tutorials/human_in_the_loop/hitl_data.json +++ /dev/null @@ -1 +0,0 @@ -{"arm_name":{"0":"0_1","1":"0_23","2":"0_14","3":"0_53","4":"0_53","5":"0_0","6":"0_54","7":"0_54","8":"0_55","9":"0_55","10":"0_56","11":"0_27","12":"0_56","13":"0_0","14":"0_57","15":"0_57","16":"0_58","17":"0_58","18":"0_13","19":"0_59","20":"0_59","21":"0_6","22":"0_13","23":"0_27","24":"0_14","25":"0_6","26":"0_60","27":"0_60","28":"0_61","29":"0_61","30":"0_62","31":"0_62","32":"0_63","33":"0_63","34":"0_7","35":"0_28","36":"0_15","37":"0_15","38":"0_16","39":"0_16","40":"0_17","41":"0_17","42":"0_28","43":"0_18","44":"0_18","45":"0_19","46":"0_19","47":"0_29","48":"0_2","49":"0_2","50":"0_20","51":"0_20","52":"0_21","53":"0_7","54":"0_21","55":"0_1","56":"0_22","57":"0_22","58":"0_23","59":"0_29","60":"0_3","61":"0_3","62":"0_30","63":"0_30","64":"0_8","65":"0_10","66":"0_31","67":"0_24","68":"0_31","69":"0_32","70":"0_10","71":"0_32","72":"0_33","73":"0_33","74":"0_34","75":"0_8","76":"0_34","77":"0_35","78":"0_35","79":"0_24","80":"0_36","81":"0_36","82":"0_37","83":"0_37","84":"0_38","85":"0_38","86":"0_9","87":"0_39","88":"0_39","89":"0_4","90":"0_4","91":"0_25","92":"0_11","93":"0_40","94":"0_40","95":"0_41","96":"0_11","97":"0_9","98":"0_41","99":"0_42","100":"0_42","101":"0_43","102":"0_43","103":"0_25","104":"0_44","105":"0_44","106":"0_45","107":"0_45","108":"status_quo","109":"0_46","110":"0_46","111":"0_47","112":"0_47","113":"0_48","114":"0_48","115":"0_26","116":"0_49","117":"0_49","118":"0_12","119":"status_quo","120":"0_5","121":"0_5","122":"0_50","123":"0_12","124":"0_50","125":"0_51","126":"0_51","127":"0_26","128":"0_52","129":"0_52"},"trial_index":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0},"end_time":{"0":1554249600000,"1":1554249600000,"2":1554249600000,"3":1554249600000,"4":1554249600000,"5":1554249600000,"6":1554249600000,"7":1554249600000,"8":1554249600000,"9":1554249600000,"10":1554249600000,"11":1554249600000,"12":1554249600000,"13":1554249600000,"14":1554249600000,"15":1554249600000,"16":1554249600000,"17":1554249600000,"18":1554249600000,"19":1554249600000,"20":1554249600000,"21":1554249600000,"22":1554249600000,"23":1554249600000,"24":1554249600000,"25":1554249600000,"26":1554249600000,"27":1554249600000,"28":1554249600000,"29":1554249600000,"30":1554249600000,"31":1554249600000,"32":1554249600000,"33":1554249600000,"34":1554249600000,"35":1554249600000,"36":1554249600000,"37":1554249600000,"38":1554249600000,"39":1554249600000,"40":1554249600000,"41":1554249600000,"42":1554249600000,"43":1554249600000,"44":1554249600000,"45":1554249600000,"46":1554249600000,"47":1554249600000,"48":1554249600000,"49":1554249600000,"50":1554249600000,"51":1554249600000,"52":1554249600000,"53":1554249600000,"54":1554249600000,"55":1554249600000,"56":1554249600000,"57":1554249600000,"58":1554249600000,"59":1554249600000,"60":1554249600000,"61":1554249600000,"62":1554249600000,"63":1554249600000,"64":1554249600000,"65":1554249600000,"66":1554249600000,"67":1554249600000,"68":1554249600000,"69":1554249600000,"70":1554249600000,"71":1554249600000,"72":1554249600000,"73":1554249600000,"74":1554249600000,"75":1554249600000,"76":1554249600000,"77":1554249600000,"78":1554249600000,"79":1554249600000,"80":1554249600000,"81":1554249600000,"82":1554249600000,"83":1554249600000,"84":1554249600000,"85":1554249600000,"86":1554249600000,"87":1554249600000,"88":1554249600000,"89":1554249600000,"90":1554249600000,"91":1554249600000,"92":1554249600000,"93":1554249600000,"94":1554249600000,"95":1554249600000,"96":1554249600000,"97":1554249600000,"98":1554249600000,"99":1554249600000,"100":1554249600000,"101":1554249600000,"102":1554249600000,"103":1554249600000,"104":1554249600000,"105":1554249600000,"106":1554249600000,"107":1554249600000,"108":1554249600000,"109":1554249600000,"110":1554249600000,"111":1554249600000,"112":1554249600000,"113":1554249600000,"114":1554249600000,"115":1554249600000,"116":1554249600000,"117":1554249600000,"118":1554249600000,"119":1554249600000,"120":1554249600000,"121":1554249600000,"122":1554249600000,"123":1554249600000,"124":1554249600000,"125":1554249600000,"126":1554249600000,"127":1554249600000,"128":1554249600000,"129":1554249600000},"mean":{"0":495.7630483864,"1":524.3677121973,"2":21.4602436992,"3":21.4374334625,"4":548.3876911099,"5":20.3938551623,"6":21.3634470762,"7":540.354941559,"8":21.4088999606,"9":543.3509256103,"10":21.8761495501,"11":21.7704708828,"12":561.0153373251,"13":464.4467049594,"14":20.9381701672,"15":515.5469981054,"16":21.3210724987,"17":547.1011628546,"18":21.4183918127,"19":21.8518919135,"20":572.7317928028,"21":21.3514435661,"22":544.5891065864,"23":521.4885673544,"24":556.068091252,"25":540.7413033532,"26":22.2431650654,"27":577.466025923,"28":23.9760921492,"29":591.7112903438,"30":20.8066326138,"31":486.9978083981,"32":21.038950512,"33":506.3635257112,"34":21.2963493601,"35":518.5691087639,"36":21.1164428415,"37":517.0287055503,"38":22.1907197586,"39":574.5273877209,"40":21.7126315645,"41":553.9417568228,"42":21.0854461784,"43":21.3535329606,"44":553.0256150304,"45":20.9149831146,"46":477.5755207251,"47":22.9278848853,"48":21.4194272163,"49":542.3029350722,"50":21.6224324583,"51":561.14681338,"52":21.6598472233,"53":537.7218273947,"54":563.6541000894,"55":20.8668886394,"56":21.6216898678,"57":570.8228707945,"58":20.9474084514,"59":569.4895133769,"60":21.5463005234,"61":548.2345843739,"62":21.0473200141,"63":534.8840893416,"64":21.1658724048,"65":20.8561277107,"66":20.3694726715,"67":22.061401753,"68":453.0657960088,"69":22.3289678016,"70":496.9535891264,"71":579.8755075795,"72":22.4920081911,"73":579.5490838314,"74":22.0823489199,"75":546.8571018679,"76":538.8404308226,"77":21.7785559743,"78":564.0915622365,"79":565.6264647098,"80":21.9157166512,"81":563.9575508896,"82":22.6371209753,"83":565.5011648274,"84":21.4723590682,"85":553.5400395602,"86":21.0336997163,"87":21.6640149689,"88":559.7036228384,"89":21.3033959051,"90":544.4295676658,"91":21.6400346563,"92":22.1811563552,"93":20.9308294427,"94":512.3005012676,"95":21.2604964675,"96":577.6802807769,"97":515.9073035981,"98":531.7389392235,"99":21.3937173897,"100":533.2995099946,"101":21.338490998,"102":540.1556866168,"103":564.7346483405,"104":23.2929146801,"105":585.7843090537,"106":21.1609294892,"107":543.4917462892,"108":21.6372636518,"109":20.9745011961,"110":521.8436058271,"111":22.5055156411,"112":541.1493906184,"113":21.3843847146,"114":535.162617066,"115":21.8797036224,"116":21.8001539366,"117":558.9373312742,"118":21.5082145841,"119":560.6473614869,"120":21.4727492046,"121":549.0511518835,"122":22.1199857861,"123":543.4399676676,"124":562.7090597954,"125":21.3405492897,"126":534.8772454669,"127":562.6174250382,"128":21.8315714862,"129":556.6430987863},"metric_name":{"0":"metric_1","1":"metric_1","2":"metric_2","3":"metric_2","4":"metric_1","5":"metric_2","6":"metric_2","7":"metric_1","8":"metric_2","9":"metric_1","10":"metric_2","11":"metric_2","12":"metric_1","13":"metric_1","14":"metric_2","15":"metric_1","16":"metric_2","17":"metric_1","18":"metric_2","19":"metric_2","20":"metric_1","21":"metric_2","22":"metric_1","23":"metric_1","24":"metric_1","25":"metric_1","26":"metric_2","27":"metric_1","28":"metric_2","29":"metric_1","30":"metric_2","31":"metric_1","32":"metric_2","33":"metric_1","34":"metric_2","35":"metric_1","36":"metric_2","37":"metric_1","38":"metric_2","39":"metric_1","40":"metric_2","41":"metric_1","42":"metric_2","43":"metric_2","44":"metric_1","45":"metric_2","46":"metric_1","47":"metric_2","48":"metric_2","49":"metric_1","50":"metric_2","51":"metric_1","52":"metric_2","53":"metric_1","54":"metric_1","55":"metric_2","56":"metric_2","57":"metric_1","58":"metric_2","59":"metric_1","60":"metric_2","61":"metric_1","62":"metric_2","63":"metric_1","64":"metric_2","65":"metric_2","66":"metric_2","67":"metric_2","68":"metric_1","69":"metric_2","70":"metric_1","71":"metric_1","72":"metric_2","73":"metric_1","74":"metric_2","75":"metric_1","76":"metric_1","77":"metric_2","78":"metric_1","79":"metric_1","80":"metric_2","81":"metric_1","82":"metric_2","83":"metric_1","84":"metric_2","85":"metric_1","86":"metric_2","87":"metric_2","88":"metric_1","89":"metric_2","90":"metric_1","91":"metric_2","92":"metric_2","93":"metric_2","94":"metric_1","95":"metric_2","96":"metric_1","97":"metric_1","98":"metric_1","99":"metric_2","100":"metric_1","101":"metric_2","102":"metric_1","103":"metric_1","104":"metric_2","105":"metric_1","106":"metric_2","107":"metric_1","108":"metric_2","109":"metric_2","110":"metric_1","111":"metric_2","112":"metric_1","113":"metric_2","114":"metric_1","115":"metric_2","116":"metric_2","117":"metric_1","118":"metric_2","119":"metric_1","120":"metric_2","121":"metric_1","122":"metric_2","123":"metric_1","124":"metric_1","125":"metric_2","126":"metric_1","127":"metric_1","128":"metric_2","129":"metric_1"},"n":{"0":1599994,"1":1596356,"2":1600182,"3":1601081,"4":1601081,"5":1600977,"6":1603031,"7":1603031,"8":1600581,"9":1600581,"10":1600291,"11":1599226,"12":1600291,"13":1600977,"14":1585783,"15":1585783,"16":1587579,"17":1587579,"18":1597045,"19":1590369,"20":1590369,"21":1600140,"22":1597045,"23":1599226,"24":1600182,"25":1600140,"26":1585686,"27":1585686,"28":1587380,"29":1587380,"30":1587640,"31":1587640,"32":1587022,"33":1587022,"34":1600673,"35":1600204,"36":1598884,"37":1598884,"38":1597324,"39":1597324,"40":1598231,"41":1598231,"42":1600204,"43":1599224,"44":1599224,"45":1599954,"46":1599954,"47":1597744,"48":1600453,"49":1600453,"50":1597853,"51":1597853,"52":1598661,"53":1600673,"54":1598661,"55":1599994,"56":1600373,"57":1600373,"58":1596356,"59":1597744,"60":1597034,"61":1597034,"62":1599249,"63":1599249,"64":1598777,"65":1598206,"66":1600831,"67":1599729,"68":1600831,"69":1597957,"70":1598206,"71":1597957,"72":1600580,"73":1600580,"74":1600635,"75":1598777,"76":1600635,"77":1601211,"78":1601211,"79":1599729,"80":1599978,"81":1599978,"82":1598753,"83":1598753,"84":1597801,"85":1597801,"86":1600071,"87":1597787,"88":1597787,"89":1598818,"90":1598818,"91":1597623,"92":1600526,"93":1600057,"94":1600057,"95":1597699,"96":1600526,"97":1600071,"98":1597699,"99":1601500,"100":1601500,"101":1599307,"102":1599307,"103":1597623,"104":1599534,"105":1599534,"106":1598645,"107":1598645,"108":12780098,"109":1599836,"110":1599836,"111":1601161,"112":1601161,"113":1600513,"114":1600513,"115":1598820,"116":1599620,"117":1599620,"118":1600577,"119":12780098,"120":1598968,"121":1598968,"122":1599595,"123":1600577,"124":1599595,"125":1597829,"126":1597829,"127":1598820,"128":1598131,"129":1598131},"sem":{"0":2.6216409435,"1":2.7316473644,"2":0.0694574465,"3":0.0699414615,"4":2.8934857582,"5":0.0694551705,"6":0.0688945934,"7":2.8053833949,"8":0.0701939655,"9":2.8663260433,"10":0.0718543885,"11":0.0698253327,"12":2.9914440155,"13":2.4541150028,"14":0.0694771091,"15":2.7170580726,"16":0.0706757884,"17":2.8829537327,"18":0.0700077284,"19":0.0709192508,"20":3.0555746837,"21":0.0691774093,"22":2.8486424948,"23":2.7235333075,"24":2.9237408078,"25":2.8711309227,"26":0.0715660369,"27":3.102853141,"28":0.0816951994,"29":3.2310670035,"30":0.0700480465,"31":2.5846515915,"32":0.0694696067,"33":2.6363145732,"34":0.0700923133,"35":2.701949743,"36":0.0685759121,"37":2.7674054992,"38":0.0730182607,"39":3.1103538681,"40":0.0700468754,"41":2.95323019,"42":0.0695252939,"43":0.06952925,"44":2.9124826796,"45":0.0692515434,"46":2.5195832227,"47":0.0751827664,"48":0.0701049493,"49":2.8770888454,"50":0.0693693706,"51":2.9839934298,"52":0.0709320681,"53":2.8234036506,"54":2.9926736276,"55":0.0691735371,"56":0.0703355431,"57":3.0531204924,"58":0.06913457,"59":3.0343519579,"60":0.0701869289,"61":2.9137197351,"62":0.0698465553,"63":2.8158796571,"64":0.0695879392,"65":0.0702160042,"66":0.0684760418,"67":0.0708376384,"68":2.3857300705,"69":0.0713937536,"70":2.6112705249,"71":3.1195666905,"72":0.0725283055,"73":3.1292394905,"74":0.070407386,"75":2.8831373555,"76":2.9438013994,"77":0.0690979637,"78":3.009105453,"79":3.0034929442,"80":0.0713569863,"81":3.0030136766,"82":0.0742655206,"83":3.00326874,"84":0.0706149827,"85":2.9480469903,"86":0.0689109005,"87":0.069634278,"88":2.9606895478,"89":0.0692537889,"90":2.8429709499,"91":0.0700465392,"92":0.0722102511,"93":0.0688989821,"94":2.6723613999,"95":0.0683446892,"96":3.1134867511,"97":2.7049721736,"98":2.7643106411,"99":0.0710862138,"100":2.8198433102,"101":0.0694331648,"102":2.8291664617,"103":2.9838099716,"104":0.0778574609,"105":3.1586364057,"106":0.0701278539,"107":2.8442612237,"108":0.0248319452,"109":0.0696417231,"110":2.7260937474,"111":0.0741212286,"112":2.8582044377,"113":0.0683852573,"114":2.8163422486,"115":0.0706258773,"116":0.0709851152,"117":2.9578066977,"118":0.0711404223,"119":1.0529151667,"120":0.0698422044,"121":2.9154130175,"122":0.0717212437,"123":2.8433814588,"124":2.9730795738,"125":0.0715058678,"126":2.783752586,"127":2.9586066121,"128":0.0705066715,"129":2.9452175859},"start_time":{"0":1553904000000,"1":1553904000000,"2":1553904000000,"3":1553904000000,"4":1553904000000,"5":1553904000000,"6":1553904000000,"7":1553904000000,"8":1553904000000,"9":1553904000000,"10":1553904000000,"11":1553904000000,"12":1553904000000,"13":1553904000000,"14":1553904000000,"15":1553904000000,"16":1553904000000,"17":1553904000000,"18":1553904000000,"19":1553904000000,"20":1553904000000,"21":1553904000000,"22":1553904000000,"23":1553904000000,"24":1553904000000,"25":1553904000000,"26":1553904000000,"27":1553904000000,"28":1553904000000,"29":1553904000000,"30":1553904000000,"31":1553904000000,"32":1553904000000,"33":1553904000000,"34":1553904000000,"35":1553904000000,"36":1553904000000,"37":1553904000000,"38":1553904000000,"39":1553904000000,"40":1553904000000,"41":1553904000000,"42":1553904000000,"43":1553904000000,"44":1553904000000,"45":1553904000000,"46":1553904000000,"47":1553904000000,"48":1553904000000,"49":1553904000000,"50":1553904000000,"51":1553904000000,"52":1553904000000,"53":1553904000000,"54":1553904000000,"55":1553904000000,"56":1553904000000,"57":1553904000000,"58":1553904000000,"59":1553904000000,"60":1553904000000,"61":1553904000000,"62":1553904000000,"63":1553904000000,"64":1553904000000,"65":1553904000000,"66":1553904000000,"67":1553904000000,"68":1553904000000,"69":1553904000000,"70":1553904000000,"71":1553904000000,"72":1553904000000,"73":1553904000000,"74":1553904000000,"75":1553904000000,"76":1553904000000,"77":1553904000000,"78":1553904000000,"79":1553904000000,"80":1553904000000,"81":1553904000000,"82":1553904000000,"83":1553904000000,"84":1553904000000,"85":1553904000000,"86":1553904000000,"87":1553904000000,"88":1553904000000,"89":1553904000000,"90":1553904000000,"91":1553904000000,"92":1553904000000,"93":1553904000000,"94":1553904000000,"95":1553904000000,"96":1553904000000,"97":1553904000000,"98":1553904000000,"99":1553904000000,"100":1553904000000,"101":1553904000000,"102":1553904000000,"103":1553904000000,"104":1553904000000,"105":1553904000000,"106":1553904000000,"107":1553904000000,"108":1553904000000,"109":1553904000000,"110":1553904000000,"111":1553904000000,"112":1553904000000,"113":1553904000000,"114":1553904000000,"115":1553904000000,"116":1553904000000,"117":1553904000000,"118":1553904000000,"119":1553904000000,"120":1553904000000,"121":1553904000000,"122":1553904000000,"123":1553904000000,"124":1553904000000,"125":1553904000000,"126":1553904000000,"127":1553904000000,"128":1553904000000,"129":1553904000000}} \ No newline at end of file diff --git a/tutorials/human_in_the_loop/hitl_exp.json b/tutorials/human_in_the_loop/hitl_exp.json deleted file mode 100644 index 16a30b0c9ae..00000000000 --- a/tutorials/human_in_the_loop/hitl_exp.json +++ /dev/null @@ -1 +0,0 @@ -{"__type":"Experiment","name":"human_in_the_loop_tutorial","description":"Ax Human-in-the-Loop Tutorial","experiment_type":null,"search_space":{"__type":"SearchSpace","parameters":[{"__type":"RangeParameter","name":"x_excellent","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0,"upper":1,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"x_good","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0,"upper":1,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"x_moderate","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0,"upper":1,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"x_poor","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0,"upper":1,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"x_unknown","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0,"upper":1,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"y_excellent","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0.1,"upper":3,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"y_good","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0.1,"upper":3,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"y_moderate","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0.1,"upper":3,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"y_poor","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0.1,"upper":3,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"y_unknown","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":0.1,"upper":3,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"z_excellent","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":50000,"upper":5000000,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"z_good","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":50000,"upper":5000000,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"z_moderate","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":50000,"upper":5000000,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"z_poor","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":50000,"upper":5000000,"log_scale":false,"digits":null},{"__type":"RangeParameter","name":"z_unknown","parameter_type":{"__type":"ParameterType","name":"FLOAT"},"lower":50000,"upper":5000000,"log_scale":false,"digits":null}],"parameter_constraints":[{"__type":"OrderConstraint","lower_name":"x_poor","upper_name":"x_moderate"},{"__type":"OrderConstraint","lower_name":"x_moderate","upper_name":"x_good"},{"__type":"OrderConstraint","lower_name":"x_good","upper_name":"x_excellent"},{"__type":"OrderConstraint","lower_name":"y_poor","upper_name":"y_moderate"},{"__type":"OrderConstraint","lower_name":"y_moderate","upper_name":"y_good"},{"__type":"OrderConstraint","lower_name":"y_good","upper_name":"y_excellent"}]},"optimization_config":{"__type":"OptimizationConfig","objective":{"__type":"Objective","metric":{"name":"metric_1","__type":"Metric"},"minimize":false},"outcome_constraints":[{"__type":"OutcomeConstraint","metric":{"name":"metric_2","__type":"Metric"},"op":{"__type":"ComparisonOp","name":"LEQ"},"bound":5,"relative":true}]},"tracking_metrics":[],"runner":null,"status_quo":{"__type":"Arm","parameters":{"x_excellent":0,"x_good":0,"x_moderate":0,"x_poor":0,"x_unknown":0,"y_excellent":1,"y_good":1,"y_moderate":1,"y_poor":1,"y_unknown":1,"z_excellent":1000000,"z_good":1000000,"z_moderate":1000000,"z_poor":1000000,"z_unknown":1000000},"name":"status_quo"},"time_created":{"__type":"datetime","value":"2019-04-23 21:08:25.132650"},"trials":{"0":{"__type":"BatchTrial","index":0,"trial_type":null,"generation_step_index":null,"status":{"__type":"TrialStatus","name":"COMPLETED"},"status_quo":{"__type":"Arm","parameters":{"x_excellent":0,"x_good":0,"x_moderate":0,"x_poor":0,"x_unknown":0,"y_excellent":1,"y_good":1,"y_moderate":1,"y_poor":1,"y_unknown":1,"z_excellent":1000000,"z_good":1000000,"z_moderate":1000000,"z_poor":1000000,"z_unknown":1000000},"name":"status_quo"},"status_quo_weight_override":11.11,"optimize_for_power":false,"time_created":{"__type":"datetime","value":"2019-03-29 18:10:06.000000"},"time_completed":{"__type":"datetime","value":"2019-04-03 16:16:05.000000"},"time_staged":{"__type":"datetime","value":"2019-03-29 18:16:16.000000"},"time_run_started":{"__type":"datetime","value":"2019-03-29 18:18:27.000000"},"abandoned_reason":null,"run_metadata":{"output":"{\"new_experiment_ents\":{\"ae_ios_video_fury_live_sigmoid_fraction_e6_v0_6425b7\":{}},\"instagram_did_propagate\":false}","arm_mapping":{"0_0":"0_0","0_1":"0_1","0_10":"0_10","0_11":"0_11","0_12":"0_12","0_13":"0_13","0_14":"0_14","0_15":"0_15","0_16":"0_16","0_17":"0_17","0_18":"0_18","0_19":"0_19","0_2":"0_2","0_20":"0_20","0_21":"0_21","0_22":"0_22","0_23":"0_23","0_24":"0_24","0_25":"0_25","0_26":"0_26","0_27":"0_27","0_28":"0_28","0_29":"0_29","0_3":"0_3","0_30":"0_30","0_31":"0_31","0_32":"0_32","0_33":"0_33","0_34":"0_34","0_35":"0_35","0_36":"0_36","0_37":"0_37","0_38":"0_38","0_39":"0_39","0_4":"0_4","0_40":"0_40","0_41":"0_41","0_42":"0_42","0_43":"0_43","0_44":"0_44","0_45":"0_45","0_46":"0_46","0_47":"0_47","0_48":"0_48","0_49":"0_49","0_5":"0_5","0_50":"0_50","0_51":"0_51","0_52":"0_52","0_53":"0_53","0_54":"0_54","0_55":"0_55","0_56":"0_56","0_57":"0_57","0_58":"0_58","0_59":"0_59","0_6":"0_6","0_60":"0_60","0_61":"0_61","0_62":"0_62","0_63":"0_63","0_7":"0_7","0_8":"0_8","0_9":"0_9","status_quo":"status_quo"},"expiration":1561684565,"universe_name":"ios_video_fury_live","staging_skipped":false,"name":"ae_ios_video_fury_live_sigmoid_fraction_e6_v0_6425b7"},"generator_run_structs":[{"__type":"GeneratorRunStruct","generator_run":{"__type":"GeneratorRun","arms":[{"__type":"Arm","parameters":{"x_excellent":0.97158026695251465,"x_good":0.86155247688293457,"x_moderate":0.76680916547775269,"x_poor":0.34871453046798706,"x_unknown":0.76757973432540894,"y_excellent":2.9007100284099581,"y_good":1.5137152910232545,"y_moderate":0.67759470939636224,"y_poor":0.4974367544054985,"y_unknown":1.0852564811706542,"z_excellent":517803.49761247635,"z_good":607874.51714277267,"z_moderate":1151881.2023103237,"z_poor":2927449.2621421814,"z_unknown":2068407.6935052872},"name":"0_0"},{"__type":"Arm","parameters":{"x_excellent":0.85103416442871094,"x_good":0.66453057527542114,"x_moderate":0.618462860584259,"x_poor":0.49137753248214722,"x_unknown":0.30833002924919128,"y_excellent":2.8659517884254457,"y_good":2.5605727732181549,"y_moderate":1.5476379573345185,"y_poor":0.93359726667404175,"y_unknown":2.4124013960361479,"z_excellent":2047661.4505052567,"z_good":1124946.5800821781,"z_moderate":349740.92431366444,"z_poor":3469065.2877092361,"z_unknown":1308657.3854088783},"name":"0_1"},{"__type":"Arm","parameters":{"x_excellent":0.95002990961074829,"x_good":0.74726009368896484,"x_moderate":0.20274275541305542,"x_poor":0.00037252623587846756,"x_unknown":0.53853303194046021,"y_excellent":2.9814384758472441,"y_good":1.9838561594486237,"y_moderate":1.1577709317207336,"y_poor":0.25004206225275993,"y_unknown":2.4593245446681977,"z_excellent":1404012.7724409103,"z_good":3935407.2898626328,"z_moderate":1576943.5182213783,"z_poor":790132.23573565483,"z_unknown":4388426.6257286072},"name":"0_2"},{"__type":"Arm","parameters":{"x_excellent":0.61609798669815063,"x_good":0.54812502861022949,"x_moderate":0.25569134950637817,"x_poor":0.11454080045223236,"x_unknown":0.99180132150650024,"y_excellent":2.1949211359024048,"y_good":2.052469825744629,"y_moderate":1.8581664502620698,"y_poor":0.36267738044261932,"y_unknown":1.1400326222181321,"z_excellent":144598.74927997589,"z_good":1613488.7233376503,"z_moderate":2766241.6070699692,"z_poor":3140431.6514730453,"z_unknown":3876653.9037227631},"name":"0_3"},{"__type":"Arm","parameters":{"x_excellent":0.99003618955612183,"x_good":0.88680678606033325,"x_moderate":0.6708073616027832,"x_poor":0.0087799523025751114,"x_unknown":0.16683314740657806,"y_excellent":1.8174743235111237,"y_good":1.5216088175773621,"y_moderate":1.1984175980091096,"y_poor":0.83373601436614986,"y_unknown":1.4500256150960922,"z_excellent":3136810.2937936783,"z_good":3679950.2164125443,"z_moderate":1653542.5797104836,"z_poor":2718013.8796567917,"z_unknown":3496028.0865430832},"name":"0_4"},{"__type":"Arm","parameters":{"x_excellent":0.93695586919784546,"x_good":0.64858543872833252,"x_moderate":0.16240119934082031,"x_poor":0.060298789292573929,"x_unknown":0.1917714923620224,"y_excellent":2.4435271203517912,"y_good":0.649354687333107,"y_moderate":0.53861688971519472,"y_poor":0.18754440546035767,"y_unknown":2.4331059575080873,"z_excellent":105790.6427886337,"z_good":2102460.2279067039,"z_moderate":3928977.12290287,"z_poor":1416620.2545166016,"z_unknown":3104550.2930879593},"name":"0_5"},{"__type":"Arm","parameters":{"x_excellent":0.91189545392990112,"x_good":0.71424770355224609,"x_moderate":0.662473738193512,"x_poor":0.56986552476882935,"x_unknown":0.75975435972213745,"y_excellent":2.9478807032108305,"y_good":2.7881640970706938,"y_moderate":2.5630625545978547,"y_poor":1.327445712685585,"y_unknown":2.2442395150661469,"z_excellent":399939.2069876194,"z_good":4282380.20837307,"z_moderate":1836250.6076693535,"z_poor":3421681.6782951355,"z_unknown":928677.34357714653},"name":"0_6"},{"__type":"Arm","parameters":{"x_excellent":0.87672680616378784,"x_good":0.79401993751525879,"x_moderate":0.51991713047027588,"x_poor":0.18641293048858643,"x_unknown":0.18414582312107086,"y_excellent":2.7139359772205354,"y_good":2.2554430127143861,"y_moderate":1.9752698361873626,"y_poor":1.5498319000005722,"y_unknown":0.14985630456358195,"z_excellent":621760.27297973633,"z_good":1963844.6047902107,"z_moderate":4520667.2549247742,"z_poor":1207356.5132915974,"z_unknown":2390304.02302742},"name":"0_7"},{"__type":"Arm","parameters":{"x_excellent":0.77820348739624023,"x_good":0.77338981628417969,"x_moderate":0.64344149827957153,"x_poor":0.39535817503929138,"x_unknown":0.26519513130187988,"y_excellent":1.8703023195266724,"y_good":1.7005800902843475,"y_moderate":1.6552390694618226,"y_poor":1.3311680257320404,"y_unknown":2.9665372967720032,"z_excellent":1204457.9371809959,"z_good":3880121.248960495,"z_moderate":4704345.0891971588,"z_poor":4601939.5023584366,"z_unknown":2348827.1743059158},"name":"0_8"},{"__type":"Arm","parameters":{"x_excellent":0.86235660314559937,"x_good":0.85093379020690918,"x_moderate":0.37449455261230469,"x_poor":0.13490460813045502,"x_unknown":0.46556881070137024,"y_excellent":2.704283320903778,"y_good":2.6870321989059449,"y_moderate":1.671689361333847,"y_poor":0.55204790681600568,"y_unknown":0.56874689161777492,"z_excellent":447859.57336425781,"z_good":1286995.9928095341,"z_moderate":3375571.7694759369,"z_poor":4987511.7152929306,"z_unknown":382919.0619289875},"name":"0_9"},{"__type":"Arm","parameters":{"x_excellent":0.74537348747253418,"x_good":0.54843747615814209,"x_moderate":0.2341938316822052,"x_poor":0.18100295960903168,"x_unknown":0.75903099775314331,"y_excellent":2.6732950150966643,"y_good":2.4102241337299346,"y_moderate":1.1348745018243791,"y_poor":1.0296057015657425,"y_unknown":2.790981262922287,"z_excellent":1974325.7120251656,"z_good":837956.4180970192,"z_moderate":3807529.4613838196,"z_poor":2535267.7911520004,"z_unknown":3274282.6253175735},"name":"0_10"},{"__type":"Arm","parameters":{"x_excellent":0.93283909559249878,"x_good":0.48941677808761597,"x_moderate":0.22896338999271393,"x_poor":0.14839756488800049,"x_unknown":0.81436693668365479,"y_excellent":2.4188870310783388,"y_good":1.7348816514015197,"y_moderate":1.3763570219278336,"y_poor":0.62752363979816428,"y_unknown":2.2213241577148439,"z_excellent":3917586.3981246948,"z_good":4413693.2224035263,"z_moderate":4174360.8385324478,"z_poor":469381.63191080093,"z_unknown":1615992.4581646919},"name":"0_11"},{"__type":"Arm","parameters":{"x_excellent":0.91771906614303589,"x_good":0.452238529920578,"x_moderate":0.38178026676177979,"x_poor":0.36119359731674194,"x_unknown":0.512036144733429,"y_excellent":2.79096657037735,"y_good":2.330677831172943,"y_moderate":1.8674403846263885,"y_poor":1.4705325186252594,"y_unknown":2.8689020514488219,"z_excellent":2703946.8199014664,"z_good":1236252.286285162,"z_moderate":2774059.3612194061,"z_poor":4271326.7177343369,"z_unknown":1213882.7167451382},"name":"0_12"},{"__type":"Arm","parameters":{"x_excellent":0.94383847713470459,"x_good":0.74263846874237061,"x_moderate":0.66851723194122314,"x_poor":0.25908607244491577,"x_unknown":0.49967688322067261,"y_excellent":1.5910908997058868,"y_good":1.3378991127014161,"y_moderate":0.64499657601118088,"y_poor":0.33120100125670432,"y_unknown":1.6701212346553802,"z_excellent":2545350.2953052521,"z_good":2230082.9917192459,"z_moderate":2751429.2687177658,"z_poor":332382.56778568029,"z_unknown":2328751.4165043831},"name":"0_13"},{"__type":"Arm","parameters":{"x_excellent":0.83145791292190552,"x_good":0.77346956729888916,"x_moderate":0.664504885673523,"x_poor":0.122414231300354,"x_unknown":0.65202194452285767,"y_excellent":1.9299125671386719,"y_good":1.8675167858600616,"y_moderate":1.7484297335147858,"y_poor":0.55905927568674085,"y_unknown":1.1809803128242493,"z_excellent":3746240.4757738113,"z_good":2660856.9711446762,"z_moderate":4485520.2585458755,"z_poor":4487085.1665735245,"z_unknown":986511.37575507164},"name":"0_14"},{"__type":"Arm","parameters":{"x_excellent":0.72601169347763062,"x_good":0.63948225975036621,"x_moderate":0.14544224739074707,"x_poor":0.12423529475927353,"x_unknown":0.97919297218322754,"y_excellent":2.6124065160751342,"y_good":2.3581948935985566,"y_moderate":2.1683637559413911,"y_poor":1.8772067785263062,"y_unknown":1.7302675008773805,"z_excellent":2472140.2451395988,"z_good":4129981.9469451904,"z_moderate":93921.920703724027,"z_poor":639849.21127557755,"z_unknown":1284907.0884287357},"name":"0_15"},{"__type":"Arm","parameters":{"x_excellent":0.87447816133499146,"x_good":0.45389580726623535,"x_moderate":0.42306962609291077,"x_poor":0.12330307066440582,"x_unknown":0.13876286149024963,"y_excellent":2.2682201683521273,"y_good":1.6207421839237213,"y_moderate":1.0284248530864715,"y_poor":0.47881952822208407,"y_unknown":1.4061714798212053,"z_excellent":3887345.6716537476,"z_good":4519583.8570594788,"z_moderate":4061919.0692901611,"z_poor":2971466.4310216904,"z_unknown":2958717.6233530045},"name":"0_16"},{"__type":"Arm","parameters":{"x_excellent":0.75909525156021118,"x_good":0.55276298522949219,"x_moderate":0.4495367705821991,"x_poor":0.42010676860809326,"x_unknown":0.93026751279830933,"y_excellent":2.5671838998794554,"y_good":1.6151177048683167,"y_moderate":0.77282750755548468,"y_poor":0.75227423608303068,"y_unknown":2.0326279759407044,"z_excellent":1967461.3893032074,"z_good":2726522.6244926453,"z_moderate":798929.975181818,"z_poor":4493639.5466327667,"z_unknown":2281054.7664761543},"name":"0_17"},{"__type":"Arm","parameters":{"x_excellent":0.83358085155487061,"x_good":0.82709777355194092,"x_moderate":0.79314583539962769,"x_poor":0.7854536771774292,"x_unknown":0.84968090057373047,"y_excellent":2.6042429924011232,"y_good":2.2531648039817811,"y_moderate":0.3547730505466461,"y_poor":0.13023057291284204,"y_unknown":2.705990767478943,"z_excellent":3841065.2279853821,"z_good":2157058.0810308456,"z_moderate":3389509.0103149414,"z_poor":2395912.7902984619,"z_unknown":3039018.2942152023},"name":"0_18"},{"__type":"Arm","parameters":{"x_excellent":0.86465924978256226,"x_good":0.82579523324966431,"x_moderate":0.48891109228134155,"x_poor":0.31837025284767151,"x_unknown":0.36890369653701782,"y_excellent":2.82127331495285,"y_good":1.6042818665504457,"y_moderate":1.4055700361728669,"y_poor":0.565223403275013,"y_unknown":2.8787531435489653,"z_excellent":4867003.470659256,"z_good":59337.179455906153,"z_moderate":4578370.2880144119,"z_poor":2152693.9526200294,"z_unknown":4730466.4254188538},"name":"0_19"},{"__type":"Arm","parameters":{"x_excellent":0.83920449018478394,"x_good":0.69002598524093628,"x_moderate":0.54104894399642944,"x_poor":0.034630078822374344,"x_unknown":0.074908211827278137,"y_excellent":2.9246697664260863,"y_good":1.168129175901413,"y_moderate":0.4269632063806057,"y_poor":0.18187785279005766,"y_unknown":1.4137071132659913,"z_excellent":3282141.68548584,"z_good":4155312.8629922867,"z_moderate":3070456.8952322006,"z_poor":4345719.7427749634,"z_unknown":2412805.9193491936},"name":"0_20"},{"__type":"Arm","parameters":{"x_excellent":0.81940209865570068,"x_good":0.71012097597122192,"x_moderate":0.42018947005271912,"x_poor":0.25032776594161987,"x_unknown":0.62176293134689331,"y_excellent":2.096848225593567,"y_good":1.9286804676055909,"y_moderate":1.2434603601694107,"y_poor":0.90392446219921108,"y_unknown":2.2090095579624176,"z_excellent":4012281.6264629364,"z_good":2822911.1045598984,"z_moderate":1308740.1449680328,"z_poor":3355280.7778120041,"z_unknown":1911132.3714256287},"name":"0_21"},{"__type":"Arm","parameters":{"x_excellent":0.79002982378005981,"x_good":0.66357940435409546,"x_moderate":0.56628406047821045,"x_poor":0.02994253858923912,"x_unknown":0.671501874923706,"y_excellent":2.3871006608009337,"y_good":2.3709397256374358,"y_moderate":1.2670125961303711,"y_poor":0.25569810867309573,"y_unknown":1.3492118537425994,"z_excellent":4454670.8583831787,"z_good":2341622.8145360947,"z_moderate":558902.61754393578,"z_poor":3738626.0062456131,"z_unknown":196577.2844851017},"name":"0_22"},{"__type":"Arm","parameters":{"x_excellent":0.95226508378982544,"x_good":0.92188018560409546,"x_moderate":0.86909228563308716,"x_poor":0.630584716796875,"x_unknown":0.03162117674946785,"y_excellent":2.7107091486454009,"y_good":2.5477674424648287,"y_moderate":1.5964389860630035,"y_poor":0.5108287498354912,"y_unknown":1.3870350450277329,"z_excellent":763356.34663701057,"z_good":3520974.8566150665,"z_moderate":2690123.7607002258,"z_poor":2431509.2846751213,"z_unknown":744351.22609138489},"name":"0_23"},{"__type":"Arm","parameters":{"x_excellent":0.65432286262512207,"x_good":0.566859245300293,"x_moderate":0.34508275985717773,"x_poor":0.17044077813625336,"x_unknown":0.0027476605027914047,"y_excellent":2.7220929324626923,"y_good":1.3000734150409698,"y_moderate":0.70972726196050639,"y_poor":0.10073989657685162,"y_unknown":1.2240227282047271,"z_excellent":2750516.4057016373,"z_good":2087711.9138836861,"z_moderate":1835061.28937006,"z_poor":3693097.6271629333,"z_unknown":1685299.5321154594},"name":"0_24"},{"__type":"Arm","parameters":{"x_excellent":0.99243980646133423,"x_good":0.65735459327697754,"x_moderate":0.645052969455719,"x_poor":0.062522590160369873,"x_unknown":0.41520678997039795,"y_excellent":2.9075918436050414,"y_good":1.8298017144203187,"y_moderate":0.83301037549972534,"y_poor":0.37764549702405925,"y_unknown":2.0429841458797453,"z_excellent":4272433.4239959717,"z_good":3839028.2511711121,"z_moderate":751537.44071722031,"z_poor":638769.87025141716,"z_unknown":796271.71158790588},"name":"0_25"},{"__type":"Arm","parameters":{"x_excellent":0.81582391262054443,"x_good":0.70149493217468262,"x_moderate":0.3270009458065033,"x_poor":0.079493820667266846,"x_unknown":0.99254715442657471,"y_excellent":2.599180978536606,"y_good":2.1327816963195803,"y_moderate":1.7164670526981354,"y_poor":0.2164489194750786,"y_unknown":2.9185326039791106,"z_excellent":3652340.6833410263,"z_good":4389095.1931476593,"z_moderate":1222076.9457519054,"z_poor":1423440.6158328056,"z_unknown":4595380.69665432},"name":"0_26"},{"__type":"Arm","parameters":{"x_excellent":0.38767039775848389,"x_good":0.37952026724815369,"x_moderate":0.17802783846855164,"x_poor":0.11193168163299561,"x_unknown":0.5749887228012085,"y_excellent":2.5570450067520141,"y_good":1.53735853433609,"y_moderate":0.81399411708116531,"y_poor":0.54053184688091283,"y_unknown":2.0119216859340665,"z_excellent":3512089.0468358994,"z_good":646212.91980147362,"z_moderate":4266802.2334575653,"z_poor":3807456.8808078766,"z_unknown":1551202.1973729134},"name":"0_27"},{"__type":"Arm","parameters":{"x_excellent":0.97474980354309082,"x_good":0.487637996673584,"x_moderate":0.46008732914924622,"x_poor":0.0051721874624490738,"x_unknown":0.18161407113075256,"y_excellent":2.0176386415958403,"y_good":1.9938285946846008,"y_moderate":1.8157051682472229,"y_poor":1.5338177174329759,"y_unknown":2.3742343127727508,"z_excellent":2969065.3711557388,"z_good":915838.17899227142,"z_moderate":3249549.1713285446,"z_poor":3343409.42800045,"z_unknown":414265.68329334259},"name":"0_28"},{"__type":"Arm","parameters":{"x_excellent":0.60782772302627563,"x_good":0.1617046445608139,"x_moderate":0.069862842559814453,"x_poor":0.052945647388696671,"x_unknown":0.60592824220657349,"y_excellent":2.0885343194007873,"y_good":1.6475863277912139,"y_moderate":0.89934851229190826,"y_poor":0.23001547530293465,"y_unknown":0.23805881179869176,"z_excellent":4417652.6993513107,"z_good":1210020.3089416027,"z_moderate":4010368.8627481461,"z_poor":4179294.5474386215,"z_unknown":3242940.7984018326},"name":"0_29"},{"__type":"Arm","parameters":{"x_excellent":0.80413806438446045,"x_good":0.60870444774627686,"x_moderate":0.48860305547714233,"x_poor":0.2260446697473526,"x_unknown":0.98251628875732422,"y_excellent":2.0681675136089326,"y_good":1.3720418214797974,"y_moderate":0.95871788859367368,"y_poor":0.70600114613771436,"y_unknown":1.6804912328720094,"z_excellent":1141897.6113200188,"z_good":1155040.817707777,"z_moderate":2704330.0807476044,"z_poor":4790198.1741189957,"z_unknown":671443.74251365662},"name":"0_30"},{"__type":"Arm","parameters":{"x_excellent":0.96476835012435913,"x_good":0.89380711317062378,"x_moderate":0.74014347791671753,"x_poor":0.54949170351028442,"x_unknown":0.22770011425018311,"y_excellent":2.0435654520988464,"y_good":1.8977944910526277,"y_moderate":1.5835596740245819,"y_poor":0.80912582874298089,"y_unknown":1.5082798272371292,"z_excellent":417868.12134087086,"z_good":59186.477027833462,"z_moderate":3388122.3082542419,"z_poor":1775560.2642893791,"z_unknown":3848832.8248262405},"name":"0_31"},{"__type":"Arm","parameters":{"x_excellent":0.79973399639129639,"x_good":0.48099824786186218,"x_moderate":0.46964031457901,"x_poor":0.26057550311088562,"x_unknown":0.5583416223526001,"y_excellent":2.9510188579559324,"y_good":2.7051799118518831,"y_moderate":1.1253825992345809,"y_poor":0.54315304011106491,"y_unknown":1.0049440920352937,"z_excellent":4260624.0332126617,"z_good":4820661.9530916214,"z_moderate":4514629.2001008987,"z_poor":4518171.4862585068,"z_unknown":3618222.7969169617},"name":"0_32"},{"__type":"Arm","parameters":{"x_excellent":0.55967915058135986,"x_good":0.538822591304779,"x_moderate":0.46861705183982849,"x_poor":0.20115658640861511,"x_unknown":0.47588750720024109,"y_excellent":2.7505034744739532,"y_good":2.0828253149986264,"y_moderate":1.2977309912443162,"y_poor":0.45863019973039632,"y_unknown":2.2216522336006164,"z_excellent":4823469.58220005,"z_good":2501425.32736063,"z_moderate":4461978.1881570816,"z_poor":2451558.193564415,"z_unknown":208953.21313291788},"name":"0_33"},{"__type":"Arm","parameters":{"x_excellent":0.48422300815582275,"x_good":0.46439248323440552,"x_moderate":0.42492550611495972,"x_poor":0.41543704271316528,"x_unknown":0.47104272246360779,"y_excellent":2.3814946770668031,"y_good":2.2343047618865968,"y_moderate":2.0081303179264069,"y_poor":1.4825123876333237,"y_unknown":2.9359733462333679,"z_excellent":3582203.3584117889,"z_good":1924760.2596879005,"z_moderate":163402.65972539783,"z_poor":2164386.3588571548,"z_unknown":1844089.6049141884},"name":"0_34"},{"__type":"Arm","parameters":{"x_excellent":0.76029616594314575,"x_good":0.72989350557327271,"x_moderate":0.49959725141525269,"x_poor":0.11402340233325958,"x_unknown":0.19630938768386841,"y_excellent":2.8703396737575533,"y_good":2.305198884010315,"y_moderate":1.3631530046463014,"y_poor":0.83181405663490293,"y_unknown":1.6237828493118287,"z_excellent":4136911.9167327881,"z_good":3123724.8420715332,"z_moderate":2070678.7869334221,"z_poor":4283613.1930351257,"z_unknown":1570839.9638533592},"name":"0_35"},{"__type":"Arm","parameters":{"x_excellent":0.70909887552261353,"x_good":0.49601945281028748,"x_moderate":0.28533998131752014,"x_poor":0.054395422339439392,"x_unknown":0.84655451774597168,"y_excellent":2.8830336868762969,"y_good":1.907048547267914,"y_moderate":0.64278590977191918,"y_poor":0.32792296484112737,"y_unknown":1.866484159231186,"z_excellent":2324772.4667191505,"z_good":3595976.260304451,"z_moderate":560821.83532416821,"z_poor":4349254.3578147888,"z_unknown":4436775.91085434},"name":"0_36"},{"__type":"Arm","parameters":{"x_excellent":0.48980775475502014,"x_good":0.32618007063865662,"x_moderate":0.3164043128490448,"x_poor":0.15930832922458649,"x_unknown":0.4107973575592041,"y_excellent":2.6641638576984406,"y_good":2.4595362901687623,"y_moderate":2.23267924785614,"y_poor":2.2078163504600523,"y_unknown":0.87130182683467861,"z_excellent":1401192.8990483284,"z_good":3234890.5503749847,"z_moderate":2602361.74762249,"z_poor":1920396.5738415718,"z_unknown":802614.84086513519},"name":"0_37"},{"__type":"Arm","parameters":{"x_excellent":0.77222514152526855,"x_good":0.7488667368888855,"x_moderate":0.6209447979927063,"x_poor":0.3358210027217865,"x_unknown":0.74328041076660156,"y_excellent":2.2474978029727937,"y_good":0.79729560762643814,"y_moderate":0.36823786050081253,"y_poor":0.11505532385781408,"y_unknown":0.998822745680809,"z_excellent":3619759.9709033966,"z_good":3874774.4798660278,"z_moderate":3562827.8851509094,"z_poor":3417651.3910293579,"z_unknown":1690341.6693210602},"name":"0_38"},{"__type":"Arm","parameters":{"x_excellent":0.83508199453353882,"x_good":0.75142353773117065,"x_moderate":0.57121479511260986,"x_poor":0.29336965084075928,"x_unknown":0.78061878681182861,"y_excellent":2.42587463259697,"y_good":1.7096932709217072,"y_moderate":1.5020962536334992,"y_poor":1.2352067798376083,"y_unknown":0.434840376675129,"z_excellent":3947263.5924816132,"z_good":4536642.6527500153,"z_moderate":3006026.291847229,"z_poor":215445.68948447704,"z_unknown":3670402.6252031326},"name":"0_39"},{"__type":"Arm","parameters":{"x_excellent":0.8199276328086853,"x_good":0.80790376663208008,"x_moderate":0.78555512428283691,"x_poor":0.19751028716564178,"x_unknown":0.58093583583831787,"y_excellent":2.7783069550991057,"y_good":2.5766540229320527,"y_moderate":1.8152898013591767,"y_poor":0.6704525768756866,"y_unknown":1.0360167503356934,"z_excellent":2694971.6120958328,"z_good":1074606.1973273754,"z_moderate":3787668.052315712,"z_poor":3906213.966012001,"z_unknown":4225422.1588373184},"name":"0_40"},{"__type":"Arm","parameters":{"x_excellent":0.90985935926437378,"x_good":0.84568780660629272,"x_moderate":0.41423299908638,"x_poor":0.20755298435688019,"x_unknown":0.71293586492538452,"y_excellent":2.5904098749160767,"y_good":2.1456283390522004,"y_moderate":2.0604693114757535,"y_poor":0.676108255982399,"y_unknown":2.7806831717491152,"z_excellent":920173.98327589035,"z_good":2728654.9001932144,"z_moderate":2948313.8173818588,"z_poor":1904612.0688319206,"z_unknown":982618.2097196579},"name":"0_41"},{"__type":"Arm","parameters":{"x_excellent":0.55807554721832275,"x_good":0.51272368431091309,"x_moderate":0.33204546570777893,"x_poor":0.25182068347930908,"x_unknown":0.31463998556137085,"y_excellent":2.956348794698715,"y_good":2.451867127418518,"y_moderate":1.734304666519165,"y_poor":0.29675095900893211,"y_unknown":1.2710720598697662,"z_excellent":578293.10111701488,"z_good":1312060.7063174248,"z_moderate":3257366.9254779816,"z_poor":4687589.892745018,"z_unknown":4593998.7152814865},"name":"0_42"},{"__type":"Arm","parameters":{"x_excellent":0.77401471138000488,"x_good":0.76421648263931274,"x_moderate":0.6118054986000061,"x_poor":0.19328300654888153,"x_unknown":0.13622443377971649,"y_excellent":2.8257604181766509,"y_good":1.9049468219280243,"y_moderate":1.2219735503196716,"y_poor":0.46385836899280553,"y_unknown":2.2740067839622498,"z_excellent":1540228.6633849144,"z_good":3319785.9257459641,"z_moderate":2780087.3845815659,"z_poor":177991.73351377249,"z_unknown":4955297.4462509155},"name":"0_43"},{"__type":"Arm","parameters":{"x_excellent":0.99161362648010254,"x_good":0.288806676864624,"x_moderate":0.22180925309658051,"x_poor":0.16066597402095795,"x_unknown":0.91046464443206787,"y_excellent":2.5948169469833373,"y_good":2.3434288859367371,"y_moderate":0.7853922262787818,"y_poor":0.32321689948439597,"y_unknown":0.70312270373106,"z_excellent":4940635.8748674393,"z_good":3533229.76231575,"z_moderate":2808276.9721746445,"z_poor":757893.18308234215,"z_unknown":895084.63367819786},"name":"0_44"},{"__type":"Arm","parameters":{"x_excellent":0.96067255735397339,"x_good":0.93847459554672241,"x_moderate":0.26819509267807007,"x_poor":0.096276551485061646,"x_unknown":0.69951313734054565,"y_excellent":2.0365794062614442,"y_good":1.455660206079483,"y_moderate":1.2832520067691804,"y_poor":0.25727161541581156,"y_unknown":1.9115107595920564,"z_excellent":3437792.5008535385,"z_good":1670128.8640499115,"z_moderate":673514.35422897339,"z_poor":4648012.2357606888,"z_unknown":4904213.70267868},"name":"0_45"},{"__type":"Arm","parameters":{"x_excellent":0.87235075235366821,"x_good":0.75719189643859863,"x_moderate":0.73774713277816772,"x_poor":0.56937503814697266,"x_unknown":0.711272656917572,"y_excellent":1.8843973100185394,"y_good":1.5476426243782044,"y_moderate":1.4086145907640457,"y_poor":1.0838745176792144,"y_unknown":1.0523232281208039,"z_excellent":1046615.2474284172,"z_good":1224961.4335596561,"z_moderate":575194.08017396927,"z_poor":1089298.0843782425,"z_unknown":1405937.3378753662},"name":"0_46"},{"__type":"Arm","parameters":{"x_excellent":0.94017273187637329,"x_good":0.11826977133750916,"x_moderate":0.10409756004810333,"x_poor":0.10261314362287521,"x_unknown":0.58234471082687378,"y_excellent":2.6132194459438325,"y_good":2.16911860704422,"y_moderate":1.7944587111473085,"y_poor":0.93753365874290462,"y_unknown":0.33370554000139235,"z_excellent":355435.56753546,"z_good":1299753.2829642296,"z_moderate":479100.60621798038,"z_poor":980054.72868680954,"z_unknown":348339.06441926956},"name":"0_47"},{"__type":"Arm","parameters":{"x_excellent":0.85155946016311646,"x_good":0.81649911403656006,"x_moderate":0.23767460882663727,"x_poor":0.059808313846588135,"x_unknown":0.27144396305084229,"y_excellent":2.0032461702823636,"y_good":1.9461683988571168,"y_moderate":1.6895247280597687,"y_poor":0.79361577332019806,"y_unknown":0.51547085940837856,"z_excellent":735321.14028930664,"z_good":2757238.37018013,"z_moderate":2831085.2706432343,"z_poor":4329070.171713829,"z_unknown":4819356.3878536224},"name":"0_48"},{"__type":"Arm","parameters":{"x_excellent":0.73407602310180664,"x_good":0.51841306686401367,"x_moderate":0.34745776653289795,"x_poor":0.013926948420703411,"x_unknown":0.93794286251068115,"y_excellent":2.0802705407142636,"y_good":1.7004694640636444,"y_moderate":1.16155503988266,"y_poor":0.92494603693485256,"y_unknown":2.6403512179851534,"z_excellent":1682049.0434765816,"z_good":3051590.371131897,"z_moderate":4506736.5050315857,"z_poor":3193331.6797018051,"z_unknown":1314076.292514801},"name":"0_49"},{"__type":"Arm","parameters":{"x_excellent":0.98512578010559082,"x_good":0.47234725952148438,"x_moderate":0.047346904873847961,"x_poor":0.04615919291973114,"x_unknown":0.32933288812637329,"y_excellent":1.8857856690883636,"y_good":1.7652426719665528,"y_moderate":1.574286949634552,"y_poor":0.53090697675943377,"y_unknown":1.1396271944046021,"z_excellent":1176317.1054422855,"z_good":4065954.3722867966,"z_moderate":3706446.847319603,"z_poor":4813271.1261510849,"z_unknown":3088327.944278717},"name":"0_50"},{"__type":"Arm","parameters":{"x_excellent":0.61189430952072144,"x_good":0.53928738832473755,"x_moderate":0.47392469644546509,"x_poor":0.28561806678771973,"x_unknown":0.6127161979675293,"y_excellent":2.5039677560329436,"y_good":2.2553762912750246,"y_moderate":1.3852747052907943,"y_poor":1.1365300059318544,"y_unknown":0.38519616872072215,"z_excellent":2259355.6821346283,"z_good":1284182.0940375328,"z_moderate":4729076.7729282379,"z_poor":2256961.9983434677,"z_unknown":1571872.7618455887},"name":"0_51"},{"__type":"Arm","parameters":{"x_excellent":0.63648658990859985,"x_good":0.59295189380645752,"x_moderate":0.56757044792175293,"x_poor":0.54495507478713989,"x_unknown":0.26646077632904053,"y_excellent":2.6421609938144686,"y_good":2.046683555841446,"y_moderate":1.9068679153919221,"y_poor":1.6688134253025055,"y_unknown":0.31343229115009308,"z_excellent":2305083.2152366638,"z_good":4575463.5244607925,"z_moderate":652675.873413682,"z_poor":1176409.6014201641,"z_unknown":901856.01785779},"name":"0_52"},{"__type":"Arm","parameters":{"x_excellent":0.91749554872512817,"x_good":0.68300533294677734,"x_moderate":0.29135122895240784,"x_poor":0.13539499044418335,"x_unknown":0.012774555943906307,"y_excellent":1.5843356132507325,"y_good":1.4463293164968491,"y_moderate":0.46635830551385882,"y_poor":0.43307485133409496,"y_unknown":2.2775174379348755,"z_excellent":1074825.1192271709,"z_good":4262690.2192831039,"z_moderate":4626980.3911447525,"z_poor":1997718.0480957031,"z_unknown":2416758.3152651787},"name":"0_53"},{"__type":"Arm","parameters":{"x_excellent":0.854121208190918,"x_good":0.79662346839904785,"x_moderate":0.43395376205444336,"x_poor":0.0884990468621254,"x_unknown":0.73029458522796631,"y_excellent":2.678483557701111,"y_good":2.4495526194572448,"y_moderate":2.3929716289043426,"y_poor":1.9005207359790803,"y_unknown":2.2208194255828859,"z_excellent":1745007.6773762703,"z_good":4673714.6109342575,"z_moderate":1985641.348361969,"z_poor":4023899.8293876648,"z_unknown":1729200.0114917755},"name":"0_54"},{"__type":"Arm","parameters":{"x_excellent":0.92265313863754272,"x_good":0.87147355079650879,"x_moderate":0.30144473910331726,"x_poor":0.038530498743057251,"x_unknown":0.35999166965484619,"y_excellent":1.1379909634590148,"y_good":0.71585418283939362,"y_moderate":0.43222577348351476,"y_poor":0.329797625541687,"y_unknown":0.58184062838554385,"z_excellent":2871378.9969682693,"z_good":3055913.3410453796,"z_moderate":1171367.5379753113,"z_poor":2714458.0215215683,"z_unknown":514344.74550187588},"name":"0_55"},{"__type":"Arm","parameters":{"x_excellent":0.83770662546157837,"x_good":0.51580595970153809,"x_moderate":0.48751965165138245,"x_poor":0.18852809071540833,"x_unknown":0.61372643709182739,"y_excellent":2.3738775432109831,"y_good":1.6866178512573242,"y_moderate":0.57164758890867229,"y_poor":0.5256347730755806,"y_unknown":1.5402488172054292,"z_excellent":2205375.5015134811,"z_good":4140868.4432506561,"z_moderate":1604011.9424462318,"z_poor":1033236.6704940796,"z_unknown":182089.53030407429},"name":"0_56"},{"__type":"Arm","parameters":{"x_excellent":0.9442518949508667,"x_good":0.88394969701766968,"x_moderate":0.651685357093811,"x_poor":0.54006725549697876,"x_unknown":0.89103972911834717,"y_excellent":2.9792337298393248,"y_good":2.8727668821811676,"y_moderate":1.8587437808513643,"y_poor":0.5185031414031982,"y_unknown":1.7910723388195038,"z_excellent":67096.524313092232,"z_good":1444159.7148776054,"z_moderate":4765501.0104179382,"z_poor":4964362.6421689987,"z_unknown":3127313.74502182},"name":"0_57"},{"__type":"Arm","parameters":{"x_excellent":0.88834404945373535,"x_good":0.774753212928772,"x_moderate":0.63781291246414185,"x_poor":0.19885392487049103,"x_unknown":0.3270973265171051,"y_excellent":0.943538674712181,"y_good":0.51286928504705431,"y_moderate":0.4610256247222424,"y_poor":0.11418152255937458,"y_unknown":2.1569187819957731,"z_excellent":856587.64541149139,"z_good":2136567.0502185822,"z_moderate":825478.23861241341,"z_poor":1074376.0637938976,"z_unknown":1945706.3943147659},"name":"0_58"},{"__type":"Arm","parameters":{"x_excellent":0.64838272333145142,"x_good":0.6224287748336792,"x_moderate":0.12889641523361206,"x_poor":0.0021690968424081802,"x_unknown":0.924673855304718,"y_excellent":2.9905953884124754,"y_good":0.88308412432670591,"y_moderate":0.5819163382053375,"y_poor":0.10730242440477014,"y_unknown":1.6393661081790925,"z_excellent":3447038.8531684875,"z_good":2891941.7232275009,"z_moderate":804404.49789166451,"z_poor":1160246.1874485016,"z_unknown":4542903.7600755692},"name":"0_59"},{"__type":"Arm","parameters":{"x_excellent":0.79678612947463989,"x_good":0.49110028147697449,"x_moderate":0.38898536562919617,"x_poor":0.26708555221557617,"x_unknown":0.31541213393211365,"y_excellent":2.0720790147781369,"y_good":1.726222211122513,"y_moderate":0.86126111447811127,"y_poor":0.79625684469938274,"y_unknown":1.9912971556186676,"z_excellent":3958787.0866060257,"z_good":3740302.7355670929,"z_moderate":3638767.5255537033,"z_poor":1287602.9700040817,"z_unknown":4455625.3224611282},"name":"0_60"},{"__type":"Arm","parameters":{"x_excellent":0.50077199935913086,"x_good":0.21378564834594727,"x_moderate":0.063377954065799713,"x_poor":0.015879204496741295,"x_unknown":0.99031245708465576,"y_excellent":2.3945426940917969,"y_good":1.4236395329236984,"y_moderate":0.51911543160676954,"y_poor":0.41250314936041832,"y_unknown":2.9154250442981722,"z_excellent":3586205.9116363525,"z_good":4096727.6513576508,"z_moderate":471279.49595451355,"z_poor":406645.01786231995,"z_unknown":2599197.706580162},"name":"0_61"},{"__type":"Arm","parameters":{"x_excellent":0.8359343409538269,"x_good":0.82277476787567139,"x_moderate":0.505788266658783,"x_poor":0.17802298069000244,"x_unknown":0.70850145816802979,"y_excellent":2.8446714520454406,"y_good":2.6066831648349762,"y_moderate":2.3757377922534944,"y_poor":1.6855916202068328,"y_unknown":0.5098012655973434,"z_excellent":4689886.50739193,"z_good":663633.58572125435,"z_moderate":2331521.72267437,"z_poor":2229135.6086730957,"z_unknown":917563.73792886734},"name":"0_62"},{"__type":"Arm","parameters":{"x_excellent":0.89734697341918945,"x_good":0.71715843677520752,"x_moderate":0.64442735910415649,"x_poor":0.10003725439310074,"x_unknown":0.050079178065061569,"y_excellent":1.7631141543388367,"y_good":1.243703305721283,"y_moderate":0.49481517225503924,"y_poor":0.19551184847950936,"y_unknown":1.1777444958686829,"z_excellent":2783564.7612810135,"z_good":847762.7620100975,"z_moderate":4948048.2399463654,"z_poor":4256544.7688102722,"z_unknown":58399.2516156286},"name":"0_63"}],"weights":[1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3900000000000001,1.3800000000000001,1.3800000000000001,1.3800000000000001,1.3800000000000001,1.3800000000000001,1.3800000000000001,1.3800000000000001],"optimization_config":null,"search_space":null,"time_created":{"__type":"datetime","value":"2019-04-23 21:08:25.173123"},"model_predictions":null,"best_arm_predictions":null,"generator_run_type":null,"index":null,"fit_time":null,"gen_time":null},"weight":1}],"runner":null,"abandoned_arms_metadata":{},"num_arms_created":64}},"is_test":false,"data_by_trial":{"0":{"__type":"OrderedDict","value":[[1556078905186,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1553904000000,\"1\":1553904000000,\"2\":1553904000000,\"3\":1553904000000,\"4\":1553904000000,\"5\":1553904000000,\"6\":1553904000000,\"7\":1553904000000,\"8\":1553904000000,\"9\":1553904000000,\"10\":1553904000000,\"11\":1553904000000,\"12\":1553904000000,\"13\":1553904000000,\"14\":1553904000000,\"15\":1553904000000,\"16\":1553904000000,\"17\":1553904000000,\"18\":1553904000000,\"19\":1553904000000,\"20\":1553904000000,\"21\":1553904000000,\"22\":1553904000000,\"23\":1553904000000,\"24\":1553904000000,\"25\":1553904000000,\"26\":1553904000000,\"27\":1553904000000,\"28\":1553904000000,\"29\":1553904000000,\"30\":1553904000000,\"31\":1553904000000,\"32\":1553904000000,\"33\":1553904000000,\"34\":1553904000000,\"35\":1553904000000,\"36\":1553904000000,\"37\":1553904000000,\"38\":1553904000000,\"39\":1553904000000,\"40\":1553904000000,\"41\":1553904000000,\"42\":1553904000000,\"43\":1553904000000,\"44\":1553904000000,\"45\":1553904000000,\"46\":1553904000000,\"47\":1553904000000,\"48\":1553904000000,\"49\":1553904000000,\"50\":1553904000000,\"51\":1553904000000,\"52\":1553904000000,\"53\":1553904000000,\"54\":1553904000000,\"55\":1553904000000,\"56\":1553904000000,\"57\":1553904000000,\"58\":1553904000000,\"59\":1553904000000,\"60\":1553904000000,\"61\":1553904000000,\"62\":1553904000000,\"63\":1553904000000,\"64\":1553904000000,\"65\":1553904000000,\"66\":1553904000000,\"67\":1553904000000,\"68\":1553904000000,\"69\":1553904000000,\"70\":1553904000000,\"71\":1553904000000,\"72\":1553904000000,\"73\":1553904000000,\"74\":1553904000000,\"75\":1553904000000,\"76\":1553904000000,\"77\":1553904000000,\"78\":1553904000000,\"79\":1553904000000,\"80\":1553904000000,\"81\":1553904000000,\"82\":1553904000000,\"83\":1553904000000,\"84\":1553904000000,\"85\":1553904000000,\"86\":1553904000000,\"87\":1553904000000,\"88\":1553904000000,\"89\":1553904000000,\"90\":1553904000000,\"91\":1553904000000,\"92\":1553904000000,\"93\":1553904000000,\"94\":1553904000000,\"95\":1553904000000,\"96\":1553904000000,\"97\":1553904000000,\"98\":1553904000000,\"99\":1553904000000,\"100\":1553904000000,\"101\":1553904000000,\"102\":1553904000000,\"103\":1553904000000,\"104\":1553904000000,\"105\":1553904000000,\"106\":1553904000000,\"107\":1553904000000,\"108\":1553904000000,\"109\":1553904000000,\"110\":1553904000000,\"111\":1553904000000,\"112\":1553904000000,\"113\":1553904000000,\"114\":1553904000000,\"115\":1553904000000,\"116\":1553904000000,\"117\":1553904000000,\"118\":1553904000000,\"119\":1553904000000,\"120\":1553904000000,\"121\":1553904000000,\"122\":1553904000000,\"123\":1553904000000,\"124\":1553904000000,\"125\":1553904000000,\"126\":1553904000000,\"127\":1553904000000,\"128\":1553904000000,\"129\":1553904000000,\"130\":1553904000000,\"131\":1553904000000,\"132\":1553904000000,\"133\":1553904000000,\"134\":1553904000000,\"135\":1553904000000,\"136\":1553904000000,\"137\":1553904000000,\"138\":1553904000000,\"139\":1553904000000,\"140\":1553904000000,\"141\":1553904000000,\"142\":1553904000000,\"143\":1553904000000,\"144\":1553904000000,\"145\":1553904000000,\"146\":1553904000000,\"147\":1553904000000,\"148\":1553904000000,\"149\":1553904000000,\"150\":1553904000000,\"151\":1553904000000,\"152\":1553904000000,\"153\":1553904000000,\"154\":1553904000000,\"155\":1553904000000,\"156\":1553904000000,\"157\":1553904000000,\"158\":1553904000000,\"159\":1553904000000,\"160\":1553904000000,\"161\":1553904000000,\"162\":1553904000000,\"163\":1553904000000,\"164\":1553904000000,\"165\":1553904000000,\"166\":1553904000000,\"167\":1553904000000,\"168\":1553904000000,\"169\":1553904000000,\"170\":1553904000000,\"171\":1553904000000,\"172\":1553904000000,\"173\":1553904000000,\"174\":1553904000000,\"175\":1553904000000,\"176\":1553904000000,\"177\":1553904000000,\"178\":1553904000000,\"179\":1553904000000,\"180\":1553904000000,\"181\":1553904000000,\"182\":1553904000000,\"183\":1553904000000,\"184\":1553904000000,\"185\":1553904000000,\"186\":1553904000000,\"187\":1553904000000,\"188\":1553904000000,\"189\":1553904000000,\"190\":1553904000000,\"191\":1553904000000,\"192\":1553904000000,\"193\":1553904000000,\"194\":1553904000000,\"195\":1553904000000,\"196\":1553904000000,\"197\":1553904000000,\"198\":1553904000000,\"199\":1553904000000,\"200\":1553904000000,\"201\":1553904000000,\"202\":1553904000000,\"203\":1553904000000,\"204\":1553904000000,\"205\":1553904000000,\"206\":1553904000000,\"207\":1553904000000,\"208\":1553904000000,\"209\":1553904000000,\"210\":1553904000000,\"211\":1553904000000,\"212\":1553904000000,\"213\":1553904000000,\"214\":1553904000000,\"215\":1553904000000,\"216\":1553904000000,\"217\":1553904000000,\"218\":1553904000000,\"219\":1553904000000,\"220\":1553904000000,\"221\":1553904000000,\"222\":1553904000000,\"223\":1553904000000,\"224\":1553904000000,\"225\":1553904000000,\"226\":1553904000000,\"227\":1553904000000,\"228\":1553904000000,\"229\":1553904000000,\"230\":1553904000000,\"231\":1553904000000,\"232\":1553904000000,\"233\":1553904000000,\"234\":1553904000000,\"235\":1553904000000,\"236\":1553904000000,\"237\":1553904000000,\"238\":1553904000000,\"239\":1553904000000,\"240\":1553904000000,\"241\":1553904000000,\"242\":1553904000000,\"243\":1553904000000,\"244\":1553904000000,\"245\":1553904000000,\"246\":1553904000000,\"247\":1553904000000,\"248\":1553904000000,\"249\":1553904000000,\"250\":1553904000000,\"251\":1553904000000,\"252\":1553904000000,\"253\":1553904000000,\"254\":1553904000000,\"255\":1553904000000,\"256\":1553904000000,\"257\":1553904000000,\"258\":1553904000000,\"259\":1553904000000,\"260\":1553904000000,\"261\":1553904000000,\"262\":1553904000000,\"263\":1553904000000,\"264\":1553904000000,\"265\":1553904000000,\"266\":1553904000000,\"267\":1553904000000,\"268\":1553904000000,\"269\":1553904000000,\"270\":1553904000000,\"271\":1553904000000,\"272\":1553904000000,\"273\":1553904000000,\"274\":1553904000000,\"275\":1553904000000,\"276\":1553904000000,\"277\":1553904000000,\"278\":1553904000000,\"279\":1553904000000,\"280\":1553904000000,\"281\":1553904000000,\"282\":1553904000000,\"283\":1553904000000,\"284\":1553904000000,\"285\":1553904000000,\"286\":1553904000000,\"287\":1553904000000,\"288\":1553904000000,\"289\":1553904000000,\"290\":1553904000000,\"291\":1553904000000,\"292\":1553904000000,\"293\":1553904000000,\"294\":1553904000000,\"295\":1553904000000,\"296\":1553904000000,\"297\":1553904000000,\"298\":1553904000000,\"299\":1553904000000,\"300\":1553904000000,\"301\":1553904000000,\"302\":1553904000000,\"303\":1553904000000,\"304\":1553904000000,\"305\":1553904000000,\"306\":1553904000000,\"307\":1553904000000,\"308\":1553904000000,\"309\":1553904000000,\"310\":1553904000000,\"311\":1553904000000,\"312\":1553904000000,\"313\":1553904000000,\"314\":1553904000000,\"315\":1553904000000,\"316\":1553904000000,\"317\":1553904000000,\"318\":1553904000000,\"319\":1553904000000,\"320\":1553904000000,\"321\":1553904000000,\"322\":1553904000000,\"323\":1553904000000,\"324\":1553904000000,\"325\":1553904000000,\"326\":1553904000000,\"327\":1553904000000,\"328\":1553904000000,\"329\":1553904000000,\"330\":1553904000000,\"331\":1553904000000,\"332\":1553904000000,\"333\":1553904000000,\"334\":1553904000000,\"335\":1553904000000,\"336\":1553904000000,\"337\":1553904000000,\"338\":1553904000000,\"339\":1553904000000,\"340\":1553904000000,\"341\":1553904000000,\"342\":1553904000000,\"343\":1553904000000,\"344\":1553904000000,\"345\":1553904000000,\"346\":1553904000000,\"347\":1553904000000,\"348\":1553904000000,\"349\":1553904000000,\"350\":1553904000000,\"351\":1553904000000,\"352\":1553904000000,\"353\":1553904000000,\"354\":1553904000000,\"355\":1553904000000,\"356\":1553904000000,\"357\":1553904000000,\"358\":1553904000000,\"359\":1553904000000,\"360\":1553904000000,\"361\":1553904000000,\"362\":1553904000000,\"363\":1553904000000,\"364\":1553904000000,\"365\":1553904000000,\"366\":1553904000000,\"367\":1553904000000,\"368\":1553904000000,\"369\":1553904000000,\"370\":1553904000000,\"371\":1553904000000,\"372\":1553904000000,\"373\":1553904000000,\"374\":1553904000000,\"375\":1553904000000,\"376\":1553904000000,\"377\":1553904000000,\"378\":1553904000000,\"379\":1553904000000,\"380\":1553904000000,\"381\":1553904000000,\"382\":1553904000000,\"383\":1553904000000,\"384\":1553904000000,\"385\":1553904000000,\"386\":1553904000000,\"387\":1553904000000,\"388\":1553904000000,\"389\":1553904000000},\"frac_nonnull\":{\"0\":0.4744936234,\"1\":0.0083512814,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.4750822596,\"10\":0.0085385178,\"11\":0.0086878016,\"12\":1.0,\"13\":0.4750769231,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.4755507191,\"22\":0.008761468,\"23\":1.0,\"24\":0.4747294209,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.4752280278,\"32\":1.0,\"33\":1.0,\"34\":0.0086161281,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.4753744418,\"41\":1.0,\"42\":0.0085441297,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0086464392,\"47\":0.475155475,\"48\":1.0,\"49\":0.475923931,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.4750349762,\"55\":0.0085588835,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0085099582,\"61\":1.0,\"62\":1.0,\"63\":0.0084313554,\"64\":0.4748999434,\"65\":0.4754884758,\"66\":0.4749811702,\"67\":0.0085297245,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.4753800656,\"75\":0.0086229618,\"76\":1.0,\"77\":0.4763232081,\"78\":1.0,\"79\":1.0,\"80\":0.008561072,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.4746860354,\"86\":1.0,\"87\":0.0086710018,\"88\":1.0,\"89\":0.0084596551,\"90\":0.0085064946,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.4765093016,\"97\":0.0083163867,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.4746194862,\"108\":1.0,\"109\":0.0088778478,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.476005865,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.475177785,\"119\":0.4754947443,\"120\":0.0085564296,\"121\":1.0,\"122\":1.0,\"123\":0.4765591032,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.4756390067,\"131\":0.0085669291,\"132\":1.0,\"133\":1.0,\"134\":0.0088324446,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.0084504305,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.4754151584,\"144\":0.008700519,\"145\":1.0,\"146\":0.4737205583,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.4759118223,\"151\":0.0086711148,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.4765325276,\"156\":0.4761037327,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.4748516913,\"163\":0.0086975472,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.008735582,\"169\":0.0085774982,\"170\":0.0083629678,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.4748326206,\"177\":1.0,\"178\":0.4744574541,\"179\":1.0,\"180\":0.4762869104,\"181\":0.4768777657,\"182\":0.0084408932,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.4746052362,\"189\":1.0,\"190\":1.0,\"191\":0.4757253315,\"192\":0.0086651962,\"193\":0.0083332526,\"194\":1.0,\"195\":1.0,\"196\":0.4765834817,\"197\":0.0083703268,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.008503937,\"202\":0.4748222842,\"203\":0.0087001531,\"204\":0.4751446687,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.0085800429,\"210\":1.0,\"211\":0.4747786745,\"212\":1.0,\"213\":0.0083566888,\"214\":0.0085522133,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.4757380748,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.4761802081,\"224\":1.0,\"225\":0.4747852246,\"226\":1.0,\"227\":0.0083984242,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.4770397105,\"234\":0.0086600328,\"235\":1.0,\"236\":0.0085876707,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.4742085123,\"245\":0.0085234346,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.4758431977,\"254\":0.476241049,\"255\":0.0088349139,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.0086235064,\"260\":1.0,\"261\":1.0,\"262\":0.0085890787,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.4758122464,\"267\":0.0086840396,\"268\":0.4738637545,\"269\":0.0084992827,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.4749582698,\"277\":0.4761623745,\"278\":0.0086585531,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0085766166,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.4755027092,\"288\":0.4753481093,\"289\":0.0085412064,\"290\":0.0085658127,\"291\":1.0,\"292\":0.0086343275,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.0085333412,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.4759774127,\"305\":0.0086022495,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.4777264626,\"316\":0.0085714147,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.4750997248,\"327\":0.4764405,\"328\":0.0086742125,\"329\":1.0,\"330\":1.0,\"331\":0.4761607735,\"332\":0.4752263761,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0085672369,\"340\":0.4748690592,\"341\":0.0085741998,\"342\":1.0,\"343\":0.0086229582,\"344\":1.0,\"345\":1.0,\"346\":0.0082399545,\"347\":0.0083817892,\"348\":1.0,\"349\":1.0,\"350\":0.4759216272,\"351\":0.4764104887,\"352\":1.0,\"353\":0.0083150211,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.4768998923,\"361\":1.0,\"362\":0.0084450441,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.0083839358,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.474434852,\"375\":1.0,\"376\":0.0085505015,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.4753789296,\"385\":1.0,\"386\":0.4752326105,\"387\":0.0083381365,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":90.6074849358,\"1\":0.0288193016,\"2\":41328.0447088802,\"3\":21.2695463051,\"4\":21.2604765949,\"5\":573.5779296935,\"6\":582.3547005876,\"7\":41209.2423784148,\"8\":21.2815432149,\"9\":91.6057477503,\"10\":0.0293323771,\"11\":0.0306185261,\"12\":0.9411470737,\"13\":90.4644482132,\"14\":20.9788302527,\"15\":569.7480484644,\"16\":579.7676897432,\"17\":0.9419530776,\"18\":41967.1336975434,\"19\":41683.7377060658,\"20\":41442.4634582619,\"21\":91.3955655847,\"22\":0.0301125364,\"23\":0.9426517116,\"24\":90.892844618,\"25\":21.4926269479,\"26\":577.8771062752,\"27\":597.6072710524,\"28\":0.9418588426,\"29\":21.542354345,\"30\":41331.7252069115,\"31\":89.2750299003,\"32\":21.3792558409,\"33\":41372.6741874313,\"34\":0.029448505,\"35\":591.0607688672,\"36\":0.9424944102,\"37\":21.2366875784,\"38\":590.4706831802,\"39\":41327.505823519,\"40\":90.4607384396,\"41\":595.719429477,\"42\":0.0299601872,\"43\":42649.8933537317,\"44\":21.3851760073,\"45\":40960.7607734098,\"46\":0.0298985404,\"47\":90.3071915685,\"48\":0.9418137446,\"49\":91.5689308799,\"50\":21.4033777689,\"51\":586.1979147039,\"52\":42224.6969244911,\"53\":42806.9112612501,\"54\":92.1394037828,\"55\":0.0291040766,\"56\":0.9425731317,\"57\":0.9421349998,\"58\":21.5939843234,\"59\":588.1506906461,\"60\":0.0268376085,\"61\":42759.1545525796,\"62\":587.0978733988,\"63\":0.0308090219,\"64\":92.6084337932,\"65\":92.2461874324,\"66\":90.5697817195,\"67\":0.027957734,\"68\":21.3204418196,\"69\":0.9416937325,\"70\":21.114704797,\"71\":588.4299650691,\"72\":42110.3418515679,\"73\":41349.8312112764,\"74\":90.7852142562,\"75\":0.0299216292,\"76\":0.9419954619,\"77\":91.4548192477,\"78\":0.9419151988,\"79\":592.5811436923,\"80\":0.0305904672,\"81\":21.4279733302,\"82\":591.6843220011,\"83\":582.6281030011,\"84\":41455.2627919613,\"85\":90.0991357974,\"86\":0.9428320964,\"87\":0.0304052504,\"88\":0.9418753245,\"89\":0.0313438878,\"90\":0.0283023679,\"91\":0.9414955692,\"92\":21.1864029955,\"93\":565.8285844264,\"94\":580.1609104817,\"95\":42237.4705364013,\"96\":90.9320225782,\"97\":0.0292978514,\"98\":40753.6892166884,\"99\":21.3482671195,\"100\":0.9422665671,\"101\":42802.3401987965,\"102\":0.9421035782,\"103\":21.3492998839,\"104\":585.6687402313,\"105\":21.0425730416,\"106\":41394.9106550473,\"107\":92.1710397479,\"108\":41637.3889088785,\"109\":0.0320625303,\"110\":0.9425771513,\"111\":21.2729022684,\"112\":21.3509349139,\"113\":21.4903982927,\"114\":91.1983327426,\"115\":21.1967775718,\"116\":589.791733871,\"117\":41425.3281161735,\"118\":91.5263402159,\"119\":91.0195838552,\"120\":0.0302115609,\"121\":591.337856131,\"122\":0.9421125366,\"123\":90.7079172689,\"124\":579.7928044679,\"125\":21.0140883333,\"126\":586.3643641925,\"127\":42333.5718919989,\"128\":588.7054291713,\"129\":42238.9202628511,\"130\":91.345254997,\"131\":0.0294027862,\"132\":0.9422306854,\"133\":21.1608080194,\"134\":0.0315251074,\"135\":40885.4170875755,\"136\":579.0090607531,\"137\":41837.2734294329,\"138\":0.0274693645,\"139\":587.9101536927,\"140\":569.2348289366,\"141\":42190.8616353185,\"142\":41619.3303597381,\"143\":91.3856260933,\"144\":0.0300847519,\"145\":0.9412585891,\"146\":91.2832267132,\"147\":21.4578411964,\"148\":590.7368165516,\"149\":41673.0503539127,\"150\":88.9644491555,\"151\":0.0303452715,\"152\":41808.7259118128,\"153\":0.9426153302,\"154\":0.9420953914,\"155\":90.5205476794,\"156\":92.5454387111,\"157\":41371.4223145562,\"158\":0.9416979605,\"159\":21.315155606,\"160\":572.2817267576,\"161\":41495.9720644865,\"162\":90.9357926342,\"163\":0.0294002276,\"164\":589.3700918834,\"165\":0.942537688,\"166\":21.4826102047,\"167\":582.9800217324,\"168\":0.0312421246,\"169\":0.0297799485,\"170\":0.0278902678,\"171\":0.9425869947,\"172\":585.0539548541,\"173\":21.2120026097,\"174\":581.1438891484,\"175\":41219.8808603692,\"176\":91.0795777782,\"177\":21.1464733781,\"178\":91.839278964,\"179\":0.9421263974,\"180\":91.0489845235,\"181\":91.8488801587,\"182\":0.0293408837,\"183\":21.1982536627,\"184\":0.9418510996,\"185\":21.2868162915,\"186\":585.6639227799,\"187\":41570.7823223213,\"188\":91.6512773063,\"189\":42221.2659483933,\"190\":21.1923039104,\"191\":92.3889230918,\"192\":0.0290132584,\"193\":0.0287217338,\"194\":0.9425262529,\"195\":21.0293423913,\"196\":91.810064538,\"197\":0.0289910389,\"198\":591.4915427827,\"199\":42563.7670646996,\"200\":588.1036866722,\"201\":0.0309824349,\"202\":89.985146611,\"203\":0.0295229549,\"204\":90.8585148724,\"205\":0.9417057434,\"206\":21.0580092819,\"207\":0.9409611951,\"208\":589.2324712143,\"209\":0.0310169881,\"210\":43115.7973771518,\"211\":91.0025458547,\"212\":41713.4109989913,\"213\":0.0294083181,\"214\":0.0298777207,\"215\":0.9423869382,\"216\":0.9408153185,\"217\":21.0399934587,\"218\":578.7442609183,\"219\":91.4704140579,\"220\":41880.835061868,\"221\":0.94289378,\"222\":0.9411934311,\"223\":91.4565748828,\"224\":575.3105881275,\"225\":90.4633394767,\"226\":0.9414797128,\"227\":0.0275965636,\"228\":0.941608724,\"229\":21.0225937445,\"230\":601.665180381,\"231\":42139.4732052995,\"232\":21.0979424001,\"233\":90.6573028235,\"234\":0.0291557686,\"235\":41226.19290085,\"236\":0.0296658386,\"237\":21.4133822332,\"238\":21.0591800277,\"239\":0.9429297468,\"240\":0.9426748499,\"241\":21.5396397053,\"242\":585.1470181395,\"243\":41878.0681925427,\"244\":91.1731639927,\"245\":0.0294500862,\"246\":21.6156755619,\"247\":0.9412900308,\"248\":21.3743103882,\"249\":584.331253023,\"250\":570.417585924,\"251\":21.2504420292,\"252\":42604.0513015917,\"253\":91.616191141,\"254\":91.9850808012,\"255\":0.0308859106,\"256\":0.9416484197,\"257\":576.1293289959,\"258\":581.0072670167,\"259\":0.0288595818,\"260\":40945.113826779,\"261\":21.2339304031,\"262\":0.0291656185,\"263\":0.9415757335,\"264\":583.791942393,\"265\":41988.0584262963,\"266\":91.607748307,\"267\":0.0304607897,\"268\":91.0422125569,\"269\":0.0290882082,\"270\":0.9419239249,\"271\":21.0876740335,\"272\":0.9420629935,\"273\":591.0730408992,\"274\":40015.019176493,\"275\":40923.2431437605,\"276\":89.6734048661,\"277\":90.6960872047,\"278\":0.0306314455,\"279\":42397.5769278246,\"280\":0.9424979921,\"281\":0.9416836503,\"282\":0.0280724582,\"283\":21.1843901051,\"284\":569.7030977014,\"285\":581.7434135701,\"286\":41948.2639862291,\"287\":91.7263927195,\"288\":90.7853189241,\"289\":0.0297400497,\"290\":0.0297083562,\"291\":0.9419161125,\"292\":0.0295151549,\"293\":21.2792212073,\"294\":582.1714459586,\"295\":41599.8056126855,\"296\":0.941688065,\"297\":21.3580954127,\"298\":0.94242384,\"299\":0.0305195313,\"300\":571.7254958848,\"301\":0.9416073674,\"302\":587.1974675254,\"303\":40883.6925783135,\"304\":90.8538077854,\"305\":0.0308406755,\"306\":0.9417944013,\"307\":0.9414645352,\"308\":21.1400823863,\"309\":589.3946599195,\"310\":21.3324060457,\"311\":0.9415968406,\"312\":21.2433903482,\"313\":21.595137794,\"314\":41189.4196147101,\"315\":90.8126041075,\"316\":0.0284265019,\"317\":42013.3461967377,\"318\":0.9422429367,\"319\":21.255395783,\"320\":592.4895521442,\"321\":41274.635763087,\"322\":21.2041173565,\"323\":590.1329081193,\"324\":578.8194200284,\"325\":41619.1107175595,\"326\":90.1317870437,\"327\":91.7663455071,\"328\":0.0303270795,\"329\":0.9409985625,\"330\":21.215938958,\"331\":91.5897430899,\"332\":92.3485284039,\"333\":0.9420007753,\"334\":42589.2017403914,\"335\":584.6398478099,\"336\":20.9995224244,\"337\":592.7309098865,\"338\":42062.8050463929,\"339\":0.0274888757,\"340\":90.6692919496,\"341\":0.0292555771,\"342\":0.9420773892,\"343\":0.029979338,\"344\":21.2845400012,\"345\":580.7385963005,\"346\":0.0289282729,\"347\":0.0289306135,\"348\":41034.0745912398,\"349\":21.3437922658,\"350\":91.7467275996,\"351\":91.1462687797,\"352\":42875.4619957921,\"353\":0.0289305555,\"354\":0.9426417872,\"355\":40985.2064984565,\"356\":21.2453760724,\"357\":0.9421117449,\"358\":586.4983318783,\"359\":41540.4968010058,\"360\":91.5777744882,\"361\":0.941729773,\"362\":0.0304822411,\"363\":0.9416148059,\"364\":21.1365998909,\"365\":0.9413301652,\"366\":0.0303639016,\"367\":598.726754289,\"368\":21.1302165913,\"369\":42688.2604091205,\"370\":0.9427053621,\"371\":21.440736609,\"372\":598.3080083433,\"373\":41529.4053977734,\"374\":91.8444270921,\"375\":21.0984363137,\"376\":0.0295047034,\"377\":0.9416720475,\"378\":21.3955600816,\"379\":589.2086910374,\"380\":42215.8610234166,\"381\":0.9422489884,\"382\":21.4486694867,\"383\":578.8763166368,\"384\":91.1671973331,\"385\":42490.0968575369,\"386\":90.2495919326,\"387\":0.027378052,\"388\":0.9414197453,\"389\":582.7176760036},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":413230,\"1\":413230,\"2\":412745,\"3\":412922,\"4\":413034,\"5\":412385,\"6\":412922,\"7\":412922,\"8\":411803,\"9\":412718,\"10\":412718,\"11\":414259,\"12\":412718,\"13\":412750,\"14\":412718,\"15\":412718,\"16\":412935,\"17\":410416,\"18\":412750,\"19\":412385,\"20\":412718,\"21\":411689,\"22\":411689,\"23\":411689,\"24\":413465,\"25\":411689,\"26\":411803,\"27\":411689,\"28\":414259,\"29\":410416,\"30\":411689,\"31\":413875,\"32\":413370,\"33\":412919,\"34\":413875,\"35\":408984,\"36\":413875,\"37\":413875,\"38\":413875,\"39\":413875,\"40\":412681,\"41\":410416,\"42\":412681,\"43\":411803,\"44\":414259,\"45\":412990,\"46\":413465,\"47\":412928,\"48\":412681,\"49\":412152,\"50\":412681,\"51\":412681,\"52\":412681,\"53\":410416,\"54\":413138,\"55\":413138,\"56\":413138,\"57\":413465,\"58\":413138,\"59\":413138,\"60\":412928,\"61\":413138,\"62\":414259,\"63\":412152,\"64\":413266,\"65\":413173,\"66\":412909,\"67\":412909,\"68\":411695,\"69\":412909,\"70\":412909,\"71\":412909,\"72\":412909,\"73\":413702,\"74\":413547,\"75\":413547,\"76\":413547,\"77\":410064,\"78\":412152,\"79\":413173,\"80\":413266,\"81\":412152,\"82\":413266,\"83\":412152,\"84\":412152,\"85\":414139,\"86\":412928,\"87\":414139,\"88\":411934,\"89\":410064,\"90\":411803,\"91\":414139,\"92\":414139,\"93\":414139,\"94\":413547,\"95\":414139,\"96\":412078,\"97\":412078,\"98\":413266,\"99\":412928,\"100\":412078,\"101\":412596,\"102\":410064,\"103\":412078,\"104\":412078,\"105\":411934,\"106\":412078,\"107\":412600,\"108\":413547,\"109\":412600,\"110\":412600,\"111\":412600,\"112\":408984,\"113\":413465,\"114\":411934,\"115\":410064,\"116\":412600,\"117\":412600,\"118\":413702,\"119\":412789,\"120\":412789,\"121\":411934,\"122\":412789,\"123\":411695,\"124\":413465,\"125\":412789,\"126\":412789,\"127\":412684,\"128\":412928,\"129\":412789,\"130\":412750,\"131\":412750,\"132\":412750,\"133\":412750,\"134\":413702,\"135\":413465,\"136\":412750,\"137\":411934,\"138\":411695,\"139\":413683,\"140\":410064,\"141\":412750,\"142\":412928,\"143\":412734,\"144\":412734,\"145\":412734,\"146\":412680,\"147\":412734,\"148\":412734,\"149\":412734,\"150\":413211,\"151\":413211,\"152\":410064,\"153\":413702,\"154\":411695,\"155\":412358,\"156\":413370,\"157\":408984,\"158\":413211,\"159\":413211,\"160\":413211,\"161\":413211,\"162\":412990,\"163\":412990,\"164\":413034,\"165\":412990,\"166\":412990,\"167\":412990,\"168\":412680,\"169\":412358,\"170\":413370,\"171\":412358,\"172\":413370,\"173\":412358,\"174\":412358,\"175\":412358,\"176\":413432,\"177\":413230,\"178\":412684,\"179\":412680,\"180\":411334,\"181\":412871,\"182\":412871,\"183\":413702,\"184\":412871,\"185\":412871,\"186\":412871,\"187\":413370,\"188\":409612,\"189\":412871,\"190\":412680,\"191\":412570,\"192\":412570,\"193\":412684,\"194\":412570,\"195\":412570,\"196\":412935,\"197\":411334,\"198\":412570,\"199\":412570,\"200\":411695,\"201\":412750,\"202\":413441,\"203\":413441,\"204\":411803,\"205\":413441,\"206\":413441,\"207\":413230,\"208\":413441,\"209\":412935,\"210\":413441,\"211\":408900,\"212\":413173,\"213\":409612,\"214\":408900,\"215\":411334,\"216\":408900,\"217\":408900,\"218\":408900,\"219\":413034,\"220\":408900,\"221\":413266,\"222\":412935,\"223\":412745,\"224\":412680,\"225\":410196,\"226\":409612,\"227\":410196,\"228\":410196,\"229\":410196,\"230\":410196,\"231\":410196,\"232\":411334,\"233\":410622,\"234\":410622,\"235\":412680,\"236\":413034,\"237\":412935,\"238\":409612,\"239\":412684,\"240\":410622,\"241\":410622,\"242\":410622,\"243\":410622,\"244\":413683,\"245\":413683,\"246\":413266,\"247\":413683,\"248\":413683,\"249\":411334,\"250\":409612,\"251\":412684,\"252\":409612,\"253\":412596,\"254\":413360,\"255\":413360,\"256\":413360,\"257\":412771,\"258\":412076,\"259\":413173,\"260\":413034,\"261\":413360,\"262\":413432,\"263\":413034,\"264\":413360,\"265\":413360,\"266\":413329,\"267\":412596,\"268\":413621,\"269\":413329,\"270\":413329,\"271\":413329,\"272\":413173,\"273\":413329,\"274\":413329,\"275\":413683,\"276\":412771,\"277\":413464,\"278\":413464,\"279\":412935,\"280\":413432,\"281\":413464,\"282\":411934,\"283\":413464,\"284\":413464,\"285\":412750,\"286\":413464,\"287\":408984,\"288\":3298246,\"289\":3298246,\"290\":413621,\"291\":3298246,\"292\":412771,\"293\":3298246,\"294\":3298246,\"295\":3298246,\"296\":412596,\"297\":413432,\"298\":413370,\"299\":408984,\"300\":413230,\"301\":413621,\"302\":413432,\"303\":413432,\"304\":412799,\"305\":412799,\"306\":412799,\"307\":412771,\"308\":412799,\"309\":412799,\"310\":412596,\"311\":408984,\"312\":413621,\"313\":413173,\"314\":412799,\"315\":411834,\"316\":411834,\"317\":413230,\"318\":411834,\"319\":411834,\"320\":411834,\"321\":411834,\"322\":412771,\"323\":413621,\"324\":413702,\"325\":413621,\"326\":412385,\"327\":413294,\"328\":413294,\"329\":412750,\"330\":413547,\"331\":410416,\"332\":412919,\"333\":413294,\"334\":412771,\"335\":412596,\"336\":413294,\"337\":413294,\"338\":413294,\"339\":412385,\"340\":412400,\"341\":412400,\"342\":412400,\"343\":410416,\"344\":412400,\"345\":412400,\"346\":412745,\"347\":412919,\"348\":412400,\"349\":412750,\"350\":412694,\"351\":412747,\"352\":411695,\"353\":412747,\"354\":412747,\"355\":414259,\"356\":412747,\"357\":412745,\"358\":412747,\"359\":412747,\"360\":412076,\"361\":412919,\"362\":412076,\"363\":412076,\"364\":412076,\"365\":412385,\"366\":412694,\"367\":412684,\"368\":412745,\"369\":412076,\"370\":412694,\"371\":412694,\"372\":412694,\"373\":412694,\"374\":411087,\"375\":412919,\"376\":411087,\"377\":411803,\"378\":412385,\"379\":412745,\"380\":411334,\"381\":411087,\"382\":411087,\"383\":411087,\"384\":414259,\"385\":411087,\"386\":412922,\"387\":412922,\"388\":412922,\"389\":412919},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.8757586838,\"1\":0.0011681073,\"2\":551.7209337169,\"3\":0.1469467922,\"4\":0.1449417598,\"5\":6.1895641996,\"6\":6.1441454839,\"7\":545.5766664625,\"8\":0.1445461597,\"9\":0.8943585459,\"10\":0.0011333233,\"11\":0.0011717681,\"12\":0.0004689262,\"13\":0.8723742088,\"14\":0.146486496,\"15\":6.2061759655,\"16\":6.244361884,\"17\":0.0004785088,\"18\":555.0136434569,\"19\":552.2392503935,\"20\":543.0207799205,\"21\":0.8824203467,\"22\":0.001128535,\"23\":0.0004303657,\"24\":0.8712680283,\"25\":0.1431020792,\"26\":6.2780224626,\"27\":6.4492927645,\"28\":0.0004505253,\"29\":0.1525140342,\"30\":551.6531999906,\"31\":0.8584864132,\"32\":0.1439580551,\"33\":524.7512919379,\"34\":0.0011011395,\"35\":6.3351547702,\"36\":0.0004527167,\"37\":0.1448647183,\"38\":6.4480635154,\"39\":546.0314798214,\"40\":0.8735567065,\"41\":6.4173313078,\"42\":0.00120001,\"43\":562.3616870405,\"44\":0.1445812104,\"45\":538.1509684475,\"46\":0.0011690021,\"47\":0.8778260051,\"48\":0.0004817256,\"49\":0.8861473895,\"50\":0.1456409582,\"51\":6.2605475758,\"52\":552.6468763915,\"53\":572.1238580591,\"54\":0.8955282282,\"55\":0.0011389227,\"56\":0.0004203904,\"57\":0.000445972,\"58\":0.1434178681,\"59\":6.3670274978,\"60\":0.0010103084,\"61\":563.6621592454,\"62\":6.3381288528,\"63\":0.0011469892,\"64\":0.8995430753,\"65\":0.8810620414,\"66\":0.8741455225,\"67\":0.0010345988,\"68\":0.1442903809,\"69\":0.0004250779,\"70\":0.1443011294,\"71\":6.35957412,\"72\":559.203695455,\"73\":539.9203400009,\"74\":0.8682409952,\"75\":0.0011552274,\"76\":0.0004968713,\"77\":0.8912059475,\"78\":0.0004669523,\"79\":6.2871907066,\"80\":0.001182408,\"81\":0.1444690469,\"82\":6.4091204569,\"83\":6.2076098356,\"84\":550.1585244589,\"85\":0.864560999,\"86\":0.0004412139,\"87\":0.0011205208,\"88\":0.0004391163,\"89\":0.0012175373,\"90\":0.0010754627,\"91\":0.0004424569,\"92\":0.1461532157,\"93\":6.1141653272,\"94\":6.2013192782,\"95\":573.4064355384,\"96\":0.8778416488,\"97\":0.001108957,\"98\":530.6054950244,\"99\":0.1445131091,\"100\":0.000442698,\"101\":571.0217190994,\"102\":0.0004392972,\"103\":0.1460423566,\"104\":6.3771006982,\"105\":0.1428421653,\"106\":542.8982028835,\"107\":0.8880408197,\"108\":550.8864236512,\"109\":0.0011930179,\"110\":0.0004418043,\"111\":0.1463129976,\"112\":0.1452875841,\"113\":0.1442849,\"114\":0.8787693097,\"115\":0.1435242081,\"116\":6.3913612484,\"117\":562.1730959433,\"118\":0.8760603725,\"119\":0.8737935257,\"120\":0.0011794656,\"121\":6.331803702,\"122\":0.0004434024,\"123\":0.8733131385,\"124\":6.3058368488,\"125\":0.145357802,\"126\":6.3043650873,\"127\":561.2322197946,\"128\":6.3097437404,\"129\":562.2380366932,\"130\":0.879516536,\"131\":0.0011561323,\"132\":0.0004473097,\"133\":0.1478358988,\"134\":0.0012377793,\"135\":535.0316845021,\"136\":6.3286087739,\"137\":551.8269008206,\"138\":0.0009916461,\"139\":6.333724018,\"140\":6.1388210913,\"141\":566.4312689586,\"142\":554.4150856908,\"143\":0.8779542526,\"144\":0.001134994,\"145\":0.0004521153,\"146\":0.879831002,\"147\":0.1471496226,\"148\":6.3947266353,\"149\":557.5380710107,\"150\":0.8532596492,\"151\":0.0011045789,\"152\":559.5213596786,\"153\":0.0004370273,\"154\":0.0004548012,\"155\":0.873419111,\"156\":0.8926803903,\"157\":546.3295109004,\"158\":0.000425102,\"159\":0.1447840382,\"160\":6.2088608555,\"161\":550.7478257863,\"162\":0.8708310151,\"163\":0.0011684229,\"164\":6.2991133031,\"165\":0.0004375633,\"166\":0.1428699861,\"167\":6.2519011891,\"168\":0.0011377795,\"169\":0.001116739,\"170\":0.0010943768,\"171\":0.0004184408,\"172\":6.2122708552,\"173\":0.141844023,\"174\":6.2505295966,\"175\":542.7415091163,\"176\":0.8720930048,\"177\":0.1452683494,\"178\":0.8789793806,\"179\":0.0004560349,\"180\":0.8736738985,\"181\":0.8839496803,\"182\":0.0011130776,\"183\":0.1466844224,\"184\":0.0004695274,\"185\":0.1429167929,\"186\":6.2230674445,\"187\":532.0686670483,\"188\":0.8864786855,\"189\":550.1697281658,\"190\":0.1446619859,\"191\":0.8908966695,\"192\":0.0010988785,\"193\":0.0010728533,\"194\":0.0004116637,\"195\":0.1448083677,\"196\":0.8835424034,\"197\":0.0011010124,\"198\":6.3268524075,\"199\":564.6550888155,\"200\":6.3718015444,\"201\":0.0011952711,\"202\":0.8657145903,\"203\":0.0010631447,\"204\":0.8754669529,\"205\":0.0004594683,\"206\":0.1444731399,\"207\":0.0004523654,\"208\":6.3867880185,\"209\":0.001209767,\"210\":566.8785669118,\"211\":0.8783598241,\"212\":549.8114357001,\"213\":0.0011941554,\"214\":0.0011254173,\"215\":0.0004681917,\"216\":0.000457952,\"217\":0.1448730122,\"218\":6.2154665013,\"219\":0.8845412728,\"220\":556.4372636041,\"221\":0.0004333009,\"222\":0.0004647442,\"223\":0.8869293392,\"224\":6.1127309796,\"225\":0.8862830063,\"226\":0.00043058,\"227\":0.0010881596,\"228\":0.0004508294,\"229\":0.1460053189,\"230\":6.5195455401,\"231\":568.089794083,\"232\":0.1454623565,\"233\":0.8735316438,\"234\":0.0010724398,\"235\":548.8107029329,\"236\":0.0011304061,\"237\":0.145202607,\"238\":0.1444664169,\"239\":0.0004107842,\"240\":0.0004314714,\"241\":0.1461104349,\"242\":6.3082390974,\"243\":564.1088177747,\"244\":0.8754076886,\"245\":0.0010676595,\"246\":0.1422394039,\"247\":0.0004604791,\"248\":0.1423150227,\"249\":6.3096507915,\"250\":6.1576163818,\"251\":0.143375558,\"252\":570.0469942638,\"253\":0.8786961241,\"254\":0.8810031017,\"255\":0.0010890511,\"256\":0.000468872,\"257\":6.170210753,\"258\":6.1939707397,\"259\":0.0010502913,\"260\":521.0722371227,\"261\":0.1433798487,\"262\":0.001089027,\"263\":0.0004558827,\"264\":6.28287204,\"265\":561.0633569019,\"266\":0.8894251211,\"267\":0.0011613434,\"268\":0.8789502016,\"269\":0.0011003839,\"270\":0.0004439435,\"271\":0.1484539033,\"272\":0.0004501588,\"273\":6.4247830147,\"274\":524.9903211152,\"275\":546.2566690035,\"276\":0.8677963514,\"277\":0.8686357006,\"278\":0.0012260408,\"279\":561.9823724007,\"280\":0.0004552657,\"281\":0.0004498657,\"282\":0.0010785746,\"283\":0.1430273665,\"284\":6.0955884277,\"285\":6.2549942698,\"286\":548.4164787675,\"287\":0.8949810066,\"288\":0.3092683544,\"289\":0.0004047375,\"290\":0.0011405405,\"291\":0.0001617321,\"292\":0.0011077527,\"293\":0.0514944484,\"294\":2.2245158869,\"295\":196.202797523,\"296\":0.000447837,\"297\":0.1445910969,\"298\":0.0004529409,\"299\":0.0011889383,\"300\":6.0970516441,\"301\":0.0004641,\"302\":6.3808638805,\"303\":539.0022380473,\"304\":0.8747647222,\"305\":0.0011801288,\"306\":0.0004567434,\"307\":0.0004240967,\"308\":0.1454437027,\"309\":6.3442291552,\"310\":0.1431658655,\"311\":0.0004805583,\"312\":0.1464119846,\"313\":0.1428818356,\"314\":541.3455963236,\"315\":0.8710260379,\"316\":0.0010825977,\"317\":557.5660714772,\"318\":0.0004782589,\"319\":0.1458889692,\"320\":6.3608546841,\"321\":546.933033876,\"322\":0.1464931359,\"323\":6.4408514328,\"324\":6.1650009671,\"325\":552.3563712723,\"326\":0.8648829641,\"327\":0.8843338952,\"328\":0.0011182264,\"329\":0.0004876366,\"330\":0.144552743,\"331\":0.8884793469,\"332\":0.8853302977,\"333\":0.0004328902,\"334\":563.0983015784,\"335\":6.2757100469,\"336\":0.1429369289,\"337\":6.3924694824,\"338\":557.450823752,\"339\":0.001038247,\"340\":0.8683707472,\"341\":0.001151298,\"342\":0.0004329182,\"343\":0.0011361956,\"344\":0.1457237919,\"345\":6.1882401845,\"346\":0.0011458122,\"347\":0.0011203117,\"348\":533.0938179341,\"349\":0.1409381733,\"350\":0.8818870773,\"351\":0.8733624143,\"352\":573.1638754655,\"353\":0.0011317992,\"354\":0.0004162441,\"355\":540.3679596302,\"356\":0.1469817811,\"357\":0.0004742366,\"358\":6.4075310618,\"359\":551.9259747124,\"360\":0.8807033415,\"361\":0.0004459853,\"362\":0.0011450358,\"363\":0.0004400015,\"364\":0.1443189703,\"365\":0.000437093,\"366\":0.0011485125,\"367\":6.4332777843,\"368\":0.1442773902,\"369\":570.8956215886,\"370\":0.0004289179,\"371\":0.1449952768,\"372\":6.4547116845,\"373\":554.7293583038,\"374\":0.883626247,\"375\":0.1436627227,\"376\":0.0011401583,\"377\":0.0004306861,\"378\":0.1457572264,\"379\":6.3596502176,\"380\":568.9605625822,\"381\":0.0004339667,\"382\":0.1445927122,\"383\":6.2132948465,\"384\":0.8754537636,\"385\":559.8438978036,\"386\":0.8675418684,\"387\":0.0010281467,\"388\":0.0004516367,\"389\":6.2273539558},\"start_time\":{\"0\":1553817600000,\"1\":1553817600000,\"2\":1553817600000,\"3\":1553817600000,\"4\":1553817600000,\"5\":1553817600000,\"6\":1553817600000,\"7\":1553817600000,\"8\":1553817600000,\"9\":1553817600000,\"10\":1553817600000,\"11\":1553817600000,\"12\":1553817600000,\"13\":1553817600000,\"14\":1553817600000,\"15\":1553817600000,\"16\":1553817600000,\"17\":1553817600000,\"18\":1553817600000,\"19\":1553817600000,\"20\":1553817600000,\"21\":1553817600000,\"22\":1553817600000,\"23\":1553817600000,\"24\":1553817600000,\"25\":1553817600000,\"26\":1553817600000,\"27\":1553817600000,\"28\":1553817600000,\"29\":1553817600000,\"30\":1553817600000,\"31\":1553817600000,\"32\":1553817600000,\"33\":1553817600000,\"34\":1553817600000,\"35\":1553817600000,\"36\":1553817600000,\"37\":1553817600000,\"38\":1553817600000,\"39\":1553817600000,\"40\":1553817600000,\"41\":1553817600000,\"42\":1553817600000,\"43\":1553817600000,\"44\":1553817600000,\"45\":1553817600000,\"46\":1553817600000,\"47\":1553817600000,\"48\":1553817600000,\"49\":1553817600000,\"50\":1553817600000,\"51\":1553817600000,\"52\":1553817600000,\"53\":1553817600000,\"54\":1553817600000,\"55\":1553817600000,\"56\":1553817600000,\"57\":1553817600000,\"58\":1553817600000,\"59\":1553817600000,\"60\":1553817600000,\"61\":1553817600000,\"62\":1553817600000,\"63\":1553817600000,\"64\":1553817600000,\"65\":1553817600000,\"66\":1553817600000,\"67\":1553817600000,\"68\":1553817600000,\"69\":1553817600000,\"70\":1553817600000,\"71\":1553817600000,\"72\":1553817600000,\"73\":1553817600000,\"74\":1553817600000,\"75\":1553817600000,\"76\":1553817600000,\"77\":1553817600000,\"78\":1553817600000,\"79\":1553817600000,\"80\":1553817600000,\"81\":1553817600000,\"82\":1553817600000,\"83\":1553817600000,\"84\":1553817600000,\"85\":1553817600000,\"86\":1553817600000,\"87\":1553817600000,\"88\":1553817600000,\"89\":1553817600000,\"90\":1553817600000,\"91\":1553817600000,\"92\":1553817600000,\"93\":1553817600000,\"94\":1553817600000,\"95\":1553817600000,\"96\":1553817600000,\"97\":1553817600000,\"98\":1553817600000,\"99\":1553817600000,\"100\":1553817600000,\"101\":1553817600000,\"102\":1553817600000,\"103\":1553817600000,\"104\":1553817600000,\"105\":1553817600000,\"106\":1553817600000,\"107\":1553817600000,\"108\":1553817600000,\"109\":1553817600000,\"110\":1553817600000,\"111\":1553817600000,\"112\":1553817600000,\"113\":1553817600000,\"114\":1553817600000,\"115\":1553817600000,\"116\":1553817600000,\"117\":1553817600000,\"118\":1553817600000,\"119\":1553817600000,\"120\":1553817600000,\"121\":1553817600000,\"122\":1553817600000,\"123\":1553817600000,\"124\":1553817600000,\"125\":1553817600000,\"126\":1553817600000,\"127\":1553817600000,\"128\":1553817600000,\"129\":1553817600000,\"130\":1553817600000,\"131\":1553817600000,\"132\":1553817600000,\"133\":1553817600000,\"134\":1553817600000,\"135\":1553817600000,\"136\":1553817600000,\"137\":1553817600000,\"138\":1553817600000,\"139\":1553817600000,\"140\":1553817600000,\"141\":1553817600000,\"142\":1553817600000,\"143\":1553817600000,\"144\":1553817600000,\"145\":1553817600000,\"146\":1553817600000,\"147\":1553817600000,\"148\":1553817600000,\"149\":1553817600000,\"150\":1553817600000,\"151\":1553817600000,\"152\":1553817600000,\"153\":1553817600000,\"154\":1553817600000,\"155\":1553817600000,\"156\":1553817600000,\"157\":1553817600000,\"158\":1553817600000,\"159\":1553817600000,\"160\":1553817600000,\"161\":1553817600000,\"162\":1553817600000,\"163\":1553817600000,\"164\":1553817600000,\"165\":1553817600000,\"166\":1553817600000,\"167\":1553817600000,\"168\":1553817600000,\"169\":1553817600000,\"170\":1553817600000,\"171\":1553817600000,\"172\":1553817600000,\"173\":1553817600000,\"174\":1553817600000,\"175\":1553817600000,\"176\":1553817600000,\"177\":1553817600000,\"178\":1553817600000,\"179\":1553817600000,\"180\":1553817600000,\"181\":1553817600000,\"182\":1553817600000,\"183\":1553817600000,\"184\":1553817600000,\"185\":1553817600000,\"186\":1553817600000,\"187\":1553817600000,\"188\":1553817600000,\"189\":1553817600000,\"190\":1553817600000,\"191\":1553817600000,\"192\":1553817600000,\"193\":1553817600000,\"194\":1553817600000,\"195\":1553817600000,\"196\":1553817600000,\"197\":1553817600000,\"198\":1553817600000,\"199\":1553817600000,\"200\":1553817600000,\"201\":1553817600000,\"202\":1553817600000,\"203\":1553817600000,\"204\":1553817600000,\"205\":1553817600000,\"206\":1553817600000,\"207\":1553817600000,\"208\":1553817600000,\"209\":1553817600000,\"210\":1553817600000,\"211\":1553817600000,\"212\":1553817600000,\"213\":1553817600000,\"214\":1553817600000,\"215\":1553817600000,\"216\":1553817600000,\"217\":1553817600000,\"218\":1553817600000,\"219\":1553817600000,\"220\":1553817600000,\"221\":1553817600000,\"222\":1553817600000,\"223\":1553817600000,\"224\":1553817600000,\"225\":1553817600000,\"226\":1553817600000,\"227\":1553817600000,\"228\":1553817600000,\"229\":1553817600000,\"230\":1553817600000,\"231\":1553817600000,\"232\":1553817600000,\"233\":1553817600000,\"234\":1553817600000,\"235\":1553817600000,\"236\":1553817600000,\"237\":1553817600000,\"238\":1553817600000,\"239\":1553817600000,\"240\":1553817600000,\"241\":1553817600000,\"242\":1553817600000,\"243\":1553817600000,\"244\":1553817600000,\"245\":1553817600000,\"246\":1553817600000,\"247\":1553817600000,\"248\":1553817600000,\"249\":1553817600000,\"250\":1553817600000,\"251\":1553817600000,\"252\":1553817600000,\"253\":1553817600000,\"254\":1553817600000,\"255\":1553817600000,\"256\":1553817600000,\"257\":1553817600000,\"258\":1553817600000,\"259\":1553817600000,\"260\":1553817600000,\"261\":1553817600000,\"262\":1553817600000,\"263\":1553817600000,\"264\":1553817600000,\"265\":1553817600000,\"266\":1553817600000,\"267\":1553817600000,\"268\":1553817600000,\"269\":1553817600000,\"270\":1553817600000,\"271\":1553817600000,\"272\":1553817600000,\"273\":1553817600000,\"274\":1553817600000,\"275\":1553817600000,\"276\":1553817600000,\"277\":1553817600000,\"278\":1553817600000,\"279\":1553817600000,\"280\":1553817600000,\"281\":1553817600000,\"282\":1553817600000,\"283\":1553817600000,\"284\":1553817600000,\"285\":1553817600000,\"286\":1553817600000,\"287\":1553817600000,\"288\":1553817600000,\"289\":1553817600000,\"290\":1553817600000,\"291\":1553817600000,\"292\":1553817600000,\"293\":1553817600000,\"294\":1553817600000,\"295\":1553817600000,\"296\":1553817600000,\"297\":1553817600000,\"298\":1553817600000,\"299\":1553817600000,\"300\":1553817600000,\"301\":1553817600000,\"302\":1553817600000,\"303\":1553817600000,\"304\":1553817600000,\"305\":1553817600000,\"306\":1553817600000,\"307\":1553817600000,\"308\":1553817600000,\"309\":1553817600000,\"310\":1553817600000,\"311\":1553817600000,\"312\":1553817600000,\"313\":1553817600000,\"314\":1553817600000,\"315\":1553817600000,\"316\":1553817600000,\"317\":1553817600000,\"318\":1553817600000,\"319\":1553817600000,\"320\":1553817600000,\"321\":1553817600000,\"322\":1553817600000,\"323\":1553817600000,\"324\":1553817600000,\"325\":1553817600000,\"326\":1553817600000,\"327\":1553817600000,\"328\":1553817600000,\"329\":1553817600000,\"330\":1553817600000,\"331\":1553817600000,\"332\":1553817600000,\"333\":1553817600000,\"334\":1553817600000,\"335\":1553817600000,\"336\":1553817600000,\"337\":1553817600000,\"338\":1553817600000,\"339\":1553817600000,\"340\":1553817600000,\"341\":1553817600000,\"342\":1553817600000,\"343\":1553817600000,\"344\":1553817600000,\"345\":1553817600000,\"346\":1553817600000,\"347\":1553817600000,\"348\":1553817600000,\"349\":1553817600000,\"350\":1553817600000,\"351\":1553817600000,\"352\":1553817600000,\"353\":1553817600000,\"354\":1553817600000,\"355\":1553817600000,\"356\":1553817600000,\"357\":1553817600000,\"358\":1553817600000,\"359\":1553817600000,\"360\":1553817600000,\"361\":1553817600000,\"362\":1553817600000,\"363\":1553817600000,\"364\":1553817600000,\"365\":1553817600000,\"366\":1553817600000,\"367\":1553817600000,\"368\":1553817600000,\"369\":1553817600000,\"370\":1553817600000,\"371\":1553817600000,\"372\":1553817600000,\"373\":1553817600000,\"374\":1553817600000,\"375\":1553817600000,\"376\":1553817600000,\"377\":1553817600000,\"378\":1553817600000,\"379\":1553817600000,\"380\":1553817600000,\"381\":1553817600000,\"382\":1553817600000,\"383\":1553817600000,\"384\":1553817600000,\"385\":1553817600000,\"386\":1553817600000,\"387\":1553817600000,\"388\":1553817600000,\"389\":1553817600000}}"},"description":null}],[1556078905201,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1553990400000,\"1\":1553990400000,\"2\":1553990400000,\"3\":1553990400000,\"4\":1553990400000,\"5\":1553990400000,\"6\":1553990400000,\"7\":1553990400000,\"8\":1553990400000,\"9\":1553990400000,\"10\":1553990400000,\"11\":1553990400000,\"12\":1553990400000,\"13\":1553990400000,\"14\":1553990400000,\"15\":1553990400000,\"16\":1553990400000,\"17\":1553990400000,\"18\":1553990400000,\"19\":1553990400000,\"20\":1553990400000,\"21\":1553990400000,\"22\":1553990400000,\"23\":1553990400000,\"24\":1553990400000,\"25\":1553990400000,\"26\":1553990400000,\"27\":1553990400000,\"28\":1553990400000,\"29\":1553990400000,\"30\":1553990400000,\"31\":1553990400000,\"32\":1553990400000,\"33\":1553990400000,\"34\":1553990400000,\"35\":1553990400000,\"36\":1553990400000,\"37\":1553990400000,\"38\":1553990400000,\"39\":1553990400000,\"40\":1553990400000,\"41\":1553990400000,\"42\":1553990400000,\"43\":1553990400000,\"44\":1553990400000,\"45\":1553990400000,\"46\":1553990400000,\"47\":1553990400000,\"48\":1553990400000,\"49\":1553990400000,\"50\":1553990400000,\"51\":1553990400000,\"52\":1553990400000,\"53\":1553990400000,\"54\":1553990400000,\"55\":1553990400000,\"56\":1553990400000,\"57\":1553990400000,\"58\":1553990400000,\"59\":1553990400000,\"60\":1553990400000,\"61\":1553990400000,\"62\":1553990400000,\"63\":1553990400000,\"64\":1553990400000,\"65\":1553990400000,\"66\":1553990400000,\"67\":1553990400000,\"68\":1553990400000,\"69\":1553990400000,\"70\":1553990400000,\"71\":1553990400000,\"72\":1553990400000,\"73\":1553990400000,\"74\":1553990400000,\"75\":1553990400000,\"76\":1553990400000,\"77\":1553990400000,\"78\":1553990400000,\"79\":1553990400000,\"80\":1553990400000,\"81\":1553990400000,\"82\":1553990400000,\"83\":1553990400000,\"84\":1553990400000,\"85\":1553990400000,\"86\":1553990400000,\"87\":1553990400000,\"88\":1553990400000,\"89\":1553990400000,\"90\":1553990400000,\"91\":1553990400000,\"92\":1553990400000,\"93\":1553990400000,\"94\":1553990400000,\"95\":1553990400000,\"96\":1553990400000,\"97\":1553990400000,\"98\":1553990400000,\"99\":1553990400000,\"100\":1553990400000,\"101\":1553990400000,\"102\":1553990400000,\"103\":1553990400000,\"104\":1553990400000,\"105\":1553990400000,\"106\":1553990400000,\"107\":1553990400000,\"108\":1553990400000,\"109\":1553990400000,\"110\":1553990400000,\"111\":1553990400000,\"112\":1553990400000,\"113\":1553990400000,\"114\":1553990400000,\"115\":1553990400000,\"116\":1553990400000,\"117\":1553990400000,\"118\":1553990400000,\"119\":1553990400000,\"120\":1553990400000,\"121\":1553990400000,\"122\":1553990400000,\"123\":1553990400000,\"124\":1553990400000,\"125\":1553990400000,\"126\":1553990400000,\"127\":1553990400000,\"128\":1553990400000,\"129\":1553990400000,\"130\":1553990400000,\"131\":1553990400000,\"132\":1553990400000,\"133\":1553990400000,\"134\":1553990400000,\"135\":1553990400000,\"136\":1553990400000,\"137\":1553990400000,\"138\":1553990400000,\"139\":1553990400000,\"140\":1553990400000,\"141\":1553990400000,\"142\":1553990400000,\"143\":1553990400000,\"144\":1553990400000,\"145\":1553990400000,\"146\":1553990400000,\"147\":1553990400000,\"148\":1553990400000,\"149\":1553990400000,\"150\":1553990400000,\"151\":1553990400000,\"152\":1553990400000,\"153\":1553990400000,\"154\":1553990400000,\"155\":1553990400000,\"156\":1553990400000,\"157\":1553990400000,\"158\":1553990400000,\"159\":1553990400000,\"160\":1553990400000,\"161\":1553990400000,\"162\":1553990400000,\"163\":1553990400000,\"164\":1553990400000,\"165\":1553990400000,\"166\":1553990400000,\"167\":1553990400000,\"168\":1553990400000,\"169\":1553990400000,\"170\":1553990400000,\"171\":1553990400000,\"172\":1553990400000,\"173\":1553990400000,\"174\":1553990400000,\"175\":1553990400000,\"176\":1553990400000,\"177\":1553990400000,\"178\":1553990400000,\"179\":1553990400000,\"180\":1553990400000,\"181\":1553990400000,\"182\":1553990400000,\"183\":1553990400000,\"184\":1553990400000,\"185\":1553990400000,\"186\":1553990400000,\"187\":1553990400000,\"188\":1553990400000,\"189\":1553990400000,\"190\":1553990400000,\"191\":1553990400000,\"192\":1553990400000,\"193\":1553990400000,\"194\":1553990400000,\"195\":1553990400000,\"196\":1553990400000,\"197\":1553990400000,\"198\":1553990400000,\"199\":1553990400000,\"200\":1553990400000,\"201\":1553990400000,\"202\":1553990400000,\"203\":1553990400000,\"204\":1553990400000,\"205\":1553990400000,\"206\":1553990400000,\"207\":1553990400000,\"208\":1553990400000,\"209\":1553990400000,\"210\":1553990400000,\"211\":1553990400000,\"212\":1553990400000,\"213\":1553990400000,\"214\":1553990400000,\"215\":1553990400000,\"216\":1553990400000,\"217\":1553990400000,\"218\":1553990400000,\"219\":1553990400000,\"220\":1553990400000,\"221\":1553990400000,\"222\":1553990400000,\"223\":1553990400000,\"224\":1553990400000,\"225\":1553990400000,\"226\":1553990400000,\"227\":1553990400000,\"228\":1553990400000,\"229\":1553990400000,\"230\":1553990400000,\"231\":1553990400000,\"232\":1553990400000,\"233\":1553990400000,\"234\":1553990400000,\"235\":1553990400000,\"236\":1553990400000,\"237\":1553990400000,\"238\":1553990400000,\"239\":1553990400000,\"240\":1553990400000,\"241\":1553990400000,\"242\":1553990400000,\"243\":1553990400000,\"244\":1553990400000,\"245\":1553990400000,\"246\":1553990400000,\"247\":1553990400000,\"248\":1553990400000,\"249\":1553990400000,\"250\":1553990400000,\"251\":1553990400000,\"252\":1553990400000,\"253\":1553990400000,\"254\":1553990400000,\"255\":1553990400000,\"256\":1553990400000,\"257\":1553990400000,\"258\":1553990400000,\"259\":1553990400000,\"260\":1553990400000,\"261\":1553990400000,\"262\":1553990400000,\"263\":1553990400000,\"264\":1553990400000,\"265\":1553990400000,\"266\":1553990400000,\"267\":1553990400000,\"268\":1553990400000,\"269\":1553990400000,\"270\":1553990400000,\"271\":1553990400000,\"272\":1553990400000,\"273\":1553990400000,\"274\":1553990400000,\"275\":1553990400000,\"276\":1553990400000,\"277\":1553990400000,\"278\":1553990400000,\"279\":1553990400000,\"280\":1553990400000,\"281\":1553990400000,\"282\":1553990400000,\"283\":1553990400000,\"284\":1553990400000,\"285\":1553990400000,\"286\":1553990400000,\"287\":1553990400000,\"288\":1553990400000,\"289\":1553990400000,\"290\":1553990400000,\"291\":1553990400000,\"292\":1553990400000,\"293\":1553990400000,\"294\":1553990400000,\"295\":1553990400000,\"296\":1553990400000,\"297\":1553990400000,\"298\":1553990400000,\"299\":1553990400000,\"300\":1553990400000,\"301\":1553990400000,\"302\":1553990400000,\"303\":1553990400000,\"304\":1553990400000,\"305\":1553990400000,\"306\":1553990400000,\"307\":1553990400000,\"308\":1553990400000,\"309\":1553990400000,\"310\":1553990400000,\"311\":1553990400000,\"312\":1553990400000,\"313\":1553990400000,\"314\":1553990400000,\"315\":1553990400000,\"316\":1553990400000,\"317\":1553990400000,\"318\":1553990400000,\"319\":1553990400000,\"320\":1553990400000,\"321\":1553990400000,\"322\":1553990400000,\"323\":1553990400000,\"324\":1553990400000,\"325\":1553990400000,\"326\":1553990400000,\"327\":1553990400000,\"328\":1553990400000,\"329\":1553990400000,\"330\":1553990400000,\"331\":1553990400000,\"332\":1553990400000,\"333\":1553990400000,\"334\":1553990400000,\"335\":1553990400000,\"336\":1553990400000,\"337\":1553990400000,\"338\":1553990400000,\"339\":1553990400000,\"340\":1553990400000,\"341\":1553990400000,\"342\":1553990400000,\"343\":1553990400000,\"344\":1553990400000,\"345\":1553990400000,\"346\":1553990400000,\"347\":1553990400000,\"348\":1553990400000,\"349\":1553990400000,\"350\":1553990400000,\"351\":1553990400000,\"352\":1553990400000,\"353\":1553990400000,\"354\":1553990400000,\"355\":1553990400000,\"356\":1553990400000,\"357\":1553990400000,\"358\":1553990400000,\"359\":1553990400000,\"360\":1553990400000,\"361\":1553990400000,\"362\":1553990400000,\"363\":1553990400000,\"364\":1553990400000,\"365\":1553990400000,\"366\":1553990400000,\"367\":1553990400000,\"368\":1553990400000,\"369\":1553990400000,\"370\":1553990400000,\"371\":1553990400000,\"372\":1553990400000,\"373\":1553990400000,\"374\":1553990400000,\"375\":1553990400000,\"376\":1553990400000,\"377\":1553990400000,\"378\":1553990400000,\"379\":1553990400000,\"380\":1553990400000,\"381\":1553990400000,\"382\":1553990400000,\"383\":1553990400000,\"384\":1553990400000,\"385\":1553990400000,\"386\":1553990400000,\"387\":1553990400000,\"388\":1553990400000,\"389\":1553990400000},\"frac_nonnull\":{\"0\":0.3414454188,\"1\":0.0120633745,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.3417422005,\"10\":0.012112022,\"11\":0.0121717169,\"12\":1.0,\"13\":0.341337541,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.3410503714,\"22\":0.0120583316,\"23\":1.0,\"24\":0.3412378737,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.3416985133,\"32\":1.0,\"33\":1.0,\"34\":0.0122834784,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.3415251534,\"41\":1.0,\"42\":0.0121157118,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0121012377,\"47\":0.3417754553,\"48\":1.0,\"49\":0.3423414093,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.3417497886,\"55\":0.0119759297,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0121233609,\"61\":1.0,\"62\":1.0,\"63\":0.0120393667,\"64\":0.3418045904,\"65\":0.3412757027,\"66\":0.3411733951,\"67\":0.012013913,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.3417141858,\"75\":0.0121033104,\"76\":1.0,\"77\":0.3416802591,\"78\":1.0,\"79\":1.0,\"80\":0.0119944494,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.341245275,\"86\":1.0,\"87\":0.0121620391,\"88\":1.0,\"89\":0.0119537167,\"90\":0.0120090509,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.3420500715,\"97\":0.0119553402,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.3412754418,\"108\":1.0,\"109\":0.0121361049,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.3415203779,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.3413659594,\"119\":0.3420567598,\"120\":0.0120890602,\"121\":1.0,\"122\":1.0,\"123\":0.3414821776,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.3412572712,\"131\":0.0120603252,\"132\":1.0,\"133\":1.0,\"134\":0.0119930743,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.0121509799,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.3421669008,\"144\":0.0121776205,\"145\":1.0,\"146\":0.3407862445,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.3422353864,\"151\":0.0119921329,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.3420444509,\"156\":0.3426577574,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.3413655779,\"163\":0.0120863742,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.0123042557,\"169\":0.0120327485,\"170\":0.0120794713,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.341591623,\"177\":1.0,\"178\":0.3410150384,\"179\":1.0,\"180\":0.3416833797,\"181\":0.3417776254,\"182\":0.0119579004,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.341450165,\"189\":1.0,\"190\":1.0,\"191\":0.3417795417,\"192\":0.0120039051,\"193\":0.0119118564,\"194\":1.0,\"195\":1.0,\"196\":0.3417252973,\"197\":0.0120029379,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.0120013712,\"202\":0.3419115244,\"203\":0.0121290277,\"204\":0.3411296299,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.0121114727,\"210\":1.0,\"211\":0.3414347895,\"212\":1.0,\"213\":0.0119028647,\"214\":0.0120889415,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.3416266495,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.3421428528,\"224\":1.0,\"225\":0.3413158705,\"226\":1.0,\"227\":0.0121376731,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.3420815843,\"234\":0.0120689167,\"235\":1.0,\"236\":0.0119948885,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.341671155,\"245\":0.0121447525,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.3418587814,\"254\":0.3414648599,\"255\":0.0122907294,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.012080334,\"260\":1.0,\"261\":1.0,\"262\":0.0121189103,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.3413592826,\"267\":0.0120052383,\"268\":0.341763697,\"269\":0.0119914353,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.3410489339,\"277\":0.3410149025,\"278\":0.012137345,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0121061854,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.3416780548,\"288\":0.341527935,\"289\":0.0120616334,\"290\":0.0120805747,\"291\":1.0,\"292\":0.01195384,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.0120428863,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.3413766812,\"305\":0.0120486782,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.3415639082,\"316\":0.0119967994,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.3414474955,\"327\":0.3423840374,\"328\":0.012149843,\"329\":1.0,\"330\":1.0,\"331\":0.3414991142,\"332\":0.3416747282,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0118677229,\"340\":0.3416798043,\"341\":0.012123867,\"342\":1.0,\"343\":0.0120357442,\"344\":1.0,\"345\":1.0,\"346\":0.011898822,\"347\":0.0121040149,\"348\":1.0,\"349\":1.0,\"350\":0.3415133127,\"351\":0.3409258463,\"352\":1.0,\"353\":0.0120952235,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.341616341,\"361\":1.0,\"362\":0.0119570063,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.0120245163,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.3408584375,\"375\":1.0,\"376\":0.0121298141,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.3421247776,\"385\":1.0,\"386\":0.3418275749,\"387\":0.0119725919,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":71.9895648623,\"1\":0.0446683407,\"2\":39054.8720311375,\"3\":21.287688176,\"4\":21.6411120374,\"5\":510.3773043545,\"6\":515.6277676676,\"7\":39162.4631271005,\"8\":21.015486339,\"9\":72.2492393407,\"10\":0.0436610458,\"11\":0.0441897147,\"12\":0.935360477,\"13\":71.8510712687,\"14\":20.6243823504,\"15\":463.2152784546,\"16\":518.885884768,\"17\":0.9393731719,\"18\":39293.6588162236,\"19\":39392.1634036496,\"20\":39083.8213509207,\"21\":71.9374135457,\"22\":0.04407515,\"23\":0.9389822217,\"24\":72.0338890916,\"25\":21.8819410896,\"26\":489.4837271211,\"27\":543.6257525141,\"28\":0.9379120597,\"29\":22.968077069,\"30\":39336.6999680041,\"31\":71.1307916289,\"32\":21.7035849899,\"33\":38933.3344453712,\"34\":0.0444002102,\"35\":541.4597691208,\"36\":0.9393716323,\"37\":21.9559976248,\"38\":537.117734767,\"39\":39046.3801917004,\"40\":71.3358269032,\"41\":552.5792846769,\"42\":0.0435491221,\"43\":39425.6273276425,\"44\":21.7975182843,\"45\":38800.9749980785,\"46\":0.0443504242,\"47\":71.5859256712,\"48\":0.9387836387,\"49\":72.1424955376,\"50\":21.7868218068,\"51\":519.6786079836,\"52\":39123.8639613022,\"53\":39760.3224866059,\"54\":72.6757866654,\"55\":0.0438502455,\"56\":0.938605241,\"57\":0.9374331205,\"58\":21.7201231407,\"59\":527.4271239111,\"60\":0.0422872021,\"61\":39542.5480022771,\"62\":530.6598270089,\"63\":0.0455135273,\"64\":72.6505158327,\"65\":72.4895152822,\"66\":71.9144382019,\"67\":0.042392569,\"68\":21.5648096282,\"69\":0.9377280156,\"70\":21.5696638911,\"71\":534.1919062484,\"72\":39732.2844987249,\"73\":39100.3595444122,\"74\":72.2038638748,\"75\":0.043938841,\"76\":0.9382548646,\"77\":72.5307243447,\"78\":0.9371074055,\"79\":536.1546018062,\"80\":0.0443183967,\"81\":21.2406972696,\"82\":538.625358981,\"83\":512.1248297187,\"84\":39275.7143131311,\"85\":71.8873924066,\"86\":0.9380418694,\"87\":0.044609324,\"88\":0.9376792688,\"89\":0.0454195287,\"90\":0.0429629427,\"91\":0.9367953449,\"92\":21.3299724144,\"93\":511.5107018444,\"94\":531.3395773537,\"95\":39566.3155366429,\"96\":71.95464943,\"97\":0.0437835046,\"98\":38968.1005441668,\"99\":21.7358166912,\"100\":0.9374187466,\"101\":39583.3168371683,\"102\":0.9367703737,\"103\":21.4286023948,\"104\":519.5436254882,\"105\":21.4398299703,\"106\":38965.8753011993,\"107\":71.964105174,\"108\":39245.2788597766,\"109\":0.0463036039,\"110\":0.939278732,\"111\":22.3868699522,\"112\":21.8433159884,\"113\":21.2829488664,\"114\":72.3160462164,\"115\":20.8928394831,\"116\":541.7967597305,\"117\":38756.8724635135,\"118\":72.6270814395,\"119\":72.7869378233,\"120\":0.0446395713,\"121\":530.4880095186,\"122\":0.9372763177,\"123\":71.3843944864,\"124\":522.0110465276,\"125\":21.1913008745,\"126\":524.9728701089,\"127\":39410.4825265877,\"128\":531.4536339861,\"129\":40122.3751207734,\"130\":71.8373775082,\"131\":0.0431546692,\"132\":0.936135223,\"133\":21.0860306744,\"134\":0.0445261599,\"135\":39021.1594202834,\"136\":504.3634612511,\"137\":39346.8440680485,\"138\":0.0436975685,\"139\":519.7879510542,\"140\":483.1472156051,\"141\":39192.2464010985,\"142\":39147.8698323518,\"143\":72.1216835186,\"144\":0.0444013259,\"145\":0.9371507915,\"146\":72.4268058626,\"147\":21.9930323789,\"148\":520.8598313389,\"149\":39022.535276854,\"150\":71.7543929752,\"151\":0.0441686678,\"152\":39189.2593681578,\"153\":0.93739011,\"154\":0.9376368445,\"155\":72.171926675,\"156\":72.4631095152,\"157\":38986.3248406487,\"158\":0.9366045668,\"159\":21.343515729,\"160\":509.4513524446,\"161\":39408.0561482539,\"162\":71.920606964,\"163\":0.0431133892,\"164\":506.5689010049,\"165\":0.9384174335,\"166\":21.7050586689,\"167\":530.68546044,\"168\":0.0455813635,\"169\":0.0438555523,\"170\":0.0426526625,\"171\":0.9375550986,\"172\":528.3137994123,\"173\":21.3066389297,\"174\":527.4770666134,\"175\":39152.7082721239,\"176\":72.2072512923,\"177\":20.7203159081,\"178\":73.2127504279,\"179\":0.9368786372,\"180\":72.2910343305,\"181\":72.385819992,\"182\":0.0441546402,\"183\":21.415898197,\"184\":0.9370013892,\"185\":21.3311377541,\"186\":517.7460797187,\"187\":39097.7172339724,\"188\":72.476487724,\"189\":39245.4413832676,\"190\":20.9427582555,\"191\":72.370986868,\"192\":0.0427713139,\"193\":0.0429629021,\"194\":0.9374292409,\"195\":21.2040316121,\"196\":72.0889145611,\"197\":0.0427767355,\"198\":522.796299343,\"199\":39570.6140171378,\"200\":521.0147783251,\"201\":0.0451734954,\"202\":71.3144071055,\"203\":0.0442757767,\"204\":71.907081262,\"205\":0.9374775256,\"206\":21.6808136602,\"207\":0.9350134432,\"208\":528.6122029392,\"209\":0.0456395276,\"210\":40267.7562184022,\"211\":71.923349825,\"212\":39362.0412105989,\"213\":0.0439842838,\"214\":0.0435623512,\"215\":0.9375049056,\"216\":0.936006057,\"217\":21.077814123,\"218\":500.3139017757,\"219\":72.0414800107,\"220\":39324.1169162308,\"221\":0.9386614427,\"222\":0.9371461201,\"223\":72.0791221462,\"224\":481.0458926715,\"225\":72.2602979936,\"226\":0.9363679317,\"227\":0.0406919492,\"228\":0.9370916543,\"229\":21.1297325107,\"230\":527.9666772968,\"231\":39271.0042574913,\"232\":21.2698533475,\"233\":72.2267132289,\"234\":0.0431069873,\"235\":38936.9818632088,\"236\":0.0434291135,\"237\":21.4917426858,\"238\":21.015762885,\"239\":0.938224595,\"240\":0.9384536983,\"241\":21.6921561417,\"242\":535.6119835367,\"243\":39143.023746322,\"244\":72.0256227158,\"245\":0.0442489237,\"246\":21.8656488855,\"247\":0.9368457699,\"248\":21.3045517702,\"249\":520.1262485762,\"250\":494.9224229043,\"251\":21.4318515861,\"252\":39323.1081034783,\"253\":72.9800954578,\"254\":72.0293590345,\"255\":0.0455005401,\"256\":0.9369625785,\"257\":503.9727890433,\"258\":508.755355214,\"259\":0.0431530591,\"260\":38636.7450683877,\"261\":21.3600041274,\"262\":0.0443478888,\"263\":0.9374130507,\"264\":516.2381198685,\"265\":39500.5378138114,\"266\":72.3131814611,\"267\":0.0441827145,\"268\":71.7738391501,\"269\":0.0436598572,\"270\":0.9370511838,\"271\":21.1645696199,\"272\":0.9376532777,\"273\":525.790781572,\"274\":38590.3867966512,\"275\":38706.0328423328,\"276\":71.9236190475,\"277\":72.0769224929,\"278\":0.0434715267,\"279\":39287.5382267444,\"280\":0.937812532,\"281\":0.9364167738,\"282\":0.0427303111,\"283\":21.1380316263,\"284\":503.6791650971,\"285\":488.2259252373,\"286\":39121.986673501,\"287\":72.0517709834,\"288\":72.0615830207,\"289\":0.0441332787,\"290\":0.043729583,\"291\":0.9377809915,\"292\":0.0429827952,\"293\":21.4934844545,\"294\":526.2784618453,\"295\":39020.6106384141,\"296\":0.9368661419,\"297\":21.419609218,\"298\":0.9378895379,\"299\":0.0437579944,\"300\":469.5823698635,\"301\":0.9369140357,\"302\":526.0694710394,\"303\":39059.999536179,\"304\":72.0099574533,\"305\":0.045375246,\"306\":0.937293281,\"307\":0.9363811498,\"308\":21.1854384279,\"309\":512.4995698913,\"310\":21.3206930184,\"311\":0.9385264952,\"312\":21.3860434907,\"313\":21.8183866937,\"314\":38781.3206155129,\"315\":71.3022374282,\"316\":0.0434695554,\"317\":39426.6362589608,\"318\":0.9386653883,\"319\":21.9085486736,\"320\":534.8296890615,\"321\":39235.9096219265,\"322\":21.0327288636,\"323\":520.1134177299,\"324\":518.7751193055,\"325\":39183.9968441951,\"326\":71.310585026,\"327\":73.4665338682,\"328\":0.0448476625,\"329\":0.9357275626,\"330\":22.0095124374,\"331\":71.9824105342,\"332\":72.9280264027,\"333\":0.9380489187,\"334\":39774.451937102,\"335\":519.7776291273,\"336\":21.3165494235,\"337\":532.7571149322,\"338\":39292.6178948526,\"339\":0.042375705,\"340\":72.2113022244,\"341\":0.0434252244,\"342\":0.937877742,\"343\":0.0445760644,\"344\":21.5427188833,\"345\":526.2397248886,\"346\":0.0424642822,\"347\":0.0439226492,\"348\":39174.0666612286,\"349\":21.0391177711,\"350\":72.4337616514,\"351\":72.8669114998,\"352\":39745.4607503399,\"353\":0.0429762732,\"354\":0.9385276931,\"355\":39206.6214282054,\"356\":21.4846107581,\"357\":0.9374900586,\"358\":533.9382817808,\"359\":39028.7855467911,\"360\":72.5028282728,\"361\":0.9363361429,\"362\":0.0447387572,\"363\":0.9363557041,\"364\":21.137388375,\"365\":0.936937677,\"366\":0.0449098447,\"367\":531.7981369378,\"368\":21.5810397548,\"369\":39333.7475204408,\"370\":0.9388681854,\"371\":22.2106450984,\"372\":540.5733833177,\"373\":39038.8938717157,\"374\":72.5348760711,\"375\":21.0868061547,\"376\":0.044361007,\"377\":0.9362249549,\"378\":21.3439651603,\"379\":524.805176825,\"380\":39630.5973461799,\"381\":0.937932206,\"382\":21.503523962,\"383\":524.9703511025,\"384\":72.2509478288,\"385\":39798.9284370467,\"386\":72.3917018418,\"387\":0.041604852,\"388\":0.9364907665,\"389\":505.6613940892},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":1317376,\"1\":1317376,\"2\":1314752,\"3\":1315087,\"4\":1315477,\"5\":1314574,\"6\":1315087,\"7\":1315087,\"8\":1314342,\"9\":1315635,\"10\":1315635,\"11\":1316166,\"12\":1315635,\"13\":1315683,\"14\":1315635,\"15\":1315635,\"16\":1314869,\"17\":1305611,\"18\":1315683,\"19\":1314574,\"20\":1315635,\"21\":1314278,\"22\":1314278,\"23\":1314278,\"24\":1315320,\"25\":1314278,\"26\":1314342,\"27\":1314278,\"28\":1316166,\"29\":1305611,\"30\":1314278,\"31\":1316728,\"32\":1315041,\"33\":1315927,\"34\":1316728,\"35\":1303259,\"36\":1316728,\"37\":1316728,\"38\":1316728,\"39\":1316728,\"40\":1316720,\"41\":1305611,\"42\":1316720,\"43\":1314342,\"44\":1316166,\"45\":1315531,\"46\":1315320,\"47\":1314322,\"48\":1316720,\"49\":1313192,\"50\":1316720,\"51\":1316720,\"52\":1316720,\"53\":1305611,\"54\":1317142,\"55\":1317142,\"56\":1317142,\"57\":1315320,\"58\":1317142,\"59\":1317142,\"60\":1314322,\"61\":1317142,\"62\":1316166,\"63\":1313192,\"64\":1316609,\"65\":1316106,\"66\":1315891,\"67\":1315891,\"68\":1314215,\"69\":1315891,\"70\":1315891,\"71\":1315891,\"72\":1315891,\"73\":1315676,\"74\":1315260,\"75\":1315260,\"76\":1315260,\"77\":1305870,\"78\":1313192,\"79\":1316106,\"80\":1316609,\"81\":1313192,\"82\":1316609,\"83\":1313192,\"84\":1313192,\"85\":1317460,\"86\":1314322,\"87\":1317460,\"88\":1313213,\"89\":1305870,\"90\":1314342,\"91\":1317460,\"92\":1317460,\"93\":1317460,\"94\":1315260,\"95\":1317460,\"96\":1314559,\"97\":1314559,\"98\":1316609,\"99\":1314322,\"100\":1314559,\"101\":1314926,\"102\":1305870,\"103\":1314559,\"104\":1314559,\"105\":1313213,\"106\":1314559,\"107\":1316485,\"108\":1315260,\"109\":1316485,\"110\":1316485,\"111\":1316485,\"112\":1303259,\"113\":1315320,\"114\":1313213,\"115\":1305870,\"116\":1316485,\"117\":1316485,\"118\":1315676,\"119\":1315156,\"120\":1315156,\"121\":1313213,\"122\":1315156,\"123\":1314215,\"124\":1315320,\"125\":1315156,\"126\":1315156,\"127\":1313901,\"128\":1314322,\"129\":1315156,\"130\":1315802,\"131\":1315802,\"132\":1315802,\"133\":1315802,\"134\":1315676,\"135\":1315320,\"136\":1315802,\"137\":1313213,\"138\":1314215,\"139\":1316371,\"140\":1305870,\"141\":1315802,\"142\":1314322,\"143\":1316267,\"144\":1316267,\"145\":1316267,\"146\":1316130,\"147\":1316267,\"148\":1316267,\"149\":1316267,\"150\":1316363,\"151\":1316363,\"152\":1305870,\"153\":1315676,\"154\":1314215,\"155\":1316823,\"156\":1315041,\"157\":1303259,\"158\":1316363,\"159\":1316363,\"160\":1316363,\"161\":1316363,\"162\":1315531,\"163\":1315531,\"164\":1315477,\"165\":1315531,\"166\":1315531,\"167\":1315531,\"168\":1316130,\"169\":1316823,\"170\":1315041,\"171\":1316823,\"172\":1315041,\"173\":1316823,\"174\":1316823,\"175\":1316823,\"176\":1316455,\"177\":1317376,\"178\":1313901,\"179\":1316130,\"180\":1313845,\"181\":1318208,\"182\":1318208,\"183\":1315676,\"184\":1318208,\"185\":1318208,\"186\":1318208,\"187\":1315041,\"188\":1305148,\"189\":1318208,\"190\":1316130,\"191\":1317238,\"192\":1317238,\"193\":1313901,\"194\":1317238,\"195\":1317238,\"196\":1314869,\"197\":1313845,\"198\":1317238,\"199\":1317238,\"200\":1314215,\"201\":1315683,\"202\":1315934,\"203\":1315934,\"204\":1314342,\"205\":1315934,\"206\":1315934,\"207\":1317376,\"208\":1315934,\"209\":1314869,\"210\":1315934,\"211\":1304498,\"212\":1316106,\"213\":1305148,\"214\":1304498,\"215\":1313845,\"216\":1304498,\"217\":1304498,\"218\":1304498,\"219\":1315477,\"220\":1304498,\"221\":1316609,\"222\":1314869,\"223\":1314752,\"224\":1316130,\"225\":1305934,\"226\":1305148,\"227\":1305934,\"228\":1305934,\"229\":1305934,\"230\":1305934,\"231\":1305934,\"232\":1313845,\"233\":1308071,\"234\":1308071,\"235\":1316130,\"236\":1315477,\"237\":1314869,\"238\":1305148,\"239\":1313901,\"240\":1308071,\"241\":1308071,\"242\":1308071,\"243\":1308071,\"244\":1316371,\"245\":1316371,\"246\":1316609,\"247\":1316371,\"248\":1316371,\"249\":1313845,\"250\":1305148,\"251\":1313901,\"252\":1305148,\"253\":1314926,\"254\":1316358,\"255\":1316358,\"256\":1316358,\"257\":1316899,\"258\":1312285,\"259\":1316106,\"260\":1315477,\"261\":1316358,\"262\":1316455,\"263\":1315477,\"264\":1316358,\"265\":1316358,\"266\":1316106,\"267\":1314926,\"268\":1315997,\"269\":1316106,\"270\":1316106,\"271\":1316106,\"272\":1316106,\"273\":1316106,\"274\":1316106,\"275\":1316371,\"276\":1316899,\"277\":1317092,\"278\":1317092,\"279\":1314869,\"280\":1316455,\"281\":1317092,\"282\":1313213,\"283\":1317092,\"284\":1317092,\"285\":1315683,\"286\":1317092,\"287\":1303259,\"288\":10509439,\"289\":10509439,\"290\":1315997,\"291\":10509439,\"292\":1316899,\"293\":10509439,\"294\":10509439,\"295\":10509439,\"296\":1314926,\"297\":1316455,\"298\":1315041,\"299\":1303259,\"300\":1317376,\"301\":1315997,\"302\":1316455,\"303\":1316455,\"304\":1315497,\"305\":1315497,\"306\":1315497,\"307\":1316899,\"308\":1315497,\"309\":1315497,\"310\":1314926,\"311\":1303259,\"312\":1315997,\"313\":1316106,\"314\":1315497,\"315\":1313517,\"316\":1313517,\"317\":1317376,\"318\":1313517,\"319\":1313517,\"320\":1313517,\"321\":1313517,\"322\":1316899,\"323\":1315997,\"324\":1315676,\"325\":1315997,\"326\":1314574,\"327\":1313268,\"328\":1313268,\"329\":1315683,\"330\":1315260,\"331\":1305611,\"332\":1315927,\"333\":1313268,\"334\":1316899,\"335\":1314926,\"336\":1313268,\"337\":1313268,\"338\":1313268,\"339\":1314574,\"340\":1314927,\"341\":1314927,\"342\":1314927,\"343\":1305611,\"344\":1314927,\"345\":1314927,\"346\":1314752,\"347\":1315927,\"348\":1314927,\"349\":1315683,\"350\":1313899,\"351\":1315726,\"352\":1314215,\"353\":1315726,\"354\":1315726,\"355\":1316166,\"356\":1315726,\"357\":1314752,\"358\":1315726,\"359\":1315726,\"360\":1312285,\"361\":1315927,\"362\":1312285,\"363\":1312285,\"364\":1312285,\"365\":1314574,\"366\":1313899,\"367\":1313901,\"368\":1314752,\"369\":1312285,\"370\":1313899,\"371\":1313899,\"372\":1313899,\"373\":1313899,\"374\":1313293,\"375\":1315927,\"376\":1313293,\"377\":1314342,\"378\":1314574,\"379\":1314752,\"380\":1313845,\"381\":1313293,\"382\":1313293,\"383\":1313293,\"384\":1316166,\"385\":1313293,\"386\":1315087,\"387\":1315087,\"388\":1315087,\"389\":1315927},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.5078025946,\"1\":0.0011413313,\"2\":341.7113670085,\"3\":0.0993865087,\"4\":0.0992165432,\"5\":3.6482823491,\"6\":3.6819062259,\"7\":340.5662258025,\"8\":0.0978734946,\"9\":0.5165980429,\"10\":0.0010252726,\"11\":0.001076742,\"12\":0.0003279858,\"13\":0.5093736795,\"14\":0.0977976059,\"15\":3.3486684119,\"16\":3.7762068493,\"17\":0.0003198087,\"18\":343.9099903496,\"19\":346.5032469207,\"20\":340.9009666045,\"21\":0.5113226874,\"22\":0.0010710321,\"23\":0.0002974482,\"24\":0.5112276206,\"25\":0.0990857138,\"26\":3.555630337,\"27\":3.9804215717,\"28\":0.0003276592,\"29\":0.1098706165,\"30\":349.1287591665,\"31\":0.5045282547,\"32\":0.0985174692,\"33\":334.009823652,\"34\":0.0010692738,\"35\":3.9738245383,\"36\":0.0003036783,\"37\":0.1013110324,\"38\":3.9949551069,\"39\":337.7244350251,\"40\":0.5043908929,\"41\":4.0741524175,\"42\":0.0011010458,\"43\":344.8299486086,\"44\":0.0996086636,\"45\":335.6729769066,\"46\":0.0011006621,\"47\":0.5095326351,\"48\":0.0003192918,\"49\":0.5096688343,\"50\":0.0984763306,\"51\":3.8137303489,\"52\":337.5560616979,\"53\":347.6052081072,\"54\":0.519469281,\"55\":0.0010677775,\"56\":0.0003015978,\"57\":0.0003085286,\"58\":0.097646666,\"59\":3.8643948317,\"60\":0.0009849507,\"61\":345.8236531893,\"62\":3.8483413085,\"63\":0.0010969537,\"64\":0.5151551109,\"65\":0.5113070185,\"66\":0.5071950355,\"67\":0.001001393,\"68\":0.0995015421,\"69\":0.0002986113,\"70\":0.0995206462,\"71\":3.8997793594,\"72\":344.0144206468,\"73\":333.816805921,\"74\":0.5070438579,\"75\":0.0010798206,\"76\":0.0003242034,\"77\":0.5175584926,\"78\":0.0003169315,\"79\":3.8832837807,\"80\":0.0011042236,\"81\":0.0955291709,\"82\":3.9589874245,\"83\":3.6306086613,\"84\":341.3582504114,\"85\":0.5088698272,\"86\":0.0002962542,\"87\":0.0010803518,\"88\":0.0003028664,\"89\":0.0011448462,\"90\":0.0010570535,\"91\":0.0003076503,\"92\":0.1001172721,\"93\":3.700430966,\"94\":3.8582710839,\"95\":347.8019318444,\"96\":0.5096270365,\"97\":0.0010658741,\"98\":335.1669073702,\"99\":0.0994724356,\"100\":0.0003042306,\"101\":346.8788853147,\"102\":0.0003140057,\"103\":0.0985044058,\"104\":3.7655484875,\"105\":0.0969567275,\"106\":336.9089640287,\"107\":0.510714661,\"108\":341.2331275113,\"109\":0.0011498071,\"110\":0.0003045954,\"111\":0.1061816567,\"112\":0.1008003629,\"113\":0.0974595106,\"114\":0.512798008,\"115\":0.0969705893,\"116\":3.9856650008,\"117\":335.5286660461,\"118\":0.5153173918,\"119\":0.5122847672,\"120\":0.001065288,\"121\":3.8735609592,\"122\":0.0003147454,\"123\":0.5053074679,\"124\":3.7817160038,\"125\":0.0978534306,\"126\":3.7553783494,\"127\":346.422063847,\"128\":3.8440016789,\"129\":349.8029916931,\"130\":0.509251431,\"131\":0.001061554,\"132\":0.0003310145,\"133\":0.0991520396,\"134\":0.0011006314,\"135\":336.8816813273,\"136\":3.6493616991,\"137\":342.7123269057,\"138\":0.0010419952,\"139\":3.7691208456,\"140\":3.4948843789,\"141\":346.2079724254,\"142\":345.2591794476,\"143\":0.5117213519,\"144\":0.0010927304,\"145\":0.0003146688,\"146\":0.512222103,\"147\":0.1029502442,\"148\":3.7671742386,\"149\":344.7065807115,\"150\":0.5027569668,\"151\":0.001060054,\"152\":343.4553896248,\"153\":0.0003233158,\"154\":0.0003299682,\"155\":0.5119220761,\"156\":0.5124336729,\"157\":337.1192988453,\"158\":0.0003211093,\"159\":0.0967458737,\"160\":3.6752742429,\"161\":337.5543592462,\"162\":0.5056133198,\"163\":0.0010739307,\"164\":3.6310108763,\"165\":0.0003085738,\"166\":0.1003822641,\"167\":3.8363435922,\"168\":0.0010723967,\"169\":0.0010505416,\"170\":0.0010403571,\"171\":0.0002883445,\"172\":3.7907236865,\"173\":0.097408938,\"174\":3.7961389477,\"175\":338.2660128623,\"176\":0.5101220335,\"177\":0.0985975385,\"178\":0.5147199077,\"179\":0.0003249967,\"180\":0.5109337779,\"181\":0.5107992413,\"182\":0.0010845276,\"183\":0.1007423101,\"184\":0.0003391012,\"185\":0.0978287761,\"186\":3.6999393071,\"187\":336.685858241,\"188\":0.5152551399,\"189\":340.0124157053,\"190\":0.0977642693,\"191\":0.5097189786,\"192\":0.0010484517,\"193\":0.001014133,\"194\":0.0003068576,\"195\":0.0983864361,\"196\":0.5092144281,\"197\":0.0010398584,\"198\":3.7409925874,\"199\":345.294057497,\"200\":3.8162538876,\"201\":0.0011290889,\"202\":0.5031744315,\"203\":0.001036165,\"204\":0.5118420061,\"205\":0.0003316496,\"206\":0.1009128083,\"207\":0.0003310667,\"208\":3.8235403101,\"209\":0.0011375741,\"210\":354.4685977119,\"211\":0.5083580923,\"212\":343.8455956624,\"213\":0.0010920978,\"214\":0.0010690339,\"215\":0.0003081745,\"216\":0.0003262524,\"217\":0.0970761705,\"218\":3.604249086,\"219\":0.5131121827,\"220\":345.7725033554,\"221\":0.0002986809,\"222\":0.000330729,\"223\":0.5098829144,\"224\":3.421479895,\"225\":0.5185708035,\"226\":0.0003227474,\"227\":0.0009687767,\"228\":0.0003099833,\"229\":0.099100586,\"230\":3.8690877509,\"231\":351.4533701368,\"232\":0.098889746,\"233\":0.5110579189,\"234\":0.001021945,\"235\":338.6774944632,\"236\":0.0010749551,\"237\":0.0993222134,\"238\":0.0983049649,\"239\":0.0002855095,\"240\":0.0003014882,\"241\":0.1002004312,\"242\":3.9017521217,\"243\":349.2842863941,\"244\":0.5107609149,\"245\":0.0010479061,\"246\":0.0985768416,\"247\":0.0003437423,\"248\":0.0988611562,\"249\":3.749859603,\"250\":3.5501638759,\"251\":0.0974662065,\"252\":339.773977399,\"253\":0.5143507242,\"254\":0.5100986231,\"255\":0.0010573423,\"256\":0.0003212013,\"257\":3.608650601,\"258\":3.6439857337,\"259\":0.0010266417,\"260\":327.0260540277,\"261\":0.0982761865,\"262\":0.0010660667,\"263\":0.0003174128,\"264\":3.7330925979,\"265\":348.1311237871,\"266\":0.5147381535,\"267\":0.0010902994,\"268\":0.5063790519,\"269\":0.0010431578,\"270\":0.0003188292,\"271\":0.0983141603,\"272\":0.000359147,\"273\":3.8320530951,\"274\":332.6905377824,\"275\":338.7123517788,\"276\":0.513172348,\"277\":0.5087175211,\"278\":0.0010782917,\"279\":345.6527071496,\"280\":0.0003093088,\"281\":0.0003114634,\"282\":0.0010537209,\"283\":0.0988747224,\"284\":3.5997989977,\"285\":3.5506959391,\"286\":340.022907399,\"287\":0.5197456497,\"288\":0.1803625684,\"289\":0.000380464,\"290\":0.0010882749,\"291\":0.000113885,\"292\":0.0010095739,\"293\":0.0349144698,\"294\":1.352325501,\"295\":120.8634944723,\"296\":0.0003386809,\"297\":0.0983530106,\"298\":0.0003095584,\"299\":0.0010896816,\"300\":3.3743172487,\"301\":0.0003286516,\"302\":3.8400439664,\"303\":340.8002875764,\"304\":0.5067698464,\"305\":0.0011267607,\"306\":0.0003202341,\"307\":0.0003098333,\"308\":0.0969474775,\"309\":3.7107625175,\"310\":0.0967610503,\"311\":0.0003103105,\"312\":0.0974894433,\"313\":0.0983286605,\"314\":338.2639918278,\"315\":0.5028548743,\"316\":0.0010464675,\"317\":348.1121845822,\"318\":0.0003306237,\"319\":0.1017360589,\"320\":3.9247540125,\"321\":340.803094553,\"322\":0.099043376,\"323\":3.7680116782,\"324\":3.7268574019,\"325\":340.9927068951,\"326\":0.5033029251,\"327\":0.5203059834,\"328\":0.0010843877,\"329\":0.000338327,\"330\":0.1028325308,\"331\":0.5144752197,\"332\":0.5141473846,\"333\":0.0003112855,\"334\":348.9316308957,\"335\":3.7510587025,\"336\":0.0988479155,\"337\":3.8602441208,\"338\":344.5439410086,\"339\":0.001041537,\"340\":0.509642651,\"341\":0.0010635899,\"342\":0.0003064662,\"343\":0.0011373978,\"344\":0.1000763363,\"345\":3.7817548221,\"346\":0.0010444302,\"347\":0.0010576352,\"348\":337.3047842855,\"349\":0.0968311414,\"350\":0.5135952228,\"351\":0.514009146,\"352\":352.0840980289,\"353\":0.0010353876,\"354\":0.0002939338,\"355\":343.7594057297,\"356\":0.1000429382,\"357\":0.000311911,\"358\":3.8922385483,\"359\":338.8849372676,\"360\":0.5138112988,\"361\":0.0003240345,\"362\":0.0010956483,\"363\":0.0003091286,\"364\":0.0963254066,\"365\":0.0003010437,\"366\":0.0011051656,\"367\":3.8490884193,\"368\":0.0984285529,\"369\":340.5257210998,\"370\":0.0002897635,\"371\":0.1034192892,\"372\":3.9353367469,\"373\":342.6108270976,\"374\":0.5139955955,\"375\":0.0974636266,\"376\":0.0010962086,\"377\":0.0003018143,\"378\":0.1005725776,\"379\":3.8213950654,\"380\":348.4920657893,\"381\":0.0002970759,\"382\":0.0982400684,\"383\":3.8215545915,\"384\":0.5108724836,\"385\":353.0787331977,\"386\":0.5116084335,\"387\":0.0010229026,\"388\":0.0003201874,\"389\":3.6312819972},\"start_time\":{\"0\":1553817600000,\"1\":1553817600000,\"2\":1553817600000,\"3\":1553817600000,\"4\":1553817600000,\"5\":1553817600000,\"6\":1553817600000,\"7\":1553817600000,\"8\":1553817600000,\"9\":1553817600000,\"10\":1553817600000,\"11\":1553817600000,\"12\":1553817600000,\"13\":1553817600000,\"14\":1553817600000,\"15\":1553817600000,\"16\":1553817600000,\"17\":1553817600000,\"18\":1553817600000,\"19\":1553817600000,\"20\":1553817600000,\"21\":1553817600000,\"22\":1553817600000,\"23\":1553817600000,\"24\":1553817600000,\"25\":1553817600000,\"26\":1553817600000,\"27\":1553817600000,\"28\":1553817600000,\"29\":1553817600000,\"30\":1553817600000,\"31\":1553817600000,\"32\":1553817600000,\"33\":1553817600000,\"34\":1553817600000,\"35\":1553817600000,\"36\":1553817600000,\"37\":1553817600000,\"38\":1553817600000,\"39\":1553817600000,\"40\":1553817600000,\"41\":1553817600000,\"42\":1553817600000,\"43\":1553817600000,\"44\":1553817600000,\"45\":1553817600000,\"46\":1553817600000,\"47\":1553817600000,\"48\":1553817600000,\"49\":1553817600000,\"50\":1553817600000,\"51\":1553817600000,\"52\":1553817600000,\"53\":1553817600000,\"54\":1553817600000,\"55\":1553817600000,\"56\":1553817600000,\"57\":1553817600000,\"58\":1553817600000,\"59\":1553817600000,\"60\":1553817600000,\"61\":1553817600000,\"62\":1553817600000,\"63\":1553817600000,\"64\":1553817600000,\"65\":1553817600000,\"66\":1553817600000,\"67\":1553817600000,\"68\":1553817600000,\"69\":1553817600000,\"70\":1553817600000,\"71\":1553817600000,\"72\":1553817600000,\"73\":1553817600000,\"74\":1553817600000,\"75\":1553817600000,\"76\":1553817600000,\"77\":1553817600000,\"78\":1553817600000,\"79\":1553817600000,\"80\":1553817600000,\"81\":1553817600000,\"82\":1553817600000,\"83\":1553817600000,\"84\":1553817600000,\"85\":1553817600000,\"86\":1553817600000,\"87\":1553817600000,\"88\":1553817600000,\"89\":1553817600000,\"90\":1553817600000,\"91\":1553817600000,\"92\":1553817600000,\"93\":1553817600000,\"94\":1553817600000,\"95\":1553817600000,\"96\":1553817600000,\"97\":1553817600000,\"98\":1553817600000,\"99\":1553817600000,\"100\":1553817600000,\"101\":1553817600000,\"102\":1553817600000,\"103\":1553817600000,\"104\":1553817600000,\"105\":1553817600000,\"106\":1553817600000,\"107\":1553817600000,\"108\":1553817600000,\"109\":1553817600000,\"110\":1553817600000,\"111\":1553817600000,\"112\":1553817600000,\"113\":1553817600000,\"114\":1553817600000,\"115\":1553817600000,\"116\":1553817600000,\"117\":1553817600000,\"118\":1553817600000,\"119\":1553817600000,\"120\":1553817600000,\"121\":1553817600000,\"122\":1553817600000,\"123\":1553817600000,\"124\":1553817600000,\"125\":1553817600000,\"126\":1553817600000,\"127\":1553817600000,\"128\":1553817600000,\"129\":1553817600000,\"130\":1553817600000,\"131\":1553817600000,\"132\":1553817600000,\"133\":1553817600000,\"134\":1553817600000,\"135\":1553817600000,\"136\":1553817600000,\"137\":1553817600000,\"138\":1553817600000,\"139\":1553817600000,\"140\":1553817600000,\"141\":1553817600000,\"142\":1553817600000,\"143\":1553817600000,\"144\":1553817600000,\"145\":1553817600000,\"146\":1553817600000,\"147\":1553817600000,\"148\":1553817600000,\"149\":1553817600000,\"150\":1553817600000,\"151\":1553817600000,\"152\":1553817600000,\"153\":1553817600000,\"154\":1553817600000,\"155\":1553817600000,\"156\":1553817600000,\"157\":1553817600000,\"158\":1553817600000,\"159\":1553817600000,\"160\":1553817600000,\"161\":1553817600000,\"162\":1553817600000,\"163\":1553817600000,\"164\":1553817600000,\"165\":1553817600000,\"166\":1553817600000,\"167\":1553817600000,\"168\":1553817600000,\"169\":1553817600000,\"170\":1553817600000,\"171\":1553817600000,\"172\":1553817600000,\"173\":1553817600000,\"174\":1553817600000,\"175\":1553817600000,\"176\":1553817600000,\"177\":1553817600000,\"178\":1553817600000,\"179\":1553817600000,\"180\":1553817600000,\"181\":1553817600000,\"182\":1553817600000,\"183\":1553817600000,\"184\":1553817600000,\"185\":1553817600000,\"186\":1553817600000,\"187\":1553817600000,\"188\":1553817600000,\"189\":1553817600000,\"190\":1553817600000,\"191\":1553817600000,\"192\":1553817600000,\"193\":1553817600000,\"194\":1553817600000,\"195\":1553817600000,\"196\":1553817600000,\"197\":1553817600000,\"198\":1553817600000,\"199\":1553817600000,\"200\":1553817600000,\"201\":1553817600000,\"202\":1553817600000,\"203\":1553817600000,\"204\":1553817600000,\"205\":1553817600000,\"206\":1553817600000,\"207\":1553817600000,\"208\":1553817600000,\"209\":1553817600000,\"210\":1553817600000,\"211\":1553817600000,\"212\":1553817600000,\"213\":1553817600000,\"214\":1553817600000,\"215\":1553817600000,\"216\":1553817600000,\"217\":1553817600000,\"218\":1553817600000,\"219\":1553817600000,\"220\":1553817600000,\"221\":1553817600000,\"222\":1553817600000,\"223\":1553817600000,\"224\":1553817600000,\"225\":1553817600000,\"226\":1553817600000,\"227\":1553817600000,\"228\":1553817600000,\"229\":1553817600000,\"230\":1553817600000,\"231\":1553817600000,\"232\":1553817600000,\"233\":1553817600000,\"234\":1553817600000,\"235\":1553817600000,\"236\":1553817600000,\"237\":1553817600000,\"238\":1553817600000,\"239\":1553817600000,\"240\":1553817600000,\"241\":1553817600000,\"242\":1553817600000,\"243\":1553817600000,\"244\":1553817600000,\"245\":1553817600000,\"246\":1553817600000,\"247\":1553817600000,\"248\":1553817600000,\"249\":1553817600000,\"250\":1553817600000,\"251\":1553817600000,\"252\":1553817600000,\"253\":1553817600000,\"254\":1553817600000,\"255\":1553817600000,\"256\":1553817600000,\"257\":1553817600000,\"258\":1553817600000,\"259\":1553817600000,\"260\":1553817600000,\"261\":1553817600000,\"262\":1553817600000,\"263\":1553817600000,\"264\":1553817600000,\"265\":1553817600000,\"266\":1553817600000,\"267\":1553817600000,\"268\":1553817600000,\"269\":1553817600000,\"270\":1553817600000,\"271\":1553817600000,\"272\":1553817600000,\"273\":1553817600000,\"274\":1553817600000,\"275\":1553817600000,\"276\":1553817600000,\"277\":1553817600000,\"278\":1553817600000,\"279\":1553817600000,\"280\":1553817600000,\"281\":1553817600000,\"282\":1553817600000,\"283\":1553817600000,\"284\":1553817600000,\"285\":1553817600000,\"286\":1553817600000,\"287\":1553817600000,\"288\":1553817600000,\"289\":1553817600000,\"290\":1553817600000,\"291\":1553817600000,\"292\":1553817600000,\"293\":1553817600000,\"294\":1553817600000,\"295\":1553817600000,\"296\":1553817600000,\"297\":1553817600000,\"298\":1553817600000,\"299\":1553817600000,\"300\":1553817600000,\"301\":1553817600000,\"302\":1553817600000,\"303\":1553817600000,\"304\":1553817600000,\"305\":1553817600000,\"306\":1553817600000,\"307\":1553817600000,\"308\":1553817600000,\"309\":1553817600000,\"310\":1553817600000,\"311\":1553817600000,\"312\":1553817600000,\"313\":1553817600000,\"314\":1553817600000,\"315\":1553817600000,\"316\":1553817600000,\"317\":1553817600000,\"318\":1553817600000,\"319\":1553817600000,\"320\":1553817600000,\"321\":1553817600000,\"322\":1553817600000,\"323\":1553817600000,\"324\":1553817600000,\"325\":1553817600000,\"326\":1553817600000,\"327\":1553817600000,\"328\":1553817600000,\"329\":1553817600000,\"330\":1553817600000,\"331\":1553817600000,\"332\":1553817600000,\"333\":1553817600000,\"334\":1553817600000,\"335\":1553817600000,\"336\":1553817600000,\"337\":1553817600000,\"338\":1553817600000,\"339\":1553817600000,\"340\":1553817600000,\"341\":1553817600000,\"342\":1553817600000,\"343\":1553817600000,\"344\":1553817600000,\"345\":1553817600000,\"346\":1553817600000,\"347\":1553817600000,\"348\":1553817600000,\"349\":1553817600000,\"350\":1553817600000,\"351\":1553817600000,\"352\":1553817600000,\"353\":1553817600000,\"354\":1553817600000,\"355\":1553817600000,\"356\":1553817600000,\"357\":1553817600000,\"358\":1553817600000,\"359\":1553817600000,\"360\":1553817600000,\"361\":1553817600000,\"362\":1553817600000,\"363\":1553817600000,\"364\":1553817600000,\"365\":1553817600000,\"366\":1553817600000,\"367\":1553817600000,\"368\":1553817600000,\"369\":1553817600000,\"370\":1553817600000,\"371\":1553817600000,\"372\":1553817600000,\"373\":1553817600000,\"374\":1553817600000,\"375\":1553817600000,\"376\":1553817600000,\"377\":1553817600000,\"378\":1553817600000,\"379\":1553817600000,\"380\":1553817600000,\"381\":1553817600000,\"382\":1553817600000,\"383\":1553817600000,\"384\":1553817600000,\"385\":1553817600000,\"386\":1553817600000,\"387\":1553817600000,\"388\":1553817600000,\"389\":1553817600000}}"},"description":null}],[1556078905215,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1554076800000,\"1\":1554076800000,\"2\":1554076800000,\"3\":1554076800000,\"4\":1554076800000,\"5\":1554076800000,\"6\":1554076800000,\"7\":1554076800000,\"8\":1554076800000,\"9\":1554076800000,\"10\":1554076800000,\"11\":1554076800000,\"12\":1554076800000,\"13\":1554076800000,\"14\":1554076800000,\"15\":1554076800000,\"16\":1554076800000,\"17\":1554076800000,\"18\":1554076800000,\"19\":1554076800000,\"20\":1554076800000,\"21\":1554076800000,\"22\":1554076800000,\"23\":1554076800000,\"24\":1554076800000,\"25\":1554076800000,\"26\":1554076800000,\"27\":1554076800000,\"28\":1554076800000,\"29\":1554076800000,\"30\":1554076800000,\"31\":1554076800000,\"32\":1554076800000,\"33\":1554076800000,\"34\":1554076800000,\"35\":1554076800000,\"36\":1554076800000,\"37\":1554076800000,\"38\":1554076800000,\"39\":1554076800000,\"40\":1554076800000,\"41\":1554076800000,\"42\":1554076800000,\"43\":1554076800000,\"44\":1554076800000,\"45\":1554076800000,\"46\":1554076800000,\"47\":1554076800000,\"48\":1554076800000,\"49\":1554076800000,\"50\":1554076800000,\"51\":1554076800000,\"52\":1554076800000,\"53\":1554076800000,\"54\":1554076800000,\"55\":1554076800000,\"56\":1554076800000,\"57\":1554076800000,\"58\":1554076800000,\"59\":1554076800000,\"60\":1554076800000,\"61\":1554076800000,\"62\":1554076800000,\"63\":1554076800000,\"64\":1554076800000,\"65\":1554076800000,\"66\":1554076800000,\"67\":1554076800000,\"68\":1554076800000,\"69\":1554076800000,\"70\":1554076800000,\"71\":1554076800000,\"72\":1554076800000,\"73\":1554076800000,\"74\":1554076800000,\"75\":1554076800000,\"76\":1554076800000,\"77\":1554076800000,\"78\":1554076800000,\"79\":1554076800000,\"80\":1554076800000,\"81\":1554076800000,\"82\":1554076800000,\"83\":1554076800000,\"84\":1554076800000,\"85\":1554076800000,\"86\":1554076800000,\"87\":1554076800000,\"88\":1554076800000,\"89\":1554076800000,\"90\":1554076800000,\"91\":1554076800000,\"92\":1554076800000,\"93\":1554076800000,\"94\":1554076800000,\"95\":1554076800000,\"96\":1554076800000,\"97\":1554076800000,\"98\":1554076800000,\"99\":1554076800000,\"100\":1554076800000,\"101\":1554076800000,\"102\":1554076800000,\"103\":1554076800000,\"104\":1554076800000,\"105\":1554076800000,\"106\":1554076800000,\"107\":1554076800000,\"108\":1554076800000,\"109\":1554076800000,\"110\":1554076800000,\"111\":1554076800000,\"112\":1554076800000,\"113\":1554076800000,\"114\":1554076800000,\"115\":1554076800000,\"116\":1554076800000,\"117\":1554076800000,\"118\":1554076800000,\"119\":1554076800000,\"120\":1554076800000,\"121\":1554076800000,\"122\":1554076800000,\"123\":1554076800000,\"124\":1554076800000,\"125\":1554076800000,\"126\":1554076800000,\"127\":1554076800000,\"128\":1554076800000,\"129\":1554076800000,\"130\":1554076800000,\"131\":1554076800000,\"132\":1554076800000,\"133\":1554076800000,\"134\":1554076800000,\"135\":1554076800000,\"136\":1554076800000,\"137\":1554076800000,\"138\":1554076800000,\"139\":1554076800000,\"140\":1554076800000,\"141\":1554076800000,\"142\":1554076800000,\"143\":1554076800000,\"144\":1554076800000,\"145\":1554076800000,\"146\":1554076800000,\"147\":1554076800000,\"148\":1554076800000,\"149\":1554076800000,\"150\":1554076800000,\"151\":1554076800000,\"152\":1554076800000,\"153\":1554076800000,\"154\":1554076800000,\"155\":1554076800000,\"156\":1554076800000,\"157\":1554076800000,\"158\":1554076800000,\"159\":1554076800000,\"160\":1554076800000,\"161\":1554076800000,\"162\":1554076800000,\"163\":1554076800000,\"164\":1554076800000,\"165\":1554076800000,\"166\":1554076800000,\"167\":1554076800000,\"168\":1554076800000,\"169\":1554076800000,\"170\":1554076800000,\"171\":1554076800000,\"172\":1554076800000,\"173\":1554076800000,\"174\":1554076800000,\"175\":1554076800000,\"176\":1554076800000,\"177\":1554076800000,\"178\":1554076800000,\"179\":1554076800000,\"180\":1554076800000,\"181\":1554076800000,\"182\":1554076800000,\"183\":1554076800000,\"184\":1554076800000,\"185\":1554076800000,\"186\":1554076800000,\"187\":1554076800000,\"188\":1554076800000,\"189\":1554076800000,\"190\":1554076800000,\"191\":1554076800000,\"192\":1554076800000,\"193\":1554076800000,\"194\":1554076800000,\"195\":1554076800000,\"196\":1554076800000,\"197\":1554076800000,\"198\":1554076800000,\"199\":1554076800000,\"200\":1554076800000,\"201\":1554076800000,\"202\":1554076800000,\"203\":1554076800000,\"204\":1554076800000,\"205\":1554076800000,\"206\":1554076800000,\"207\":1554076800000,\"208\":1554076800000,\"209\":1554076800000,\"210\":1554076800000,\"211\":1554076800000,\"212\":1554076800000,\"213\":1554076800000,\"214\":1554076800000,\"215\":1554076800000,\"216\":1554076800000,\"217\":1554076800000,\"218\":1554076800000,\"219\":1554076800000,\"220\":1554076800000,\"221\":1554076800000,\"222\":1554076800000,\"223\":1554076800000,\"224\":1554076800000,\"225\":1554076800000,\"226\":1554076800000,\"227\":1554076800000,\"228\":1554076800000,\"229\":1554076800000,\"230\":1554076800000,\"231\":1554076800000,\"232\":1554076800000,\"233\":1554076800000,\"234\":1554076800000,\"235\":1554076800000,\"236\":1554076800000,\"237\":1554076800000,\"238\":1554076800000,\"239\":1554076800000,\"240\":1554076800000,\"241\":1554076800000,\"242\":1554076800000,\"243\":1554076800000,\"244\":1554076800000,\"245\":1554076800000,\"246\":1554076800000,\"247\":1554076800000,\"248\":1554076800000,\"249\":1554076800000,\"250\":1554076800000,\"251\":1554076800000,\"252\":1554076800000,\"253\":1554076800000,\"254\":1554076800000,\"255\":1554076800000,\"256\":1554076800000,\"257\":1554076800000,\"258\":1554076800000,\"259\":1554076800000,\"260\":1554076800000,\"261\":1554076800000,\"262\":1554076800000,\"263\":1554076800000,\"264\":1554076800000,\"265\":1554076800000,\"266\":1554076800000,\"267\":1554076800000,\"268\":1554076800000,\"269\":1554076800000,\"270\":1554076800000,\"271\":1554076800000,\"272\":1554076800000,\"273\":1554076800000,\"274\":1554076800000,\"275\":1554076800000,\"276\":1554076800000,\"277\":1554076800000,\"278\":1554076800000,\"279\":1554076800000,\"280\":1554076800000,\"281\":1554076800000,\"282\":1554076800000,\"283\":1554076800000,\"284\":1554076800000,\"285\":1554076800000,\"286\":1554076800000,\"287\":1554076800000,\"288\":1554076800000,\"289\":1554076800000,\"290\":1554076800000,\"291\":1554076800000,\"292\":1554076800000,\"293\":1554076800000,\"294\":1554076800000,\"295\":1554076800000,\"296\":1554076800000,\"297\":1554076800000,\"298\":1554076800000,\"299\":1554076800000,\"300\":1554076800000,\"301\":1554076800000,\"302\":1554076800000,\"303\":1554076800000,\"304\":1554076800000,\"305\":1554076800000,\"306\":1554076800000,\"307\":1554076800000,\"308\":1554076800000,\"309\":1554076800000,\"310\":1554076800000,\"311\":1554076800000,\"312\":1554076800000,\"313\":1554076800000,\"314\":1554076800000,\"315\":1554076800000,\"316\":1554076800000,\"317\":1554076800000,\"318\":1554076800000,\"319\":1554076800000,\"320\":1554076800000,\"321\":1554076800000,\"322\":1554076800000,\"323\":1554076800000,\"324\":1554076800000,\"325\":1554076800000,\"326\":1554076800000,\"327\":1554076800000,\"328\":1554076800000,\"329\":1554076800000,\"330\":1554076800000,\"331\":1554076800000,\"332\":1554076800000,\"333\":1554076800000,\"334\":1554076800000,\"335\":1554076800000,\"336\":1554076800000,\"337\":1554076800000,\"338\":1554076800000,\"339\":1554076800000,\"340\":1554076800000,\"341\":1554076800000,\"342\":1554076800000,\"343\":1554076800000,\"344\":1554076800000,\"345\":1554076800000,\"346\":1554076800000,\"347\":1554076800000,\"348\":1554076800000,\"349\":1554076800000,\"350\":1554076800000,\"351\":1554076800000,\"352\":1554076800000,\"353\":1554076800000,\"354\":1554076800000,\"355\":1554076800000,\"356\":1554076800000,\"357\":1554076800000,\"358\":1554076800000,\"359\":1554076800000,\"360\":1554076800000,\"361\":1554076800000,\"362\":1554076800000,\"363\":1554076800000,\"364\":1554076800000,\"365\":1554076800000,\"366\":1554076800000,\"367\":1554076800000,\"368\":1554076800000,\"369\":1554076800000,\"370\":1554076800000,\"371\":1554076800000,\"372\":1554076800000,\"373\":1554076800000,\"374\":1554076800000,\"375\":1554076800000,\"376\":1554076800000,\"377\":1554076800000,\"378\":1554076800000,\"379\":1554076800000,\"380\":1554076800000,\"381\":1554076800000,\"382\":1554076800000,\"383\":1554076800000,\"384\":1554076800000,\"385\":1554076800000,\"386\":1554076800000,\"387\":1554076800000,\"388\":1554076800000,\"389\":1554076800000},\"frac_nonnull\":{\"0\":0.3965254662,\"1\":0.0110392629,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.3966942595,\"10\":0.0110808226,\"11\":0.011110931,\"12\":1.0,\"13\":0.3967149997,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.3962959081,\"22\":0.0110270775,\"23\":1.0,\"24\":0.3967065039,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.3971961986,\"32\":1.0,\"33\":1.0,\"34\":0.0112207386,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.3964792055,\"41\":1.0,\"42\":0.0111055084,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0110431769,\"47\":0.3968429856,\"48\":1.0,\"49\":0.3970991089,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.396954262,\"55\":0.0109315323,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0110917377,\"61\":1.0,\"62\":1.0,\"63\":0.0109982033,\"64\":0.3971012007,\"65\":0.3963939929,\"66\":0.3965355467,\"67\":0.0110007843,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.3968373458,\"75\":0.0110748983,\"76\":1.0,\"77\":0.3969614625,\"78\":1.0,\"79\":1.0,\"80\":0.0109682289,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.3964361454,\"86\":1.0,\"87\":0.0110981636,\"88\":1.0,\"89\":0.0109110439,\"90\":0.0109879559,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.3968422803,\"97\":0.0109197041,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.3967094458,\"108\":1.0,\"109\":0.0110873262,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.3959503022,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.396314562,\"119\":0.3968879144,\"120\":0.0110493167,\"121\":1.0,\"122\":1.0,\"123\":0.3964918807,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.3959898886,\"131\":0.011021355,\"132\":1.0,\"133\":1.0,\"134\":0.0109532767,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.0110748899,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.3967734949,\"144\":0.0111218546,\"145\":1.0,\"146\":0.3960782381,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.396879907,\"151\":0.0109849308,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.3968063603,\"156\":0.3977220883,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.3964572107,\"163\":0.0110689367,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.0112415919,\"169\":0.0110029392,\"170\":0.011042147,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.3963961226,\"177\":1.0,\"178\":0.3960573089,\"179\":1.0,\"180\":0.3964292263,\"181\":0.3965541658,\"182\":0.010904368,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.3962957944,\"189\":1.0,\"190\":1.0,\"191\":0.396629074,\"192\":0.0109680615,\"193\":0.0108833857,\"194\":1.0,\"195\":1.0,\"196\":0.396674687,\"197\":0.0109844459,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.0109572084,\"202\":0.3971212742,\"203\":0.0111078624,\"204\":0.3964413384,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.011054196,\"210\":1.0,\"211\":0.3961935984,\"212\":1.0,\"213\":0.0108774183,\"214\":0.0110515907,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.3962382568,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.3972619691,\"224\":1.0,\"225\":0.3966458162,\"226\":1.0,\"227\":0.0110909845,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.3968619673,\"234\":0.0110272642,\"235\":1.0,\"236\":0.0109801394,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.3968593621,\"245\":0.0111149899,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.3964534113,\"254\":0.3967201491,\"255\":0.0112178059,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.0110233455,\"260\":1.0,\"261\":1.0,\"262\":0.0110827233,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.3964671803,\"267\":0.0109845845,\"268\":0.3968888802,\"269\":0.0109577952,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.3963948819,\"277\":0.3958884129,\"278\":0.0110774456,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0110686778,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.3964536203,\"288\":0.396579029,\"289\":0.0110258347,\"290\":0.0110430508,\"291\":1.0,\"292\":0.0109447114,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.0109881197,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.3964085243,\"305\":0.0110446123,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.3962229045,\"316\":0.0109863641,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.3965533911,\"327\":0.3969888095,\"328\":0.0110937886,\"329\":1.0,\"330\":1.0,\"331\":0.3962929258,\"332\":0.3966445392,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0108585488,\"340\":0.3972363545,\"341\":0.0110601253,\"342\":1.0,\"343\":0.0109781506,\"344\":1.0,\"345\":1.0,\"346\":0.0108690875,\"347\":0.0110306435,\"348\":1.0,\"349\":1.0,\"350\":0.3964717842,\"351\":0.3962389932,\"352\":1.0,\"353\":0.0110498656,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.3965518642,\"361\":1.0,\"362\":0.010932684,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.0109930395,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.3961685953,\"375\":1.0,\"376\":0.0110562424,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.397208691,\"385\":1.0,\"386\":0.3968803832,\"387\":0.010938925,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":104.9116440607,\"1\":0.040318951,\"2\":38267.5511921719,\"3\":20.9213793135,\"4\":21.4459765577,\"5\":515.3084505912,\"6\":520.6507734407,\"7\":38233.3738980105,\"8\":20.6683558647,\"9\":105.0472079785,\"10\":0.0393441471,\"11\":0.0397946943,\"12\":0.9354921317,\"13\":104.5931791783,\"14\":20.2265888805,\"15\":455.60244952,\"16\":525.299190401,\"17\":0.9406985371,\"18\":38518.4936870315,\"19\":38375.3894674193,\"20\":38187.1415524679,\"21\":105.0336269064,\"22\":0.0397300706,\"23\":0.940050956,\"24\":105.2953762693,\"25\":21.8144543482,\"26\":492.488658948,\"27\":554.8958008109,\"28\":0.9386679243,\"29\":23.2339113156,\"30\":38420.4852219144,\"31\":103.9162483097,\"32\":21.4529225259,\"33\":38067.6720404196,\"34\":0.0399895276,\"35\":552.9271005253,\"36\":0.9404396774,\"37\":21.9470986593,\"38\":552.4758134529,\"39\":38171.5182904526,\"40\":104.0894036628,\"41\":563.5899862087,\"42\":0.0393910736,\"43\":38653.710288626,\"44\":21.6325397424,\"45\":38144.053488703,\"46\":0.0399056878,\"47\":104.0611154343,\"48\":0.939545626,\"49\":105.7451600535,\"50\":21.7283674865,\"51\":523.885061884,\"52\":38096.7475320342,\"53\":38706.932275148,\"54\":105.6897333224,\"55\":0.0394674413,\"56\":0.9392192378,\"57\":0.9380915707,\"58\":21.4364451918,\"59\":538.7726667515,\"60\":0.0381267498,\"61\":38585.694790824,\"62\":543.0642908833,\"63\":0.0409409874,\"64\":105.6279923786,\"65\":105.3712201596,\"66\":105.0387874751,\"67\":0.0382700296,\"68\":21.2105671312,\"69\":0.9384944242,\"70\":21.4685362375,\"71\":544.1002722355,\"72\":38670.2899680018,\"73\":38229.5942969936,\"74\":104.7138616317,\"75\":0.0396152809,\"76\":0.9391518002,\"77\":105.6156608775,\"78\":0.9375848377,\"79\":544.4328632698,\"80\":0.0398968061,\"81\":20.9723713256,\"82\":551.0185862215,\"83\":516.8279581976,\"84\":38616.7930217768,\"85\":105.1470499923,\"86\":0.9384821555,\"87\":0.0401809119,\"88\":0.9384973337,\"89\":0.040856002,\"90\":0.0387299922,\"91\":0.9371727117,\"92\":21.1131824194,\"93\":516.776334116,\"94\":541.6481222561,\"95\":38477.9602945049,\"96\":104.6220149723,\"97\":0.0394323024,\"98\":38244.3007292471,\"99\":21.5165546391,\"100\":0.9377048405,\"101\":38490.6760149278,\"102\":0.9368878487,\"103\":21.1242267711,\"104\":526.4764170192,\"105\":21.3025686758,\"106\":37978.5610778367,\"107\":104.8815882473,\"108\":38453.2284814906,\"109\":0.0416821089,\"110\":0.9400514825,\"111\":22.580330584,\"112\":21.7898063681,\"113\":21.0263969695,\"114\":105.2616405132,\"115\":20.5638973954,\"116\":557.2749244063,\"117\":37959.3496700464,\"118\":106.1644720051,\"119\":106.3260383194,\"120\":0.0401437553,\"121\":542.1682945442,\"122\":0.9379495313,\"123\":104.3332165538,\"124\":531.3590130848,\"125\":20.9199875188,\"126\":529.7496076675,\"127\":38269.0414743111,\"128\":538.9407132478,\"129\":38867.0552015385,\"130\":104.6364526842,\"131\":0.0388432678,\"132\":0.936419844,\"133\":20.7810044705,\"134\":0.0400454282,\"135\":38070.6616221527,\"136\":509.024693062,\"137\":38483.0144575375,\"138\":0.0393785888,\"139\":526.8627430412,\"140\":482.9892635124,\"141\":38051.0491329108,\"142\":38024.8904427889,\"143\":104.9638045474,\"144\":0.0399726862,\"145\":0.9376021088,\"146\":105.5511209182,\"147\":21.9669040461,\"148\":528.0137468009,\"149\":38319.3730031065,\"150\":104.992125846,\"151\":0.0397960713,\"152\":38168.7292999403,\"153\":0.9377544272,\"154\":0.9383182638,\"155\":105.39226359,\"156\":105.644401232,\"157\":38115.4540500413,\"158\":0.9369888771,\"159\":21.1337117696,\"160\":516.8937065447,\"161\":38430.892831462,\"162\":104.2981182267,\"163\":0.0389202889,\"164\":510.5339072013,\"165\":0.9391190867,\"166\":21.5006281831,\"167\":538.0625328887,\"168\":0.0410568946,\"169\":0.0395688721,\"170\":0.0384741466,\"171\":0.9381863204,\"172\":537.8642144819,\"173\":21.0942580202,\"174\":532.3814442831,\"175\":38358.8911870502,\"176\":105.1089699821,\"177\":20.2642912772,\"178\":106.6164134063,\"179\":0.9373052893,\"180\":105.211312051,\"181\":105.3626009177,\"182\":0.0397466572,\"183\":21.2501796829,\"184\":0.9374288622,\"185\":21.0551691993,\"186\":524.0888165839,\"187\":38370.0546203598,\"188\":105.4696969181,\"189\":38203.3842503332,\"190\":20.6615846664,\"191\":105.6657572167,\"192\":0.0385640093,\"193\":0.0386964826,\"194\":0.9380161801,\"195\":21.0569680247,\"196\":105.1307543813,\"197\":0.0386211357,\"198\":530.8698427874,\"199\":38644.8477229498,\"200\":530.4065245271,\"201\":0.0407746535,\"202\":104.2223895342,\"203\":0.0399241559,\"204\":104.7181448333,\"205\":0.9384035151,\"206\":21.4537909615,\"207\":0.9355765327,\"208\":539.1674095603,\"209\":0.0410187698,\"210\":39258.5691380372,\"211\":105.1629063871,\"212\":38275.3339322641,\"213\":0.0396037716,\"214\":0.0392746363,\"215\":0.937962734,\"216\":0.9362806215,\"217\":20.7041305066,\"218\":506.1119814293,\"219\":105.1379404925,\"220\":38483.8096389351,\"221\":0.9393987552,\"222\":0.9376853389,\"223\":105.2545607365,\"224\":477.5368180527,\"225\":105.572308549,\"226\":0.9365163813,\"227\":0.0366942563,\"228\":0.9378986258,\"229\":20.89955755,\"230\":533.9904900941,\"231\":38212.7856056812,\"232\":21.0407460535,\"233\":105.3807221551,\"234\":0.038782552,\"235\":38119.5889161698,\"236\":0.039165177,\"237\":21.2387307981,\"238\":20.7159567634,\"239\":0.938805435,\"240\":0.9391071562,\"241\":21.52980053,\"242\":547.9563818478,\"243\":38055.4492421815,\"244\":105.1346911794,\"245\":0.039918351,\"246\":21.7429085278,\"247\":0.9371432675,\"248\":21.1296322288,\"249\":526.3642591909,\"250\":497.16795329,\"251\":21.2657115265,\"252\":38447.1023567209,\"253\":106.4847606039,\"254\":105.5409329714,\"255\":0.0409755142,\"256\":0.9370754109,\"257\":507.6750126562,\"258\":511.500098371,\"259\":0.0388717973,\"260\":37938.4744782539,\"261\":21.0608359954,\"262\":0.039929546,\"263\":0.9379850326,\"264\":522.6523517314,\"265\":38505.375332209,\"266\":105.5534088629,\"267\":0.039848096,\"268\":104.5856442365,\"269\":0.0393607626,\"270\":0.9371939122,\"271\":20.8862336795,\"272\":0.9385186825,\"273\":528.5209258106,\"274\":37728.0789037874,\"275\":38043.7614696314,\"276\":104.9421653934,\"277\":105.3332669623,\"278\":0.0391551119,\"279\":38291.9387701211,\"280\":0.9385174873,\"281\":0.9367487962,\"282\":0.0386453199,\"283\":20.7924146526,\"284\":504.7006985544,\"285\":489.0665678791,\"286\":38248.5349675273,\"287\":104.8127998201,\"288\":105.2292814143,\"289\":0.0397703624,\"290\":0.039462518,\"291\":0.9384416163,\"292\":0.0388476153,\"293\":21.2679346166,\"294\":537.8728139162,\"295\":38176.2761604092,\"296\":0.9377815341,\"297\":21.1811920735,\"298\":0.9387477008,\"299\":0.0394273173,\"300\":467.1119339759,\"301\":0.9375300051,\"302\":535.1580719146,\"303\":38317.4964317733,\"304\":104.5190460937,\"305\":0.0409670439,\"306\":0.9376079516,\"307\":0.9363379767,\"308\":20.8732223044,\"309\":510.1076882483,\"310\":20.9615509082,\"311\":0.9393300642,\"312\":21.0995492588,\"313\":21.7165193772,\"314\":37956.4819314911,\"315\":103.7193429832,\"316\":0.0391701296,\"317\":38601.1354972046,\"318\":0.9393606969,\"319\":21.7743593051,\"320\":546.5640355537,\"321\":38439.5959883837,\"322\":20.7724017279,\"323\":523.358581337,\"324\":525.5397033903,\"325\":38346.914781935,\"326\":104.1947966862,\"327\":107.0719128026,\"328\":0.0403602336,\"329\":0.9359267209,\"330\":22.0897940939,\"331\":104.0284850642,\"332\":106.5314060271,\"333\":0.9387831142,\"334\":38595.4227044909,\"335\":527.1153112705,\"336\":21.217467922,\"337\":540.2634593004,\"338\":38439.741159335,\"339\":0.038267933,\"340\":105.2410736859,\"341\":0.0390988036,\"342\":0.9387728328,\"343\":0.040125484,\"344\":21.2911106939,\"345\":538.7717983769,\"346\":0.0382439871,\"347\":0.039520112,\"348\":38325.9421533161,\"349\":20.6575791947,\"350\":105.1890433492,\"351\":106.21433227,\"352\":38453.5082599798,\"353\":0.0387137038,\"354\":0.9391486064,\"355\":38294.1020935233,\"356\":21.2618872897,\"357\":0.9381532714,\"358\":545.9566169859,\"359\":38255.3217863117,\"360\":105.623813019,\"361\":0.9369674044,\"362\":0.0402774543,\"363\":0.9366441361,\"364\":20.7296217983,\"365\":0.9371548984,\"366\":0.0404800603,\"367\":539.8435103917,\"368\":21.3544129852,\"369\":38055.7085664149,\"370\":0.9393487142,\"371\":22.3029549771,\"372\":547.0585822628,\"373\":38205.2654097572,\"374\":106.0524550436,\"375\":20.7114011899,\"376\":0.0399115934,\"377\":0.936424317,\"378\":21.129884781,\"379\":532.2264058044,\"380\":38442.2770274193,\"381\":0.937981269,\"382\":21.3102709685,\"383\":531.4746979941,\"384\":105.4301605378,\"385\":38637.0708379549,\"386\":105.5233072802,\"387\":0.0374860671,\"388\":0.9370550332,\"389\":507.3454764777},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":1481983,\"1\":1481983,\"2\":1478873,\"3\":1480310,\"4\":1480218,\"5\":1479019,\"6\":1480310,\"7\":1480310,\"8\":1478983,\"9\":1480576,\"10\":1480576,\"11\":1480524,\"12\":1480576,\"13\":1479939,\"14\":1480576,\"15\":1480576,\"16\":1479981,\"17\":1469191,\"18\":1479939,\"19\":1479019,\"20\":1480576,\"21\":1478905,\"22\":1478905,\"23\":1478905,\"24\":1480190,\"25\":1478905,\"26\":1478983,\"27\":1478905,\"28\":1480524,\"29\":1469191,\"30\":1478905,\"31\":1481988,\"32\":1479513,\"33\":1480512,\"34\":1481988,\"35\":1467130,\"36\":1481988,\"37\":1481988,\"38\":1481988,\"39\":1481988,\"40\":1481427,\"41\":1469191,\"42\":1481427,\"43\":1478983,\"44\":1480524,\"45\":1480359,\"46\":1480190,\"47\":1479119,\"48\":1481427,\"49\":1478787,\"50\":1481427,\"51\":1481427,\"52\":1481427,\"53\":1469191,\"54\":1481677,\"55\":1481677,\"56\":1481677,\"57\":1480190,\"58\":1481677,\"59\":1481677,\"60\":1479119,\"61\":1481677,\"62\":1480524,\"63\":1478787,\"64\":1481096,\"65\":1480585,\"66\":1480349,\"67\":1480349,\"68\":1478570,\"69\":1480349,\"70\":1480349,\"71\":1480349,\"72\":1480349,\"73\":1481018,\"74\":1479833,\"75\":1479833,\"76\":1479833,\"77\":1469062,\"78\":1478787,\"79\":1480585,\"80\":1481096,\"81\":1478787,\"82\":1481096,\"83\":1478787,\"84\":1478787,\"85\":1482047,\"86\":1479119,\"87\":1482047,\"88\":1478135,\"89\":1469062,\"90\":1478983,\"91\":1482047,\"92\":1482047,\"93\":1482047,\"94\":1479833,\"95\":1482047,\"96\":1479802,\"97\":1479802,\"98\":1481096,\"99\":1479119,\"100\":1479802,\"101\":1479619,\"102\":1469062,\"103\":1479802,\"104\":1479802,\"105\":1478135,\"106\":1479802,\"107\":1481331,\"108\":1479833,\"109\":1481331,\"110\":1481331,\"111\":1481331,\"112\":1467130,\"113\":1480190,\"114\":1478135,\"115\":1469062,\"116\":1481331,\"117\":1481331,\"118\":1481018,\"119\":1479458,\"120\":1479458,\"121\":1478135,\"122\":1479458,\"123\":1478570,\"124\":1480190,\"125\":1479458,\"126\":1479458,\"127\":1478584,\"128\":1479119,\"129\":1479458,\"130\":1480308,\"131\":1480308,\"132\":1480308,\"133\":1480308,\"134\":1481018,\"135\":1480190,\"136\":1480308,\"137\":1478135,\"138\":1478570,\"139\":1480973,\"140\":1469062,\"141\":1480308,\"142\":1479119,\"143\":1482037,\"144\":1482037,\"145\":1482037,\"146\":1481018,\"147\":1482037,\"148\":1482037,\"149\":1482037,\"150\":1481302,\"151\":1481302,\"152\":1469062,\"153\":1481018,\"154\":1478570,\"155\":1481695,\"156\":1479513,\"157\":1467130,\"158\":1481302,\"159\":1481302,\"160\":1481302,\"161\":1481302,\"162\":1480359,\"163\":1480359,\"164\":1480218,\"165\":1480359,\"166\":1480359,\"167\":1480359,\"168\":1481018,\"169\":1481695,\"170\":1479513,\"171\":1481695,\"172\":1479513,\"173\":1481695,\"174\":1481695,\"175\":1481695,\"176\":1480683,\"177\":1481983,\"178\":1478584,\"179\":1481018,\"180\":1477999,\"181\":1482892,\"182\":1482892,\"183\":1481018,\"184\":1482892,\"185\":1482892,\"186\":1482892,\"187\":1479513,\"188\":1468547,\"189\":1482892,\"190\":1481018,\"191\":1481848,\"192\":1481848,\"193\":1478584,\"194\":1481848,\"195\":1481848,\"196\":1479981,\"197\":1477999,\"198\":1481848,\"199\":1481848,\"200\":1478570,\"201\":1479939,\"202\":1480933,\"203\":1480933,\"204\":1478983,\"205\":1480933,\"206\":1480933,\"207\":1481983,\"208\":1480933,\"209\":1479981,\"210\":1480933,\"211\":1467843,\"212\":1480585,\"213\":1468547,\"214\":1467843,\"215\":1477999,\"216\":1467843,\"217\":1467843,\"218\":1467843,\"219\":1480218,\"220\":1467843,\"221\":1481096,\"222\":1479981,\"223\":1478873,\"224\":1481018,\"225\":1469031,\"226\":1468547,\"227\":1469031,\"228\":1469031,\"229\":1469031,\"230\":1469031,\"231\":1469031,\"232\":1477999,\"233\":1472260,\"234\":1472260,\"235\":1481018,\"236\":1480218,\"237\":1479981,\"238\":1468547,\"239\":1478584,\"240\":1472260,\"241\":1472260,\"242\":1472260,\"243\":1472260,\"244\":1480973,\"245\":1480973,\"246\":1481096,\"247\":1480973,\"248\":1480973,\"249\":1477999,\"250\":1468547,\"251\":1478584,\"252\":1468547,\"253\":1479619,\"254\":1480860,\"255\":1480860,\"256\":1480860,\"257\":1481172,\"258\":1476856,\"259\":1480585,\"260\":1480218,\"261\":1480860,\"262\":1480683,\"263\":1480218,\"264\":1480860,\"265\":1480860,\"266\":1479951,\"267\":1479619,\"268\":1481203,\"269\":1479951,\"270\":1479951,\"271\":1479951,\"272\":1480585,\"273\":1479951,\"274\":1479951,\"275\":1480973,\"276\":1481172,\"277\":1481569,\"278\":1481569,\"279\":1479981,\"280\":1480683,\"281\":1481569,\"282\":1478135,\"283\":1481569,\"284\":1481569,\"285\":1479939,\"286\":1481569,\"287\":1467130,\"288\":11825590,\"289\":11825590,\"290\":1481203,\"291\":11825590,\"292\":1481172,\"293\":11825590,\"294\":11825590,\"295\":11825590,\"296\":1479619,\"297\":1480683,\"298\":1479513,\"299\":1467130,\"300\":1481983,\"301\":1481203,\"302\":1480683,\"303\":1480683,\"304\":1479726,\"305\":1479726,\"306\":1479726,\"307\":1481172,\"308\":1479726,\"309\":1479726,\"310\":1479619,\"311\":1467130,\"312\":1481203,\"313\":1480585,\"314\":1479726,\"315\":1478014,\"316\":1478014,\"317\":1481983,\"318\":1478014,\"319\":1478014,\"320\":1478014,\"321\":1478014,\"322\":1481172,\"323\":1481203,\"324\":1481018,\"325\":1481203,\"326\":1479019,\"327\":1478485,\"328\":1478485,\"329\":1479939,\"330\":1479833,\"331\":1469191,\"332\":1480512,\"333\":1478485,\"334\":1481172,\"335\":1479619,\"336\":1478485,\"337\":1478485,\"338\":1478485,\"339\":1479019,\"340\":1479278,\"341\":1479278,\"342\":1479278,\"343\":1469191,\"344\":1479278,\"345\":1479278,\"346\":1478873,\"347\":1480512,\"348\":1479278,\"349\":1479939,\"350\":1478481,\"351\":1480561,\"352\":1478570,\"353\":1480561,\"354\":1480561,\"355\":1480524,\"356\":1480561,\"357\":1478873,\"358\":1480561,\"359\":1480561,\"360\":1476856,\"361\":1480512,\"362\":1476856,\"363\":1476856,\"364\":1476856,\"365\":1479019,\"366\":1478481,\"367\":1478584,\"368\":1478873,\"369\":1476856,\"370\":1478481,\"371\":1478481,\"372\":1478481,\"373\":1478481,\"374\":1477265,\"375\":1480512,\"376\":1477265,\"377\":1478983,\"378\":1479019,\"379\":1478873,\"380\":1477999,\"381\":1477265,\"382\":1477265,\"383\":1477265,\"384\":1480524,\"385\":1477265,\"386\":1480310,\"387\":1480310,\"388\":1480310,\"389\":1480512},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.6438783831,\"1\":0.001015792,\"2\":283.7723847434,\"3\":0.0809140685,\"4\":0.0811411149,\"5\":3.0642047952,\"6\":3.1059965213,\"7\":282.8720052837,\"8\":0.0797522203,\"9\":0.6496813829,\"10\":0.0009119192,\"11\":0.0009581442,\"12\":0.0003098182,\"13\":0.6447858935,\"14\":0.0788658132,\"15\":2.7428774802,\"16\":3.1856317874,\"17\":0.0002911616,\"18\":286.3947623372,\"19\":283.1680736661,\"20\":281.2743734519,\"21\":0.6479318224,\"22\":0.0009527888,\"23\":0.0002907722,\"24\":0.648257544,\"25\":0.0813509598,\"26\":2.960039117,\"27\":3.3887646921,\"28\":0.0003184253,\"29\":0.0928064209,\"30\":286.6654931808,\"31\":0.6369141637,\"32\":0.080884216,\"33\":277.8300120803,\"34\":0.0009508788,\"35\":3.3648583992,\"36\":0.0002908116,\"37\":0.0839173129,\"38\":3.4043069237,\"39\":277.0711970686,\"40\":0.6399438419,\"41\":3.4722073554,\"42\":0.0009804697,\"43\":288.3566750293,\"44\":0.0822475278,\"45\":282.2402798037,\"46\":0.0009788168,\"47\":0.64261778,\"48\":0.0003015461,\"49\":0.6480361782,\"50\":0.0809169857,\"51\":3.2014458683,\"52\":278.4346008441,\"53\":286.0972144661,\"54\":0.6549631657,\"55\":0.0009499623,\"56\":0.0002913484,\"57\":0.0002974362,\"58\":0.0794328098,\"59\":3.2776977894,\"60\":0.0008761412,\"61\":284.6174148954,\"62\":3.2845471921,\"63\":0.0009751249,\"64\":0.6504554673,\"65\":0.6465844814,\"66\":0.6448982132,\"67\":0.0008910786,\"68\":0.0806785916,\"69\":0.0002846951,\"70\":0.0817873792,\"71\":3.300185453,\"72\":283.2024860454,\"73\":276.5419182419,\"74\":0.6380372589,\"75\":0.0009608829,\"76\":0.0003044162,\"77\":0.6512173951,\"78\":0.0003015343,\"79\":3.2666004137,\"80\":0.0009821866,\"81\":0.078364983,\"82\":3.3693976309,\"83\":3.0574206814,\"84\":286.2965815835,\"85\":0.6447556567,\"86\":0.000288794,\"87\":0.0009617512,\"88\":0.0002933589,\"89\":0.0010182739,\"90\":0.00094054,\"91\":0.0002983727,\"92\":0.0819031598,\"93\":3.115313898,\"94\":3.2699763775,\"95\":285.9775844343,\"96\":0.6428251902,\"97\":0.0009476372,\"98\":279.1069509759,\"99\":0.081922531,\"100\":0.0003056654,\"101\":286.6083751636,\"102\":0.0003044537,\"103\":0.0799137947,\"104\":3.162627227,\"105\":0.0797707668,\"106\":280.6193946417,\"107\":0.6478216724,\"108\":282.0939719039,\"109\":0.00102258,\"110\":0.0002868228,\"111\":0.0887555675,\"112\":0.0827505804,\"113\":0.079642608,\"114\":0.6481445772,\"115\":0.0798213142,\"116\":3.421934122,\"117\":279.5055938477,\"118\":0.6555349423,\"119\":0.6522903708,\"120\":0.0009474935,\"121\":3.2794823102,\"122\":0.0003004482,\"123\":0.6395857527,\"124\":3.2007952522,\"125\":0.080191765,\"126\":3.1660465211,\"127\":285.6793437753,\"128\":3.2542402464,\"129\":287.2208939197,\"130\":0.6454789531,\"131\":0.0009441544,\"132\":0.0003251488,\"133\":0.0805126392,\"134\":0.0009786051,\"135\":281.2317327287,\"136\":3.0582145471,\"137\":283.7932343887,\"138\":0.0009272728,\"139\":3.1827660245,\"140\":2.9105989278,\"141\":283.053191502,\"142\":282.3119166468,\"143\":0.6473938384,\"144\":0.0009719258,\"145\":0.0003142524,\"146\":0.6501908763,\"147\":0.0849416926,\"148\":3.1969989571,\"149\":286.5599255105,\"150\":0.6405644596,\"151\":0.0009428143,\"152\":280.2901002757,\"153\":0.0003138512,\"154\":0.0003172899,\"155\":0.6513139382,\"156\":0.6506230846,\"157\":278.5189104104,\"158\":0.0003051889,\"159\":0.0792286791,\"160\":3.1052026703,\"161\":277.9431899637,\"162\":0.6382085604,\"163\":0.0009554495,\"164\":3.0549719441,\"165\":0.0003014566,\"166\":0.0826723617,\"167\":3.2378828313,\"168\":0.0009538101,\"169\":0.00093561,\"170\":0.0009260865,\"171\":0.0002882185,\"172\":3.2191689492,\"173\":0.0805274051,\"174\":3.1912893944,\"175\":282.9706434302,\"176\":0.6483727137,\"177\":0.0798427722,\"178\":0.6526885478,\"179\":0.0003074522,\"180\":0.6470059999,\"181\":0.6446593929,\"182\":0.0009649972,\"183\":0.0824241367,\"184\":0.0003063617,\"185\":0.0796455216,\"186\":3.1060971969,\"187\":282.2633428389,\"188\":0.651775473,\"189\":278.6398068411,\"190\":0.0795283044,\"191\":0.6481339031,\"192\":0.0009329096,\"193\":0.0009020105,\"194\":0.0002895019,\"195\":0.0810703243,\"196\":0.6471987737,\"197\":0.0009265818,\"198\":3.185534023,\"199\":284.20541277,\"200\":3.2403354798,\"201\":0.0010055147,\"202\":0.6399200991,\"203\":0.0009216595,\"204\":0.6462932217,\"205\":0.0003130787,\"206\":0.0826486767,\"207\":0.0003133031,\"208\":3.2584805342,\"209\":0.0010111513,\"210\":290.9337475105,\"211\":0.6457742969,\"212\":282.0143063207,\"213\":0.0009713749,\"214\":0.000951051,\"215\":0.000295251,\"216\":0.0003176392,\"217\":0.0791318708,\"218\":3.0197626234,\"219\":0.6498362462,\"220\":287.138095392,\"221\":0.0002889531,\"222\":0.0003109648,\"223\":0.6467427093,\"224\":2.8488151095,\"225\":0.6564496166,\"226\":0.0003075024,\"227\":0.0008621576,\"228\":0.0002976949,\"229\":0.0812672394,\"230\":3.2484257029,\"231\":287.6922388307,\"232\":0.0807687757,\"233\":0.6456571635,\"234\":0.000908541,\"235\":280.0213278868,\"236\":0.0009563586,\"237\":0.0800357054,\"238\":0.0801967677,\"239\":0.0002878186,\"240\":0.0002862892,\"241\":0.0821513165,\"242\":3.3144326642,\"243\":283.1844435894,\"244\":0.6452097675,\"245\":0.0009326306,\"246\":0.0812237913,\"247\":0.0003227272,\"248\":0.0799957173,\"249\":3.1689279219,\"250\":2.9764309392,\"251\":0.0802257419,\"252\":282.9674655793,\"253\":0.6528350015,\"254\":0.6493101072,\"255\":0.0009406834,\"256\":0.0003106276,\"257\":3.0223129529,\"258\":3.0563413868,\"259\":0.0009134171,\"260\":272.4768897764,\"261\":0.0806877559,\"262\":0.0009484769,\"263\":0.000307409,\"264\":3.1349595067,\"265\":286.3012845933,\"266\":0.6514522829,\"267\":0.0009698096,\"268\":0.6420484326,\"269\":0.0009285631,\"270\":0.0003020993,\"271\":0.0801177728,\"272\":0.000335402,\"273\":3.1930796575,\"274\":273.9303739105,\"275\":281.3138986826,\"276\":0.6485957151,\"277\":0.6480295742,\"278\":0.0009595581,\"279\":285.7058130547,\"280\":0.0002974581,\"281\":0.0003003918,\"282\":0.0009414722,\"283\":0.0803990426,\"284\":3.0163311113,\"285\":2.9553845083,\"286\":282.6912397022,\"287\":0.6526255067,\"288\":0.2288291887,\"289\":0.0003385095,\"290\":0.0009686052,\"291\":0.0001070233,\"292\":0.0009005592,\"293\":0.0285642775,\"294\":1.1501723589,\"295\":99.9722676035,\"296\":0.0003274158,\"297\":0.0799998335,\"298\":0.0003164621,\"299\":0.0009698473,\"300\":2.7995591693,\"301\":0.0003135666,\"302\":3.2319682231,\"303\":285.746698147,\"304\":0.6393158965,\"305\":0.001003137,\"306\":0.0003076867,\"307\":0.0003029876,\"308\":0.07911946,\"309\":3.1004932527,\"310\":0.0797741084,\"311\":0.0002955348,\"312\":0.0804520976,\"313\":0.0821882124,\"314\":280.544097273,\"315\":0.6344001155,\"316\":0.0009306528,\"317\":287.0395690212,\"318\":0.0003101611,\"319\":0.0841571171,\"320\":3.3568274275,\"321\":282.6519114376,\"322\":0.0810040297,\"323\":3.1731804451,\"324\":3.1348533146,\"325\":279.3436652447,\"326\":0.6390040261,\"327\":0.6595613981,\"328\":0.00096414,\"329\":0.0003236822,\"330\":0.0862643523,\"331\":0.6459219559,\"332\":0.6541037887,\"333\":0.0002988969,\"334\":285.586505789,\"335\":3.1562903205,\"336\":0.0801927661,\"337\":3.2777099724,\"338\":283.5107544467,\"339\":0.0009273122,\"340\":0.6467182059,\"341\":0.000946802,\"342\":0.0002935751,\"343\":0.0010114845,\"344\":0.0814928069,\"345\":3.2420798692,\"346\":0.0009292695,\"347\":0.0009409106,\"348\":283.8023615777,\"349\":0.0798661205,\"350\":0.6474421068,\"351\":0.6498041005,\"352\":287.9895609153,\"353\":0.0009209951,\"354\":0.0002902185,\"355\":282.141818891,\"356\":0.081458047,\"357\":0.0003004984,\"358\":3.3095076055,\"359\":281.5563591185,\"360\":0.6490310218,\"361\":0.0003006316,\"362\":0.0009742308,\"363\":0.0003024574,\"364\":0.0791228977,\"365\":0.0002959996,\"366\":0.0009841313,\"367\":3.2438667924,\"368\":0.0808244668,\"369\":277.7351410664,\"370\":0.0002919429,\"371\":0.0862718544,\"372\":3.3148940661,\"373\":282.8312098524,\"374\":0.6533251689,\"375\":0.0792092374,\"376\":0.0009755337,\"377\":0.0002954293,\"378\":0.0821675973,\"379\":3.2167787791,\"380\":282.5393171893,\"381\":0.0003057554,\"382\":0.0813591895,\"383\":3.2199858614,\"384\":0.649326425,\"385\":289.9387108706,\"386\":0.6486911575,\"387\":0.0009102592,\"388\":0.000303618,\"389\":3.0483049574},\"start_time\":{\"0\":1553817600000,\"1\":1553817600000,\"2\":1553817600000,\"3\":1553817600000,\"4\":1553817600000,\"5\":1553817600000,\"6\":1553817600000,\"7\":1553817600000,\"8\":1553817600000,\"9\":1553817600000,\"10\":1553817600000,\"11\":1553817600000,\"12\":1553817600000,\"13\":1553817600000,\"14\":1553817600000,\"15\":1553817600000,\"16\":1553817600000,\"17\":1553817600000,\"18\":1553817600000,\"19\":1553817600000,\"20\":1553817600000,\"21\":1553817600000,\"22\":1553817600000,\"23\":1553817600000,\"24\":1553817600000,\"25\":1553817600000,\"26\":1553817600000,\"27\":1553817600000,\"28\":1553817600000,\"29\":1553817600000,\"30\":1553817600000,\"31\":1553817600000,\"32\":1553817600000,\"33\":1553817600000,\"34\":1553817600000,\"35\":1553817600000,\"36\":1553817600000,\"37\":1553817600000,\"38\":1553817600000,\"39\":1553817600000,\"40\":1553817600000,\"41\":1553817600000,\"42\":1553817600000,\"43\":1553817600000,\"44\":1553817600000,\"45\":1553817600000,\"46\":1553817600000,\"47\":1553817600000,\"48\":1553817600000,\"49\":1553817600000,\"50\":1553817600000,\"51\":1553817600000,\"52\":1553817600000,\"53\":1553817600000,\"54\":1553817600000,\"55\":1553817600000,\"56\":1553817600000,\"57\":1553817600000,\"58\":1553817600000,\"59\":1553817600000,\"60\":1553817600000,\"61\":1553817600000,\"62\":1553817600000,\"63\":1553817600000,\"64\":1553817600000,\"65\":1553817600000,\"66\":1553817600000,\"67\":1553817600000,\"68\":1553817600000,\"69\":1553817600000,\"70\":1553817600000,\"71\":1553817600000,\"72\":1553817600000,\"73\":1553817600000,\"74\":1553817600000,\"75\":1553817600000,\"76\":1553817600000,\"77\":1553817600000,\"78\":1553817600000,\"79\":1553817600000,\"80\":1553817600000,\"81\":1553817600000,\"82\":1553817600000,\"83\":1553817600000,\"84\":1553817600000,\"85\":1553817600000,\"86\":1553817600000,\"87\":1553817600000,\"88\":1553817600000,\"89\":1553817600000,\"90\":1553817600000,\"91\":1553817600000,\"92\":1553817600000,\"93\":1553817600000,\"94\":1553817600000,\"95\":1553817600000,\"96\":1553817600000,\"97\":1553817600000,\"98\":1553817600000,\"99\":1553817600000,\"100\":1553817600000,\"101\":1553817600000,\"102\":1553817600000,\"103\":1553817600000,\"104\":1553817600000,\"105\":1553817600000,\"106\":1553817600000,\"107\":1553817600000,\"108\":1553817600000,\"109\":1553817600000,\"110\":1553817600000,\"111\":1553817600000,\"112\":1553817600000,\"113\":1553817600000,\"114\":1553817600000,\"115\":1553817600000,\"116\":1553817600000,\"117\":1553817600000,\"118\":1553817600000,\"119\":1553817600000,\"120\":1553817600000,\"121\":1553817600000,\"122\":1553817600000,\"123\":1553817600000,\"124\":1553817600000,\"125\":1553817600000,\"126\":1553817600000,\"127\":1553817600000,\"128\":1553817600000,\"129\":1553817600000,\"130\":1553817600000,\"131\":1553817600000,\"132\":1553817600000,\"133\":1553817600000,\"134\":1553817600000,\"135\":1553817600000,\"136\":1553817600000,\"137\":1553817600000,\"138\":1553817600000,\"139\":1553817600000,\"140\":1553817600000,\"141\":1553817600000,\"142\":1553817600000,\"143\":1553817600000,\"144\":1553817600000,\"145\":1553817600000,\"146\":1553817600000,\"147\":1553817600000,\"148\":1553817600000,\"149\":1553817600000,\"150\":1553817600000,\"151\":1553817600000,\"152\":1553817600000,\"153\":1553817600000,\"154\":1553817600000,\"155\":1553817600000,\"156\":1553817600000,\"157\":1553817600000,\"158\":1553817600000,\"159\":1553817600000,\"160\":1553817600000,\"161\":1553817600000,\"162\":1553817600000,\"163\":1553817600000,\"164\":1553817600000,\"165\":1553817600000,\"166\":1553817600000,\"167\":1553817600000,\"168\":1553817600000,\"169\":1553817600000,\"170\":1553817600000,\"171\":1553817600000,\"172\":1553817600000,\"173\":1553817600000,\"174\":1553817600000,\"175\":1553817600000,\"176\":1553817600000,\"177\":1553817600000,\"178\":1553817600000,\"179\":1553817600000,\"180\":1553817600000,\"181\":1553817600000,\"182\":1553817600000,\"183\":1553817600000,\"184\":1553817600000,\"185\":1553817600000,\"186\":1553817600000,\"187\":1553817600000,\"188\":1553817600000,\"189\":1553817600000,\"190\":1553817600000,\"191\":1553817600000,\"192\":1553817600000,\"193\":1553817600000,\"194\":1553817600000,\"195\":1553817600000,\"196\":1553817600000,\"197\":1553817600000,\"198\":1553817600000,\"199\":1553817600000,\"200\":1553817600000,\"201\":1553817600000,\"202\":1553817600000,\"203\":1553817600000,\"204\":1553817600000,\"205\":1553817600000,\"206\":1553817600000,\"207\":1553817600000,\"208\":1553817600000,\"209\":1553817600000,\"210\":1553817600000,\"211\":1553817600000,\"212\":1553817600000,\"213\":1553817600000,\"214\":1553817600000,\"215\":1553817600000,\"216\":1553817600000,\"217\":1553817600000,\"218\":1553817600000,\"219\":1553817600000,\"220\":1553817600000,\"221\":1553817600000,\"222\":1553817600000,\"223\":1553817600000,\"224\":1553817600000,\"225\":1553817600000,\"226\":1553817600000,\"227\":1553817600000,\"228\":1553817600000,\"229\":1553817600000,\"230\":1553817600000,\"231\":1553817600000,\"232\":1553817600000,\"233\":1553817600000,\"234\":1553817600000,\"235\":1553817600000,\"236\":1553817600000,\"237\":1553817600000,\"238\":1553817600000,\"239\":1553817600000,\"240\":1553817600000,\"241\":1553817600000,\"242\":1553817600000,\"243\":1553817600000,\"244\":1553817600000,\"245\":1553817600000,\"246\":1553817600000,\"247\":1553817600000,\"248\":1553817600000,\"249\":1553817600000,\"250\":1553817600000,\"251\":1553817600000,\"252\":1553817600000,\"253\":1553817600000,\"254\":1553817600000,\"255\":1553817600000,\"256\":1553817600000,\"257\":1553817600000,\"258\":1553817600000,\"259\":1553817600000,\"260\":1553817600000,\"261\":1553817600000,\"262\":1553817600000,\"263\":1553817600000,\"264\":1553817600000,\"265\":1553817600000,\"266\":1553817600000,\"267\":1553817600000,\"268\":1553817600000,\"269\":1553817600000,\"270\":1553817600000,\"271\":1553817600000,\"272\":1553817600000,\"273\":1553817600000,\"274\":1553817600000,\"275\":1553817600000,\"276\":1553817600000,\"277\":1553817600000,\"278\":1553817600000,\"279\":1553817600000,\"280\":1553817600000,\"281\":1553817600000,\"282\":1553817600000,\"283\":1553817600000,\"284\":1553817600000,\"285\":1553817600000,\"286\":1553817600000,\"287\":1553817600000,\"288\":1553817600000,\"289\":1553817600000,\"290\":1553817600000,\"291\":1553817600000,\"292\":1553817600000,\"293\":1553817600000,\"294\":1553817600000,\"295\":1553817600000,\"296\":1553817600000,\"297\":1553817600000,\"298\":1553817600000,\"299\":1553817600000,\"300\":1553817600000,\"301\":1553817600000,\"302\":1553817600000,\"303\":1553817600000,\"304\":1553817600000,\"305\":1553817600000,\"306\":1553817600000,\"307\":1553817600000,\"308\":1553817600000,\"309\":1553817600000,\"310\":1553817600000,\"311\":1553817600000,\"312\":1553817600000,\"313\":1553817600000,\"314\":1553817600000,\"315\":1553817600000,\"316\":1553817600000,\"317\":1553817600000,\"318\":1553817600000,\"319\":1553817600000,\"320\":1553817600000,\"321\":1553817600000,\"322\":1553817600000,\"323\":1553817600000,\"324\":1553817600000,\"325\":1553817600000,\"326\":1553817600000,\"327\":1553817600000,\"328\":1553817600000,\"329\":1553817600000,\"330\":1553817600000,\"331\":1553817600000,\"332\":1553817600000,\"333\":1553817600000,\"334\":1553817600000,\"335\":1553817600000,\"336\":1553817600000,\"337\":1553817600000,\"338\":1553817600000,\"339\":1553817600000,\"340\":1553817600000,\"341\":1553817600000,\"342\":1553817600000,\"343\":1553817600000,\"344\":1553817600000,\"345\":1553817600000,\"346\":1553817600000,\"347\":1553817600000,\"348\":1553817600000,\"349\":1553817600000,\"350\":1553817600000,\"351\":1553817600000,\"352\":1553817600000,\"353\":1553817600000,\"354\":1553817600000,\"355\":1553817600000,\"356\":1553817600000,\"357\":1553817600000,\"358\":1553817600000,\"359\":1553817600000,\"360\":1553817600000,\"361\":1553817600000,\"362\":1553817600000,\"363\":1553817600000,\"364\":1553817600000,\"365\":1553817600000,\"366\":1553817600000,\"367\":1553817600000,\"368\":1553817600000,\"369\":1553817600000,\"370\":1553817600000,\"371\":1553817600000,\"372\":1553817600000,\"373\":1553817600000,\"374\":1553817600000,\"375\":1553817600000,\"376\":1553817600000,\"377\":1553817600000,\"378\":1553817600000,\"379\":1553817600000,\"380\":1553817600000,\"381\":1553817600000,\"382\":1553817600000,\"383\":1553817600000,\"384\":1553817600000,\"385\":1553817600000,\"386\":1553817600000,\"387\":1553817600000,\"388\":1553817600000,\"389\":1553817600000}}"},"description":null}],[1556078905230,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1554076800000,\"1\":1554076800000,\"2\":1554076800000,\"3\":1554076800000,\"4\":1554076800000,\"5\":1554076800000,\"6\":1554076800000,\"7\":1554076800000,\"8\":1554076800000,\"9\":1554076800000,\"10\":1554076800000,\"11\":1554076800000,\"12\":1554076800000,\"13\":1554076800000,\"14\":1554076800000,\"15\":1554076800000,\"16\":1554076800000,\"17\":1554076800000,\"18\":1554076800000,\"19\":1554076800000,\"20\":1554076800000,\"21\":1554076800000,\"22\":1554076800000,\"23\":1554076800000,\"24\":1554076800000,\"25\":1554076800000,\"26\":1554076800000,\"27\":1554076800000,\"28\":1554076800000,\"29\":1554076800000,\"30\":1554076800000,\"31\":1554076800000,\"32\":1554076800000,\"33\":1554076800000,\"34\":1554076800000,\"35\":1554076800000,\"36\":1554076800000,\"37\":1554076800000,\"38\":1554076800000,\"39\":1554076800000,\"40\":1554076800000,\"41\":1554076800000,\"42\":1554076800000,\"43\":1554076800000,\"44\":1554076800000,\"45\":1554076800000,\"46\":1554076800000,\"47\":1554076800000,\"48\":1554076800000,\"49\":1554076800000,\"50\":1554076800000,\"51\":1554076800000,\"52\":1554076800000,\"53\":1554076800000,\"54\":1554076800000,\"55\":1554076800000,\"56\":1554076800000,\"57\":1554076800000,\"58\":1554076800000,\"59\":1554076800000,\"60\":1554076800000,\"61\":1554076800000,\"62\":1554076800000,\"63\":1554076800000,\"64\":1554076800000,\"65\":1554076800000,\"66\":1554076800000,\"67\":1554076800000,\"68\":1554076800000,\"69\":1554076800000,\"70\":1554076800000,\"71\":1554076800000,\"72\":1554076800000,\"73\":1554076800000,\"74\":1554076800000,\"75\":1554076800000,\"76\":1554076800000,\"77\":1554076800000,\"78\":1554076800000,\"79\":1554076800000,\"80\":1554076800000,\"81\":1554076800000,\"82\":1554076800000,\"83\":1554076800000,\"84\":1554076800000,\"85\":1554076800000,\"86\":1554076800000,\"87\":1554076800000,\"88\":1554076800000,\"89\":1554076800000,\"90\":1554076800000,\"91\":1554076800000,\"92\":1554076800000,\"93\":1554076800000,\"94\":1554076800000,\"95\":1554076800000,\"96\":1554076800000,\"97\":1554076800000,\"98\":1554076800000,\"99\":1554076800000,\"100\":1554076800000,\"101\":1554076800000,\"102\":1554076800000,\"103\":1554076800000,\"104\":1554076800000,\"105\":1554076800000,\"106\":1554076800000,\"107\":1554076800000,\"108\":1554076800000,\"109\":1554076800000,\"110\":1554076800000,\"111\":1554076800000,\"112\":1554076800000,\"113\":1554076800000,\"114\":1554076800000,\"115\":1554076800000,\"116\":1554076800000,\"117\":1554076800000,\"118\":1554076800000,\"119\":1554076800000,\"120\":1554076800000,\"121\":1554076800000,\"122\":1554076800000,\"123\":1554076800000,\"124\":1554076800000,\"125\":1554076800000,\"126\":1554076800000,\"127\":1554076800000,\"128\":1554076800000,\"129\":1554076800000,\"130\":1554076800000,\"131\":1554076800000,\"132\":1554076800000,\"133\":1554076800000,\"134\":1554076800000,\"135\":1554076800000,\"136\":1554076800000,\"137\":1554076800000,\"138\":1554076800000,\"139\":1554076800000,\"140\":1554076800000,\"141\":1554076800000,\"142\":1554076800000,\"143\":1554076800000,\"144\":1554076800000,\"145\":1554076800000,\"146\":1554076800000,\"147\":1554076800000,\"148\":1554076800000,\"149\":1554076800000,\"150\":1554076800000,\"151\":1554076800000,\"152\":1554076800000,\"153\":1554076800000,\"154\":1554076800000,\"155\":1554076800000,\"156\":1554076800000,\"157\":1554076800000,\"158\":1554076800000,\"159\":1554076800000,\"160\":1554076800000,\"161\":1554076800000,\"162\":1554076800000,\"163\":1554076800000,\"164\":1554076800000,\"165\":1554076800000,\"166\":1554076800000,\"167\":1554076800000,\"168\":1554076800000,\"169\":1554076800000,\"170\":1554076800000,\"171\":1554076800000,\"172\":1554076800000,\"173\":1554076800000,\"174\":1554076800000,\"175\":1554076800000,\"176\":1554076800000,\"177\":1554076800000,\"178\":1554076800000,\"179\":1554076800000,\"180\":1554076800000,\"181\":1554076800000,\"182\":1554076800000,\"183\":1554076800000,\"184\":1554076800000,\"185\":1554076800000,\"186\":1554076800000,\"187\":1554076800000,\"188\":1554076800000,\"189\":1554076800000,\"190\":1554076800000,\"191\":1554076800000,\"192\":1554076800000,\"193\":1554076800000,\"194\":1554076800000,\"195\":1554076800000,\"196\":1554076800000,\"197\":1554076800000,\"198\":1554076800000,\"199\":1554076800000,\"200\":1554076800000,\"201\":1554076800000,\"202\":1554076800000,\"203\":1554076800000,\"204\":1554076800000,\"205\":1554076800000,\"206\":1554076800000,\"207\":1554076800000,\"208\":1554076800000,\"209\":1554076800000,\"210\":1554076800000,\"211\":1554076800000,\"212\":1554076800000,\"213\":1554076800000,\"214\":1554076800000,\"215\":1554076800000,\"216\":1554076800000,\"217\":1554076800000,\"218\":1554076800000,\"219\":1554076800000,\"220\":1554076800000,\"221\":1554076800000,\"222\":1554076800000,\"223\":1554076800000,\"224\":1554076800000,\"225\":1554076800000,\"226\":1554076800000,\"227\":1554076800000,\"228\":1554076800000,\"229\":1554076800000,\"230\":1554076800000,\"231\":1554076800000,\"232\":1554076800000,\"233\":1554076800000,\"234\":1554076800000,\"235\":1554076800000,\"236\":1554076800000,\"237\":1554076800000,\"238\":1554076800000,\"239\":1554076800000,\"240\":1554076800000,\"241\":1554076800000,\"242\":1554076800000,\"243\":1554076800000,\"244\":1554076800000,\"245\":1554076800000,\"246\":1554076800000,\"247\":1554076800000,\"248\":1554076800000,\"249\":1554076800000,\"250\":1554076800000,\"251\":1554076800000,\"252\":1554076800000,\"253\":1554076800000,\"254\":1554076800000,\"255\":1554076800000,\"256\":1554076800000,\"257\":1554076800000,\"258\":1554076800000,\"259\":1554076800000,\"260\":1554076800000,\"261\":1554076800000,\"262\":1554076800000,\"263\":1554076800000,\"264\":1554076800000,\"265\":1554076800000,\"266\":1554076800000,\"267\":1554076800000,\"268\":1554076800000,\"269\":1554076800000,\"270\":1554076800000,\"271\":1554076800000,\"272\":1554076800000,\"273\":1554076800000,\"274\":1554076800000,\"275\":1554076800000,\"276\":1554076800000,\"277\":1554076800000,\"278\":1554076800000,\"279\":1554076800000,\"280\":1554076800000,\"281\":1554076800000,\"282\":1554076800000,\"283\":1554076800000,\"284\":1554076800000,\"285\":1554076800000,\"286\":1554076800000,\"287\":1554076800000,\"288\":1554076800000,\"289\":1554076800000,\"290\":1554076800000,\"291\":1554076800000,\"292\":1554076800000,\"293\":1554076800000,\"294\":1554076800000,\"295\":1554076800000,\"296\":1554076800000,\"297\":1554076800000,\"298\":1554076800000,\"299\":1554076800000,\"300\":1554076800000,\"301\":1554076800000,\"302\":1554076800000,\"303\":1554076800000,\"304\":1554076800000,\"305\":1554076800000,\"306\":1554076800000,\"307\":1554076800000,\"308\":1554076800000,\"309\":1554076800000,\"310\":1554076800000,\"311\":1554076800000,\"312\":1554076800000,\"313\":1554076800000,\"314\":1554076800000,\"315\":1554076800000,\"316\":1554076800000,\"317\":1554076800000,\"318\":1554076800000,\"319\":1554076800000,\"320\":1554076800000,\"321\":1554076800000,\"322\":1554076800000,\"323\":1554076800000,\"324\":1554076800000,\"325\":1554076800000,\"326\":1554076800000,\"327\":1554076800000,\"328\":1554076800000,\"329\":1554076800000,\"330\":1554076800000,\"331\":1554076800000,\"332\":1554076800000,\"333\":1554076800000,\"334\":1554076800000,\"335\":1554076800000,\"336\":1554076800000,\"337\":1554076800000,\"338\":1554076800000,\"339\":1554076800000,\"340\":1554076800000,\"341\":1554076800000,\"342\":1554076800000,\"343\":1554076800000,\"344\":1554076800000,\"345\":1554076800000,\"346\":1554076800000,\"347\":1554076800000,\"348\":1554076800000,\"349\":1554076800000,\"350\":1554076800000,\"351\":1554076800000,\"352\":1554076800000,\"353\":1554076800000,\"354\":1554076800000,\"355\":1554076800000,\"356\":1554076800000,\"357\":1554076800000,\"358\":1554076800000,\"359\":1554076800000,\"360\":1554076800000,\"361\":1554076800000,\"362\":1554076800000,\"363\":1554076800000,\"364\":1554076800000,\"365\":1554076800000,\"366\":1554076800000,\"367\":1554076800000,\"368\":1554076800000,\"369\":1554076800000,\"370\":1554076800000,\"371\":1554076800000,\"372\":1554076800000,\"373\":1554076800000,\"374\":1554076800000,\"375\":1554076800000,\"376\":1554076800000,\"377\":1554076800000,\"378\":1554076800000,\"379\":1554076800000,\"380\":1554076800000,\"381\":1554076800000,\"382\":1554076800000,\"383\":1554076800000,\"384\":1554076800000,\"385\":1554076800000,\"386\":1554076800000,\"387\":1554076800000,\"388\":1554076800000,\"389\":1554076800000},\"frac_nonnull\":{\"0\":0.3965254662,\"1\":0.0146148775,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.3966942595,\"10\":0.0147604716,\"11\":0.0146583237,\"12\":1.0,\"13\":0.3967149997,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.3962959081,\"22\":0.0145844392,\"23\":1.0,\"24\":0.3967065039,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.3971961986,\"32\":1.0,\"33\":1.0,\"34\":0.0147437091,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.3964792055,\"41\":1.0,\"42\":0.0146007869,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0145542126,\"47\":0.3968429856,\"48\":1.0,\"49\":0.3970991089,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.396954262,\"55\":0.0144565921,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0146283024,\"61\":1.0,\"62\":1.0,\"63\":0.014541648,\"64\":0.3971012007,\"65\":0.3963939929,\"66\":0.3965355467,\"67\":0.0145438677,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.3968373458,\"75\":0.0145725903,\"76\":1.0,\"77\":0.3969614625,\"78\":1.0,\"79\":1.0,\"80\":0.0145291055,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.3964361454,\"86\":1.0,\"87\":0.0146223433,\"88\":1.0,\"89\":0.0145507814,\"90\":0.0145370163,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.3968422803,\"97\":0.014487749,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.3967094458,\"108\":1.0,\"109\":0.0145396269,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.3959503022,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.396314562,\"119\":0.3968879144,\"120\":0.0145600619,\"121\":1.0,\"122\":1.0,\"123\":0.3964918807,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.3959898886,\"131\":0.0145787228,\"132\":1.0,\"133\":1.0,\"134\":0.0144745033,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.0145654247,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.3967734949,\"144\":0.014662252,\"145\":1.0,\"146\":0.3960782381,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.396879907,\"151\":0.0144899555,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.3968063603,\"156\":0.3977220883,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.3964572107,\"163\":0.0146376656,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.0147749724,\"169\":0.0145023099,\"170\":0.0146014263,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.3963961226,\"177\":1.0,\"178\":0.3960573089,\"179\":1.0,\"180\":0.3964292263,\"181\":0.3965541658,\"182\":0.0144636292,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.3962957944,\"189\":1.0,\"190\":1.0,\"191\":0.396629074,\"192\":0.014494739,\"193\":0.0144739832,\"194\":1.0,\"195\":1.0,\"196\":0.396674687,\"197\":0.0145487243,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.0144242432,\"202\":0.3971212742,\"203\":0.0146576516,\"204\":0.3964413384,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.0145832953,\"210\":1.0,\"211\":0.3961935984,\"212\":1.0,\"213\":0.0144530614,\"214\":0.0145008696,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.3962382568,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.3972619691,\"224\":1.0,\"225\":0.3966458162,\"226\":1.0,\"227\":0.0146123533,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.3968619673,\"234\":0.0145150992,\"235\":1.0,\"236\":0.0145025935,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.3968593621,\"245\":0.0146903421,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.3964534113,\"254\":0.3967201491,\"255\":0.0147117216,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.0145334446,\"260\":1.0,\"261\":1.0,\"262\":0.0145486914,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.3964671803,\"267\":0.0145213058,\"268\":0.3968888802,\"269\":0.0144971016,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.3963948819,\"277\":0.3958884129,\"278\":0.014608837,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0145406204,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.3964536203,\"288\":0.396579029,\"289\":0.0145772854,\"290\":0.0145213046,\"291\":1.0,\"292\":0.0144979786,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.014456115,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.3964085243,\"305\":0.0145675618,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.3962229045,\"316\":0.0145519596,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.3965533911,\"327\":0.3969888095,\"328\":0.0146224006,\"329\":1.0,\"330\":1.0,\"331\":0.3962929258,\"332\":0.3966445392,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0144562037,\"340\":0.3972363545,\"341\":0.0146855425,\"342\":1.0,\"343\":0.0145243198,\"344\":1.0,\"345\":1.0,\"346\":0.0144758881,\"347\":0.0145496963,\"348\":1.0,\"349\":1.0,\"350\":0.3964717842,\"351\":0.3962389932,\"352\":1.0,\"353\":0.0146430981,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.3965518642,\"361\":1.0,\"362\":0.0144191445,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.0145230138,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.3961685953,\"375\":1.0,\"376\":0.0145789686,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.397208691,\"385\":1.0,\"386\":0.3968803832,\"387\":0.0145516817,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":104.9116440607,\"1\":0.0556612323,\"2\":38267.5511921719,\"3\":20.9213793135,\"4\":21.4459765577,\"5\":515.3084505912,\"6\":520.6507734407,\"7\":38233.3738980104,\"8\":20.6683558647,\"9\":105.0472079785,\"10\":0.0549151141,\"11\":0.0552716471,\"12\":0.9354921317,\"13\":104.5931791783,\"14\":20.2265888805,\"15\":455.60244952,\"16\":525.299190401,\"17\":0.9406985371,\"18\":38518.4948677146,\"19\":38375.3894674193,\"20\":38187.1415524679,\"21\":105.0336269064,\"22\":0.0552205855,\"23\":0.940050956,\"24\":105.2953762693,\"25\":21.8144543482,\"26\":492.488658948,\"27\":554.8958008109,\"28\":0.9386679243,\"29\":23.2339113156,\"30\":38420.4852219144,\"31\":103.9162483097,\"32\":21.4529225259,\"33\":38067.6720404196,\"34\":0.0552696783,\"35\":552.9271005253,\"36\":0.9404396774,\"37\":21.9470986593,\"38\":552.4758134529,\"39\":38171.5182904525,\"40\":104.0894036628,\"41\":563.5899862087,\"42\":0.0546675604,\"43\":38653.710288626,\"44\":21.6325397424,\"45\":38144.053488703,\"46\":0.0552935772,\"47\":104.0611154343,\"48\":0.939545626,\"49\":105.7451600535,\"50\":21.7283674865,\"51\":523.885061884,\"52\":38096.7475320342,\"53\":38706.932275148,\"54\":105.6897333224,\"55\":0.0550815056,\"56\":0.9392192378,\"57\":0.9380915707,\"58\":21.4364451918,\"59\":538.7726667515,\"60\":0.0534331585,\"61\":38585.6947908241,\"62\":543.0642908833,\"63\":0.0571089684,\"64\":105.6279923786,\"65\":105.3712201596,\"66\":105.0387874751,\"67\":0.0536758562,\"68\":21.2105671312,\"69\":0.9384944242,\"70\":21.4685362375,\"71\":544.1002722355,\"72\":38670.2899680019,\"73\":38229.5942969935,\"74\":104.7138616317,\"75\":0.0549480921,\"76\":0.9391518002,\"77\":105.6156608775,\"78\":0.9375848377,\"79\":544.4328632698,\"80\":0.0554332737,\"81\":20.9723713256,\"82\":551.0185862215,\"83\":516.8279581976,\"84\":38616.7930217767,\"85\":105.1470499923,\"86\":0.9384821555,\"87\":0.055691891,\"88\":0.9384973337,\"89\":0.0566504341,\"90\":0.0538538983,\"91\":0.9371727117,\"92\":21.1131824194,\"93\":516.776334116,\"94\":541.6481222561,\"95\":38477.9602945049,\"96\":104.6220149723,\"97\":0.054530944,\"98\":38244.3007292471,\"99\":21.5165546391,\"100\":0.9377048405,\"101\":38490.6760149277,\"102\":0.9368878487,\"103\":21.1242267711,\"104\":526.4764170192,\"105\":21.3025686758,\"106\":37978.5610778367,\"107\":104.8815882473,\"108\":38453.2284814906,\"109\":0.057248515,\"110\":0.9400514825,\"111\":22.580330584,\"112\":21.7898063681,\"113\":21.0263969695,\"114\":105.2616405132,\"115\":20.5638973954,\"116\":557.2749244063,\"117\":37959.3496700464,\"118\":106.1644720051,\"119\":106.3260383194,\"120\":0.0558211183,\"121\":542.1682945442,\"122\":0.9379495313,\"123\":104.3332165538,\"124\":531.3590130848,\"125\":20.9199875188,\"126\":529.7496076675,\"127\":38269.0414743111,\"128\":538.9407132478,\"129\":38867.0532823817,\"130\":104.6364526842,\"131\":0.0540482116,\"132\":0.936419844,\"133\":20.7810044705,\"134\":0.0554875093,\"135\":38070.6615046122,\"136\":509.024693062,\"137\":38483.0144575375,\"138\":0.0545878788,\"139\":526.8627430412,\"140\":482.9892635124,\"141\":38051.0491329108,\"142\":38024.8904427889,\"143\":104.9638045474,\"144\":0.0555728366,\"145\":0.9376021088,\"146\":105.5511209182,\"147\":21.9669040461,\"148\":528.0137468009,\"149\":38319.3730031064,\"150\":104.992125846,\"151\":0.0554464923,\"152\":38168.7292002849,\"153\":0.9377544272,\"154\":0.9383182638,\"155\":105.39226359,\"156\":105.644401232,\"157\":38115.4540500413,\"158\":0.9369888771,\"159\":21.1337117696,\"160\":516.8937065447,\"161\":38430.892831462,\"162\":104.2981182267,\"163\":0.0542875073,\"164\":510.5339072013,\"165\":0.9391190867,\"166\":21.5006281831,\"167\":538.0625328887,\"168\":0.0569061281,\"169\":0.0549350575,\"170\":0.0534817876,\"171\":0.9381863204,\"172\":537.8642144819,\"173\":21.0942580202,\"174\":532.3814442831,\"175\":38358.8911870503,\"176\":105.1089699821,\"177\":20.2642912772,\"178\":106.6164134063,\"179\":0.9373052893,\"180\":105.211312051,\"181\":105.3626009177,\"182\":0.0549959134,\"183\":21.2501796829,\"184\":0.9374288622,\"185\":21.0551691993,\"186\":524.0888165839,\"187\":38370.0546203599,\"188\":105.4696969181,\"189\":38203.3842503333,\"190\":20.6615846664,\"191\":105.6657572167,\"192\":0.0539313074,\"193\":0.0540375116,\"194\":0.9380161801,\"195\":21.0569680247,\"196\":105.1307543813,\"197\":0.054048751,\"198\":530.8698427874,\"199\":38644.8477229497,\"200\":530.4065245271,\"201\":0.0566171984,\"202\":104.2223895342,\"203\":0.0557263563,\"204\":104.7181448333,\"205\":0.9384035151,\"206\":21.4537909615,\"207\":0.9355765327,\"208\":539.1674095603,\"209\":0.0567574854,\"210\":39258.5757199842,\"211\":105.1629063871,\"212\":38275.3339322642,\"213\":0.0548467295,\"214\":0.0545725939,\"215\":0.937962734,\"216\":0.9362806215,\"217\":20.7041305066,\"218\":506.1119814293,\"219\":105.1379404925,\"220\":38483.8095366782,\"221\":0.9393987552,\"222\":0.9376853389,\"223\":105.2545607365,\"224\":477.5368180527,\"225\":105.572308549,\"226\":0.9365163813,\"227\":0.0510697187,\"228\":0.9378986258,\"229\":20.89955755,\"230\":533.9904900941,\"231\":38212.7856056812,\"232\":21.0407460535,\"233\":105.3807221551,\"234\":0.0539327293,\"235\":38119.5889161698,\"236\":0.0546101993,\"237\":21.2387307981,\"238\":20.7159567634,\"239\":0.938805435,\"240\":0.9391071562,\"241\":21.52980053,\"242\":547.9563818478,\"243\":38055.4492421815,\"244\":105.1346911794,\"245\":0.0554588099,\"246\":21.7429085278,\"247\":0.9371432675,\"248\":21.1296322288,\"249\":526.3642591909,\"250\":497.16795329,\"251\":21.2657115265,\"252\":38447.102356721,\"253\":106.4847606039,\"254\":105.5409329714,\"255\":0.0567109652,\"256\":0.9370754109,\"257\":507.6750126562,\"258\":511.500098371,\"259\":0.0540205392,\"260\":37938.4744782539,\"261\":21.0608359954,\"262\":0.0553859266,\"263\":0.9379850326,\"264\":522.6523517314,\"265\":38505.375332209,\"266\":105.5534088629,\"267\":0.0554264307,\"268\":104.5856442365,\"269\":0.0549984425,\"270\":0.9371939122,\"271\":20.8862336795,\"272\":0.9385186825,\"273\":528.5209258106,\"274\":37728.0789037874,\"275\":38043.7614696314,\"276\":104.9421653934,\"277\":105.3332669623,\"278\":0.0541540758,\"279\":38291.9381833004,\"280\":0.9385174873,\"281\":0.9367487962,\"282\":0.0538766757,\"283\":20.7924146526,\"284\":504.7006985544,\"285\":489.0665678791,\"286\":38248.5349675273,\"287\":104.8127998201,\"288\":105.2292814143,\"289\":0.0553065851,\"290\":0.0549215739,\"291\":0.9384416163,\"292\":0.0541037773,\"293\":21.2679346166,\"294\":537.8728139162,\"295\":38176.2758879173,\"296\":0.9377815341,\"297\":21.1811920735,\"298\":0.9387477008,\"299\":0.0545766224,\"300\":467.1119339759,\"301\":0.9375300051,\"302\":535.1580719146,\"303\":38317.4964317734,\"304\":104.5190460937,\"305\":0.0571957241,\"306\":0.9376079516,\"307\":0.9363379767,\"308\":20.8732223044,\"309\":510.1076882483,\"310\":20.9615509082,\"311\":0.9393300642,\"312\":21.0995492588,\"313\":21.7165193772,\"314\":37956.4810937051,\"315\":103.7193429832,\"316\":0.054169311,\"317\":38601.1354972046,\"318\":0.9393606969,\"319\":21.7743593051,\"320\":546.5640355537,\"321\":38439.5959883836,\"322\":20.7724017279,\"323\":523.358581337,\"324\":525.5397033903,\"325\":38346.9151411847,\"326\":104.1947966862,\"327\":107.0719128026,\"328\":0.0564402074,\"329\":0.9359267209,\"330\":22.0897940939,\"331\":104.0284850642,\"332\":106.5314060271,\"333\":0.9387831142,\"334\":38595.4227044908,\"335\":527.1153112705,\"336\":21.217467922,\"337\":540.2634593004,\"338\":38439.7411593351,\"339\":0.0533705111,\"340\":105.2410736859,\"341\":0.0543995111,\"342\":0.9387728328,\"343\":0.0555033348,\"344\":21.2911106939,\"345\":538.7717983769,\"346\":0.0532385134,\"347\":0.0551444365,\"348\":38325.9421533161,\"349\":20.6575791947,\"350\":105.1890433492,\"351\":106.21433227,\"352\":38453.5081002566,\"353\":0.0542578117,\"354\":0.9391486064,\"355\":38294.1020935233,\"356\":21.2618872897,\"357\":0.9381532714,\"358\":545.9566169859,\"359\":38255.3217863117,\"360\":105.623813019,\"361\":0.9369674044,\"362\":0.0561246323,\"363\":0.9366441361,\"364\":20.7296217983,\"365\":0.9371548984,\"366\":0.056253682,\"367\":539.8435103917,\"368\":21.3544129852,\"369\":38055.7085664149,\"370\":0.9393487142,\"371\":22.3029549771,\"372\":547.0585822628,\"373\":38205.2652673624,\"374\":106.0524550436,\"375\":20.7114011899,\"376\":0.0550023185,\"377\":0.936424317,\"378\":21.129884781,\"379\":532.2264058044,\"380\":38442.2770274193,\"381\":0.937981269,\"382\":21.3102709685,\"383\":531.4746979941,\"384\":105.4301605378,\"385\":38637.070837955,\"386\":105.5233072802,\"387\":0.0521850153,\"388\":0.9370550332,\"389\":507.3454764777},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":1481983,\"1\":1481983,\"2\":1478873,\"3\":1480310,\"4\":1480218,\"5\":1479019,\"6\":1480310,\"7\":1480310,\"8\":1478983,\"9\":1480576,\"10\":1480576,\"11\":1480524,\"12\":1480576,\"13\":1479939,\"14\":1480576,\"15\":1480576,\"16\":1479981,\"17\":1469191,\"18\":1479939,\"19\":1479019,\"20\":1480576,\"21\":1478905,\"22\":1478905,\"23\":1478905,\"24\":1480190,\"25\":1478905,\"26\":1478983,\"27\":1478905,\"28\":1480524,\"29\":1469191,\"30\":1478905,\"31\":1481988,\"32\":1479513,\"33\":1480512,\"34\":1481988,\"35\":1467130,\"36\":1481988,\"37\":1481988,\"38\":1481988,\"39\":1481988,\"40\":1481427,\"41\":1469191,\"42\":1481427,\"43\":1478983,\"44\":1480524,\"45\":1480359,\"46\":1480190,\"47\":1479119,\"48\":1481427,\"49\":1478787,\"50\":1481427,\"51\":1481427,\"52\":1481427,\"53\":1469191,\"54\":1481677,\"55\":1481677,\"56\":1481677,\"57\":1480190,\"58\":1481677,\"59\":1481677,\"60\":1479119,\"61\":1481677,\"62\":1480524,\"63\":1478787,\"64\":1481096,\"65\":1480585,\"66\":1480349,\"67\":1480349,\"68\":1478570,\"69\":1480349,\"70\":1480349,\"71\":1480349,\"72\":1480349,\"73\":1481018,\"74\":1479833,\"75\":1479833,\"76\":1479833,\"77\":1469062,\"78\":1478787,\"79\":1480585,\"80\":1481096,\"81\":1478787,\"82\":1481096,\"83\":1478787,\"84\":1478787,\"85\":1482047,\"86\":1479119,\"87\":1482047,\"88\":1478135,\"89\":1469062,\"90\":1478983,\"91\":1482047,\"92\":1482047,\"93\":1482047,\"94\":1479833,\"95\":1482047,\"96\":1479802,\"97\":1479802,\"98\":1481096,\"99\":1479119,\"100\":1479802,\"101\":1479619,\"102\":1469062,\"103\":1479802,\"104\":1479802,\"105\":1478135,\"106\":1479802,\"107\":1481331,\"108\":1479833,\"109\":1481331,\"110\":1481331,\"111\":1481331,\"112\":1467130,\"113\":1480190,\"114\":1478135,\"115\":1469062,\"116\":1481331,\"117\":1481331,\"118\":1481018,\"119\":1479458,\"120\":1479458,\"121\":1478135,\"122\":1479458,\"123\":1478570,\"124\":1480190,\"125\":1479458,\"126\":1479458,\"127\":1478584,\"128\":1479119,\"129\":1479458,\"130\":1480308,\"131\":1480308,\"132\":1480308,\"133\":1480308,\"134\":1481018,\"135\":1480190,\"136\":1480308,\"137\":1478135,\"138\":1478570,\"139\":1480973,\"140\":1469062,\"141\":1480308,\"142\":1479119,\"143\":1482037,\"144\":1482037,\"145\":1482037,\"146\":1481018,\"147\":1482037,\"148\":1482037,\"149\":1482037,\"150\":1481302,\"151\":1481302,\"152\":1469062,\"153\":1481018,\"154\":1478570,\"155\":1481695,\"156\":1479513,\"157\":1467130,\"158\":1481302,\"159\":1481302,\"160\":1481302,\"161\":1481302,\"162\":1480359,\"163\":1480359,\"164\":1480218,\"165\":1480359,\"166\":1480359,\"167\":1480359,\"168\":1481018,\"169\":1481695,\"170\":1479513,\"171\":1481695,\"172\":1479513,\"173\":1481695,\"174\":1481695,\"175\":1481695,\"176\":1480683,\"177\":1481983,\"178\":1478584,\"179\":1481018,\"180\":1477999,\"181\":1482892,\"182\":1482892,\"183\":1481018,\"184\":1482892,\"185\":1482892,\"186\":1482892,\"187\":1479513,\"188\":1468547,\"189\":1482892,\"190\":1481018,\"191\":1481848,\"192\":1481848,\"193\":1478584,\"194\":1481848,\"195\":1481848,\"196\":1479981,\"197\":1477999,\"198\":1481848,\"199\":1481848,\"200\":1478570,\"201\":1479939,\"202\":1480933,\"203\":1480933,\"204\":1478983,\"205\":1480933,\"206\":1480933,\"207\":1481983,\"208\":1480933,\"209\":1479981,\"210\":1480933,\"211\":1467843,\"212\":1480585,\"213\":1468547,\"214\":1467843,\"215\":1477999,\"216\":1467843,\"217\":1467843,\"218\":1467843,\"219\":1480218,\"220\":1467843,\"221\":1481096,\"222\":1479981,\"223\":1478873,\"224\":1481018,\"225\":1469031,\"226\":1468547,\"227\":1469031,\"228\":1469031,\"229\":1469031,\"230\":1469031,\"231\":1469031,\"232\":1477999,\"233\":1472260,\"234\":1472260,\"235\":1481018,\"236\":1480218,\"237\":1479981,\"238\":1468547,\"239\":1478584,\"240\":1472260,\"241\":1472260,\"242\":1472260,\"243\":1472260,\"244\":1480973,\"245\":1480973,\"246\":1481096,\"247\":1480973,\"248\":1480973,\"249\":1477999,\"250\":1468547,\"251\":1478584,\"252\":1468547,\"253\":1479619,\"254\":1480860,\"255\":1480860,\"256\":1480860,\"257\":1481172,\"258\":1476856,\"259\":1480585,\"260\":1480218,\"261\":1480860,\"262\":1480683,\"263\":1480218,\"264\":1480860,\"265\":1480860,\"266\":1479951,\"267\":1479619,\"268\":1481203,\"269\":1479951,\"270\":1479951,\"271\":1479951,\"272\":1480585,\"273\":1479951,\"274\":1479951,\"275\":1480973,\"276\":1481172,\"277\":1481569,\"278\":1481569,\"279\":1479981,\"280\":1480683,\"281\":1481569,\"282\":1478135,\"283\":1481569,\"284\":1481569,\"285\":1479939,\"286\":1481569,\"287\":1467130,\"288\":11825590,\"289\":11825590,\"290\":1481203,\"291\":11825590,\"292\":1481172,\"293\":11825590,\"294\":11825590,\"295\":11825590,\"296\":1479619,\"297\":1480683,\"298\":1479513,\"299\":1467130,\"300\":1481983,\"301\":1481203,\"302\":1480683,\"303\":1480683,\"304\":1479726,\"305\":1479726,\"306\":1479726,\"307\":1481172,\"308\":1479726,\"309\":1479726,\"310\":1479619,\"311\":1467130,\"312\":1481203,\"313\":1480585,\"314\":1479726,\"315\":1478014,\"316\":1478014,\"317\":1481983,\"318\":1478014,\"319\":1478014,\"320\":1478014,\"321\":1478014,\"322\":1481172,\"323\":1481203,\"324\":1481018,\"325\":1481203,\"326\":1479019,\"327\":1478485,\"328\":1478485,\"329\":1479939,\"330\":1479833,\"331\":1469191,\"332\":1480512,\"333\":1478485,\"334\":1481172,\"335\":1479619,\"336\":1478485,\"337\":1478485,\"338\":1478485,\"339\":1479019,\"340\":1479278,\"341\":1479278,\"342\":1479278,\"343\":1469191,\"344\":1479278,\"345\":1479278,\"346\":1478873,\"347\":1480512,\"348\":1479278,\"349\":1479939,\"350\":1478481,\"351\":1480561,\"352\":1478570,\"353\":1480561,\"354\":1480561,\"355\":1480524,\"356\":1480561,\"357\":1478873,\"358\":1480561,\"359\":1480561,\"360\":1476856,\"361\":1480512,\"362\":1476856,\"363\":1476856,\"364\":1476856,\"365\":1479019,\"366\":1478481,\"367\":1478584,\"368\":1478873,\"369\":1476856,\"370\":1478481,\"371\":1478481,\"372\":1478481,\"373\":1478481,\"374\":1477265,\"375\":1480512,\"376\":1477265,\"377\":1478983,\"378\":1479019,\"379\":1478873,\"380\":1477999,\"381\":1477265,\"382\":1477265,\"383\":1477265,\"384\":1480524,\"385\":1477265,\"386\":1480310,\"387\":1480310,\"388\":1480310,\"389\":1480512},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.6438783831,\"1\":0.0013165743,\"2\":283.7723847434,\"3\":0.0809140685,\"4\":0.0811411149,\"5\":3.0642047952,\"6\":3.1059965213,\"7\":282.8720052837,\"8\":0.0797522203,\"9\":0.6496813829,\"10\":0.001212866,\"11\":0.0012595912,\"12\":0.0003098182,\"13\":0.6447858935,\"14\":0.0788658132,\"15\":2.7428774802,\"16\":3.1856317874,\"17\":0.0002911616,\"18\":286.3947593292,\"19\":283.1680736661,\"20\":281.2743734519,\"21\":0.6479318224,\"22\":0.0012540285,\"23\":0.0002907722,\"24\":0.648257544,\"25\":0.0813509598,\"26\":2.960039117,\"27\":3.3887646921,\"28\":0.0003184253,\"29\":0.0928064209,\"30\":286.6654931808,\"31\":0.6369141637,\"32\":0.080884216,\"33\":277.8300120803,\"34\":0.0012550992,\"35\":3.3648583992,\"36\":0.0002908116,\"37\":0.0839173129,\"38\":3.4043069237,\"39\":277.0711970686,\"40\":0.6399438419,\"41\":3.4722073554,\"42\":0.0012832591,\"43\":288.3566750293,\"44\":0.0822475278,\"45\":282.2402798037,\"46\":0.0012855621,\"47\":0.64261778,\"48\":0.0003015461,\"49\":0.6480361782,\"50\":0.0809169857,\"51\":3.2014458683,\"52\":278.4346008441,\"53\":286.0972144661,\"54\":0.6549631657,\"55\":0.0012637703,\"56\":0.0002913484,\"57\":0.0002974362,\"58\":0.0794328098,\"59\":3.2776977894,\"60\":0.0011822577,\"61\":284.6174148954,\"62\":3.2845471921,\"63\":0.0013062405,\"64\":0.6504554673,\"65\":0.6465844814,\"66\":0.6448982132,\"67\":0.0011963874,\"68\":0.0806785916,\"69\":0.0002846951,\"70\":0.0817873792,\"71\":3.300185453,\"72\":283.2024860454,\"73\":276.5419182419,\"74\":0.6380372589,\"75\":0.0012628273,\"76\":0.0003044162,\"77\":0.6512173951,\"78\":0.0003015343,\"79\":3.2666004137,\"80\":0.0012987526,\"81\":0.078364983,\"82\":3.3693976309,\"83\":3.0574206814,\"84\":286.2965815835,\"85\":0.6447556567,\"86\":0.000288794,\"87\":0.0012716809,\"88\":0.0002933589,\"89\":0.0013364411,\"90\":0.001235421,\"91\":0.0002983727,\"92\":0.0819031598,\"93\":3.115313898,\"94\":3.2699763775,\"95\":285.9775844343,\"96\":0.6428251902,\"97\":0.0012293667,\"98\":279.1069509759,\"99\":0.081922531,\"100\":0.0003056654,\"101\":286.6083751636,\"102\":0.0003044537,\"103\":0.0799137947,\"104\":3.162627227,\"105\":0.0797707668,\"106\":280.6193946417,\"107\":0.6478216724,\"108\":282.0939719039,\"109\":0.0013351494,\"110\":0.0002868228,\"111\":0.0887555675,\"112\":0.0827505804,\"113\":0.079642608,\"114\":0.6481445772,\"115\":0.0798213142,\"116\":3.421934122,\"117\":279.5055938477,\"118\":0.6555349423,\"119\":0.6522903708,\"120\":0.0012401523,\"121\":3.2794823102,\"122\":0.0003004482,\"123\":0.6395857527,\"124\":3.2007952522,\"125\":0.080191765,\"126\":3.1660465211,\"127\":285.6793437753,\"128\":3.2542402464,\"129\":287.22088276,\"130\":0.6454789531,\"131\":0.001247708,\"132\":0.0003251488,\"133\":0.0805126392,\"134\":0.0012910856,\"135\":281.2317319543,\"136\":3.0582145471,\"137\":283.7932343887,\"138\":0.0012182823,\"139\":3.1827660245,\"140\":2.9105989278,\"141\":283.053191502,\"142\":282.3119166468,\"143\":0.6473938384,\"144\":0.0012776994,\"145\":0.0003142524,\"146\":0.6501908763,\"147\":0.0849416926,\"148\":3.1969989571,\"149\":286.5599255105,\"150\":0.6405644596,\"151\":0.0012511419,\"152\":280.2900996286,\"153\":0.0003138512,\"154\":0.0003172899,\"155\":0.6513139382,\"156\":0.6506230846,\"157\":278.5189104104,\"158\":0.0003051889,\"159\":0.0792286791,\"160\":3.1052026703,\"161\":277.9431899637,\"162\":0.6382085604,\"163\":0.0012654424,\"164\":3.0549719441,\"165\":0.0003014566,\"166\":0.0826723617,\"167\":3.2378828313,\"168\":0.0012525566,\"169\":0.0012357338,\"170\":0.0012331696,\"171\":0.0002882185,\"172\":3.2191689492,\"173\":0.0805274051,\"174\":3.1912893944,\"175\":282.9706434302,\"176\":0.6483727137,\"177\":0.0798427722,\"178\":0.6526885478,\"179\":0.0003074522,\"180\":0.6470059999,\"181\":0.6446593929,\"182\":0.0012781153,\"183\":0.0824241367,\"184\":0.0003063617,\"185\":0.0796455216,\"186\":3.1060971969,\"187\":282.2633428389,\"188\":0.651775473,\"189\":278.6398068411,\"190\":0.0795283044,\"191\":0.6481339031,\"192\":0.0012343887,\"193\":0.0012008368,\"194\":0.0002895019,\"195\":0.0810703243,\"196\":0.6471987737,\"197\":0.0012432457,\"198\":3.185534023,\"199\":284.20541277,\"200\":3.2403354798,\"201\":0.0013149893,\"202\":0.6399200991,\"203\":0.0012391745,\"204\":0.6462932217,\"205\":0.0003130787,\"206\":0.0826486767,\"207\":0.0003133031,\"208\":3.2584805342,\"209\":0.0013265749,\"210\":290.9337313187,\"211\":0.6457742969,\"212\":282.0143063207,\"213\":0.0012688817,\"214\":0.0012610256,\"215\":0.000295251,\"216\":0.0003176392,\"217\":0.0791318708,\"218\":3.0197626234,\"219\":0.6498362462,\"220\":287.1380947149,\"221\":0.0002889531,\"222\":0.0003109648,\"223\":0.6467427093,\"224\":2.8488151095,\"225\":0.6564496166,\"226\":0.0003075024,\"227\":0.0011462634,\"228\":0.0002976949,\"229\":0.0812672394,\"230\":3.2484257029,\"231\":287.6922388307,\"232\":0.0807687757,\"233\":0.6456571635,\"234\":0.0012164398,\"235\":280.0213278868,\"236\":0.0012649086,\"237\":0.0800357054,\"238\":0.0801967677,\"239\":0.0002878186,\"240\":0.0002862892,\"241\":0.0821513165,\"242\":3.3144326642,\"243\":283.1844435894,\"244\":0.6452097675,\"245\":0.0012326041,\"246\":0.0812237913,\"247\":0.0003227272,\"248\":0.0799957173,\"249\":3.1689279219,\"250\":2.9764309392,\"251\":0.0802257419,\"252\":282.9674655793,\"253\":0.6528350015,\"254\":0.6493101072,\"255\":0.0012394347,\"256\":0.0003106276,\"257\":3.0223129529,\"258\":3.0563413868,\"259\":0.0012181699,\"260\":272.4768897764,\"261\":0.0806877559,\"262\":0.0012573883,\"263\":0.000307409,\"264\":3.1349595067,\"265\":286.3012845933,\"266\":0.6514522829,\"267\":0.0012749353,\"268\":0.6420484326,\"269\":0.0012295415,\"270\":0.0003020993,\"271\":0.0801177728,\"272\":0.000335402,\"273\":3.1930796575,\"274\":273.9303739105,\"275\":281.3138986826,\"276\":0.6485957151,\"277\":0.6480295742,\"278\":0.0012529199,\"279\":285.7058094397,\"280\":0.0002974581,\"281\":0.0003003918,\"282\":0.0012488136,\"283\":0.0803990426,\"284\":3.0163311113,\"285\":2.9553845083,\"286\":282.6912397022,\"287\":0.6526255067,\"288\":0.2288291887,\"289\":0.000447223,\"290\":0.0012837262,\"291\":0.0001070233,\"292\":0.0011984298,\"293\":0.0285642775,\"294\":1.1501723589,\"295\":99.9722636227,\"296\":0.0003274158,\"297\":0.0799998335,\"298\":0.0003164621,\"299\":0.0012782802,\"300\":2.7995591693,\"301\":0.0003135666,\"302\":3.2319682231,\"303\":285.746698147,\"304\":0.6393158965,\"305\":0.0013272597,\"306\":0.0003076867,\"307\":0.0003029876,\"308\":0.07911946,\"309\":3.1004932527,\"310\":0.0797741084,\"311\":0.0002955348,\"312\":0.0804520976,\"313\":0.0821882124,\"314\":280.5440921102,\"315\":0.6344001155,\"316\":0.0012173422,\"317\":287.0395690212,\"318\":0.0003101611,\"319\":0.0841571171,\"320\":3.3568274275,\"321\":282.6519114376,\"322\":0.0810040297,\"323\":3.1731804451,\"324\":3.1348533146,\"325\":279.3436617869,\"326\":0.6390040261,\"327\":0.6595613981,\"328\":0.0012877196,\"329\":0.0003236822,\"330\":0.0862643523,\"331\":0.6459219559,\"332\":0.6541037887,\"333\":0.0002988969,\"334\":285.586505789,\"335\":3.1562903205,\"336\":0.0801927661,\"337\":3.2777099724,\"338\":283.5107544467,\"339\":0.0012237639,\"340\":0.6467182059,\"341\":0.0012474857,\"342\":0.0002935751,\"343\":0.0013152073,\"344\":0.0814928069,\"345\":3.2420798692,\"346\":0.0012194474,\"347\":0.0012615272,\"348\":283.8023615777,\"349\":0.0798661205,\"350\":0.6474421068,\"351\":0.6498041005,\"352\":287.9895598548,\"353\":0.0012305226,\"354\":0.0002902185,\"355\":282.141818891,\"356\":0.081458047,\"357\":0.0003004984,\"358\":3.3095076055,\"359\":281.5563591185,\"360\":0.6490310218,\"361\":0.0003006316,\"362\":0.0012955655,\"363\":0.0003024574,\"364\":0.0791228977,\"365\":0.0002959996,\"366\":0.0012987164,\"367\":3.2438667924,\"368\":0.0808244668,\"369\":277.7351410664,\"370\":0.0002919429,\"371\":0.0862718544,\"372\":3.3148940661,\"373\":282.8312089163,\"374\":0.6533251689,\"375\":0.0792092374,\"376\":0.0012809473,\"377\":0.0002954293,\"378\":0.0821675973,\"379\":3.2167787791,\"380\":282.5393171893,\"381\":0.0003057554,\"382\":0.0813591895,\"383\":3.2199858614,\"384\":0.649326425,\"385\":289.9387108706,\"386\":0.6486911575,\"387\":0.0012028984,\"388\":0.000303618,\"389\":3.0483049574},\"start_time\":{\"0\":1553817600000,\"1\":1553817600000,\"2\":1553817600000,\"3\":1553817600000,\"4\":1553817600000,\"5\":1553817600000,\"6\":1553817600000,\"7\":1553817600000,\"8\":1553817600000,\"9\":1553817600000,\"10\":1553817600000,\"11\":1553817600000,\"12\":1553817600000,\"13\":1553817600000,\"14\":1553817600000,\"15\":1553817600000,\"16\":1553817600000,\"17\":1553817600000,\"18\":1553817600000,\"19\":1553817600000,\"20\":1553817600000,\"21\":1553817600000,\"22\":1553817600000,\"23\":1553817600000,\"24\":1553817600000,\"25\":1553817600000,\"26\":1553817600000,\"27\":1553817600000,\"28\":1553817600000,\"29\":1553817600000,\"30\":1553817600000,\"31\":1553817600000,\"32\":1553817600000,\"33\":1553817600000,\"34\":1553817600000,\"35\":1553817600000,\"36\":1553817600000,\"37\":1553817600000,\"38\":1553817600000,\"39\":1553817600000,\"40\":1553817600000,\"41\":1553817600000,\"42\":1553817600000,\"43\":1553817600000,\"44\":1553817600000,\"45\":1553817600000,\"46\":1553817600000,\"47\":1553817600000,\"48\":1553817600000,\"49\":1553817600000,\"50\":1553817600000,\"51\":1553817600000,\"52\":1553817600000,\"53\":1553817600000,\"54\":1553817600000,\"55\":1553817600000,\"56\":1553817600000,\"57\":1553817600000,\"58\":1553817600000,\"59\":1553817600000,\"60\":1553817600000,\"61\":1553817600000,\"62\":1553817600000,\"63\":1553817600000,\"64\":1553817600000,\"65\":1553817600000,\"66\":1553817600000,\"67\":1553817600000,\"68\":1553817600000,\"69\":1553817600000,\"70\":1553817600000,\"71\":1553817600000,\"72\":1553817600000,\"73\":1553817600000,\"74\":1553817600000,\"75\":1553817600000,\"76\":1553817600000,\"77\":1553817600000,\"78\":1553817600000,\"79\":1553817600000,\"80\":1553817600000,\"81\":1553817600000,\"82\":1553817600000,\"83\":1553817600000,\"84\":1553817600000,\"85\":1553817600000,\"86\":1553817600000,\"87\":1553817600000,\"88\":1553817600000,\"89\":1553817600000,\"90\":1553817600000,\"91\":1553817600000,\"92\":1553817600000,\"93\":1553817600000,\"94\":1553817600000,\"95\":1553817600000,\"96\":1553817600000,\"97\":1553817600000,\"98\":1553817600000,\"99\":1553817600000,\"100\":1553817600000,\"101\":1553817600000,\"102\":1553817600000,\"103\":1553817600000,\"104\":1553817600000,\"105\":1553817600000,\"106\":1553817600000,\"107\":1553817600000,\"108\":1553817600000,\"109\":1553817600000,\"110\":1553817600000,\"111\":1553817600000,\"112\":1553817600000,\"113\":1553817600000,\"114\":1553817600000,\"115\":1553817600000,\"116\":1553817600000,\"117\":1553817600000,\"118\":1553817600000,\"119\":1553817600000,\"120\":1553817600000,\"121\":1553817600000,\"122\":1553817600000,\"123\":1553817600000,\"124\":1553817600000,\"125\":1553817600000,\"126\":1553817600000,\"127\":1553817600000,\"128\":1553817600000,\"129\":1553817600000,\"130\":1553817600000,\"131\":1553817600000,\"132\":1553817600000,\"133\":1553817600000,\"134\":1553817600000,\"135\":1553817600000,\"136\":1553817600000,\"137\":1553817600000,\"138\":1553817600000,\"139\":1553817600000,\"140\":1553817600000,\"141\":1553817600000,\"142\":1553817600000,\"143\":1553817600000,\"144\":1553817600000,\"145\":1553817600000,\"146\":1553817600000,\"147\":1553817600000,\"148\":1553817600000,\"149\":1553817600000,\"150\":1553817600000,\"151\":1553817600000,\"152\":1553817600000,\"153\":1553817600000,\"154\":1553817600000,\"155\":1553817600000,\"156\":1553817600000,\"157\":1553817600000,\"158\":1553817600000,\"159\":1553817600000,\"160\":1553817600000,\"161\":1553817600000,\"162\":1553817600000,\"163\":1553817600000,\"164\":1553817600000,\"165\":1553817600000,\"166\":1553817600000,\"167\":1553817600000,\"168\":1553817600000,\"169\":1553817600000,\"170\":1553817600000,\"171\":1553817600000,\"172\":1553817600000,\"173\":1553817600000,\"174\":1553817600000,\"175\":1553817600000,\"176\":1553817600000,\"177\":1553817600000,\"178\":1553817600000,\"179\":1553817600000,\"180\":1553817600000,\"181\":1553817600000,\"182\":1553817600000,\"183\":1553817600000,\"184\":1553817600000,\"185\":1553817600000,\"186\":1553817600000,\"187\":1553817600000,\"188\":1553817600000,\"189\":1553817600000,\"190\":1553817600000,\"191\":1553817600000,\"192\":1553817600000,\"193\":1553817600000,\"194\":1553817600000,\"195\":1553817600000,\"196\":1553817600000,\"197\":1553817600000,\"198\":1553817600000,\"199\":1553817600000,\"200\":1553817600000,\"201\":1553817600000,\"202\":1553817600000,\"203\":1553817600000,\"204\":1553817600000,\"205\":1553817600000,\"206\":1553817600000,\"207\":1553817600000,\"208\":1553817600000,\"209\":1553817600000,\"210\":1553817600000,\"211\":1553817600000,\"212\":1553817600000,\"213\":1553817600000,\"214\":1553817600000,\"215\":1553817600000,\"216\":1553817600000,\"217\":1553817600000,\"218\":1553817600000,\"219\":1553817600000,\"220\":1553817600000,\"221\":1553817600000,\"222\":1553817600000,\"223\":1553817600000,\"224\":1553817600000,\"225\":1553817600000,\"226\":1553817600000,\"227\":1553817600000,\"228\":1553817600000,\"229\":1553817600000,\"230\":1553817600000,\"231\":1553817600000,\"232\":1553817600000,\"233\":1553817600000,\"234\":1553817600000,\"235\":1553817600000,\"236\":1553817600000,\"237\":1553817600000,\"238\":1553817600000,\"239\":1553817600000,\"240\":1553817600000,\"241\":1553817600000,\"242\":1553817600000,\"243\":1553817600000,\"244\":1553817600000,\"245\":1553817600000,\"246\":1553817600000,\"247\":1553817600000,\"248\":1553817600000,\"249\":1553817600000,\"250\":1553817600000,\"251\":1553817600000,\"252\":1553817600000,\"253\":1553817600000,\"254\":1553817600000,\"255\":1553817600000,\"256\":1553817600000,\"257\":1553817600000,\"258\":1553817600000,\"259\":1553817600000,\"260\":1553817600000,\"261\":1553817600000,\"262\":1553817600000,\"263\":1553817600000,\"264\":1553817600000,\"265\":1553817600000,\"266\":1553817600000,\"267\":1553817600000,\"268\":1553817600000,\"269\":1553817600000,\"270\":1553817600000,\"271\":1553817600000,\"272\":1553817600000,\"273\":1553817600000,\"274\":1553817600000,\"275\":1553817600000,\"276\":1553817600000,\"277\":1553817600000,\"278\":1553817600000,\"279\":1553817600000,\"280\":1553817600000,\"281\":1553817600000,\"282\":1553817600000,\"283\":1553817600000,\"284\":1553817600000,\"285\":1553817600000,\"286\":1553817600000,\"287\":1553817600000,\"288\":1553817600000,\"289\":1553817600000,\"290\":1553817600000,\"291\":1553817600000,\"292\":1553817600000,\"293\":1553817600000,\"294\":1553817600000,\"295\":1553817600000,\"296\":1553817600000,\"297\":1553817600000,\"298\":1553817600000,\"299\":1553817600000,\"300\":1553817600000,\"301\":1553817600000,\"302\":1553817600000,\"303\":1553817600000,\"304\":1553817600000,\"305\":1553817600000,\"306\":1553817600000,\"307\":1553817600000,\"308\":1553817600000,\"309\":1553817600000,\"310\":1553817600000,\"311\":1553817600000,\"312\":1553817600000,\"313\":1553817600000,\"314\":1553817600000,\"315\":1553817600000,\"316\":1553817600000,\"317\":1553817600000,\"318\":1553817600000,\"319\":1553817600000,\"320\":1553817600000,\"321\":1553817600000,\"322\":1553817600000,\"323\":1553817600000,\"324\":1553817600000,\"325\":1553817600000,\"326\":1553817600000,\"327\":1553817600000,\"328\":1553817600000,\"329\":1553817600000,\"330\":1553817600000,\"331\":1553817600000,\"332\":1553817600000,\"333\":1553817600000,\"334\":1553817600000,\"335\":1553817600000,\"336\":1553817600000,\"337\":1553817600000,\"338\":1553817600000,\"339\":1553817600000,\"340\":1553817600000,\"341\":1553817600000,\"342\":1553817600000,\"343\":1553817600000,\"344\":1553817600000,\"345\":1553817600000,\"346\":1553817600000,\"347\":1553817600000,\"348\":1553817600000,\"349\":1553817600000,\"350\":1553817600000,\"351\":1553817600000,\"352\":1553817600000,\"353\":1553817600000,\"354\":1553817600000,\"355\":1553817600000,\"356\":1553817600000,\"357\":1553817600000,\"358\":1553817600000,\"359\":1553817600000,\"360\":1553817600000,\"361\":1553817600000,\"362\":1553817600000,\"363\":1553817600000,\"364\":1553817600000,\"365\":1553817600000,\"366\":1553817600000,\"367\":1553817600000,\"368\":1553817600000,\"369\":1553817600000,\"370\":1553817600000,\"371\":1553817600000,\"372\":1553817600000,\"373\":1553817600000,\"374\":1553817600000,\"375\":1553817600000,\"376\":1553817600000,\"377\":1553817600000,\"378\":1553817600000,\"379\":1553817600000,\"380\":1553817600000,\"381\":1553817600000,\"382\":1553817600000,\"383\":1553817600000,\"384\":1553817600000,\"385\":1553817600000,\"386\":1553817600000,\"387\":1553817600000,\"388\":1553817600000,\"389\":1553817600000}}"},"description":null}],[1556078905244,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1554163200000,\"1\":1554163200000,\"2\":1554163200000,\"3\":1554163200000,\"4\":1554163200000,\"5\":1554163200000,\"6\":1554163200000,\"7\":1554163200000,\"8\":1554163200000,\"9\":1554163200000,\"10\":1554163200000,\"11\":1554163200000,\"12\":1554163200000,\"13\":1554163200000,\"14\":1554163200000,\"15\":1554163200000,\"16\":1554163200000,\"17\":1554163200000,\"18\":1554163200000,\"19\":1554163200000,\"20\":1554163200000,\"21\":1554163200000,\"22\":1554163200000,\"23\":1554163200000,\"24\":1554163200000,\"25\":1554163200000,\"26\":1554163200000,\"27\":1554163200000,\"28\":1554163200000,\"29\":1554163200000,\"30\":1554163200000,\"31\":1554163200000,\"32\":1554163200000,\"33\":1554163200000,\"34\":1554163200000,\"35\":1554163200000,\"36\":1554163200000,\"37\":1554163200000,\"38\":1554163200000,\"39\":1554163200000,\"40\":1554163200000,\"41\":1554163200000,\"42\":1554163200000,\"43\":1554163200000,\"44\":1554163200000,\"45\":1554163200000,\"46\":1554163200000,\"47\":1554163200000,\"48\":1554163200000,\"49\":1554163200000,\"50\":1554163200000,\"51\":1554163200000,\"52\":1554163200000,\"53\":1554163200000,\"54\":1554163200000,\"55\":1554163200000,\"56\":1554163200000,\"57\":1554163200000,\"58\":1554163200000,\"59\":1554163200000,\"60\":1554163200000,\"61\":1554163200000,\"62\":1554163200000,\"63\":1554163200000,\"64\":1554163200000,\"65\":1554163200000,\"66\":1554163200000,\"67\":1554163200000,\"68\":1554163200000,\"69\":1554163200000,\"70\":1554163200000,\"71\":1554163200000,\"72\":1554163200000,\"73\":1554163200000,\"74\":1554163200000,\"75\":1554163200000,\"76\":1554163200000,\"77\":1554163200000,\"78\":1554163200000,\"79\":1554163200000,\"80\":1554163200000,\"81\":1554163200000,\"82\":1554163200000,\"83\":1554163200000,\"84\":1554163200000,\"85\":1554163200000,\"86\":1554163200000,\"87\":1554163200000,\"88\":1554163200000,\"89\":1554163200000,\"90\":1554163200000,\"91\":1554163200000,\"92\":1554163200000,\"93\":1554163200000,\"94\":1554163200000,\"95\":1554163200000,\"96\":1554163200000,\"97\":1554163200000,\"98\":1554163200000,\"99\":1554163200000,\"100\":1554163200000,\"101\":1554163200000,\"102\":1554163200000,\"103\":1554163200000,\"104\":1554163200000,\"105\":1554163200000,\"106\":1554163200000,\"107\":1554163200000,\"108\":1554163200000,\"109\":1554163200000,\"110\":1554163200000,\"111\":1554163200000,\"112\":1554163200000,\"113\":1554163200000,\"114\":1554163200000,\"115\":1554163200000,\"116\":1554163200000,\"117\":1554163200000,\"118\":1554163200000,\"119\":1554163200000,\"120\":1554163200000,\"121\":1554163200000,\"122\":1554163200000,\"123\":1554163200000,\"124\":1554163200000,\"125\":1554163200000,\"126\":1554163200000,\"127\":1554163200000,\"128\":1554163200000,\"129\":1554163200000,\"130\":1554163200000,\"131\":1554163200000,\"132\":1554163200000,\"133\":1554163200000,\"134\":1554163200000,\"135\":1554163200000,\"136\":1554163200000,\"137\":1554163200000,\"138\":1554163200000,\"139\":1554163200000,\"140\":1554163200000,\"141\":1554163200000,\"142\":1554163200000,\"143\":1554163200000,\"144\":1554163200000,\"145\":1554163200000,\"146\":1554163200000,\"147\":1554163200000,\"148\":1554163200000,\"149\":1554163200000,\"150\":1554163200000,\"151\":1554163200000,\"152\":1554163200000,\"153\":1554163200000,\"154\":1554163200000,\"155\":1554163200000,\"156\":1554163200000,\"157\":1554163200000,\"158\":1554163200000,\"159\":1554163200000,\"160\":1554163200000,\"161\":1554163200000,\"162\":1554163200000,\"163\":1554163200000,\"164\":1554163200000,\"165\":1554163200000,\"166\":1554163200000,\"167\":1554163200000,\"168\":1554163200000,\"169\":1554163200000,\"170\":1554163200000,\"171\":1554163200000,\"172\":1554163200000,\"173\":1554163200000,\"174\":1554163200000,\"175\":1554163200000,\"176\":1554163200000,\"177\":1554163200000,\"178\":1554163200000,\"179\":1554163200000,\"180\":1554163200000,\"181\":1554163200000,\"182\":1554163200000,\"183\":1554163200000,\"184\":1554163200000,\"185\":1554163200000,\"186\":1554163200000,\"187\":1554163200000,\"188\":1554163200000,\"189\":1554163200000,\"190\":1554163200000,\"191\":1554163200000,\"192\":1554163200000,\"193\":1554163200000,\"194\":1554163200000,\"195\":1554163200000,\"196\":1554163200000,\"197\":1554163200000,\"198\":1554163200000,\"199\":1554163200000,\"200\":1554163200000,\"201\":1554163200000,\"202\":1554163200000,\"203\":1554163200000,\"204\":1554163200000,\"205\":1554163200000,\"206\":1554163200000,\"207\":1554163200000,\"208\":1554163200000,\"209\":1554163200000,\"210\":1554163200000,\"211\":1554163200000,\"212\":1554163200000,\"213\":1554163200000,\"214\":1554163200000,\"215\":1554163200000,\"216\":1554163200000,\"217\":1554163200000,\"218\":1554163200000,\"219\":1554163200000,\"220\":1554163200000,\"221\":1554163200000,\"222\":1554163200000,\"223\":1554163200000,\"224\":1554163200000,\"225\":1554163200000,\"226\":1554163200000,\"227\":1554163200000,\"228\":1554163200000,\"229\":1554163200000,\"230\":1554163200000,\"231\":1554163200000,\"232\":1554163200000,\"233\":1554163200000,\"234\":1554163200000,\"235\":1554163200000,\"236\":1554163200000,\"237\":1554163200000,\"238\":1554163200000,\"239\":1554163200000,\"240\":1554163200000,\"241\":1554163200000,\"242\":1554163200000,\"243\":1554163200000,\"244\":1554163200000,\"245\":1554163200000,\"246\":1554163200000,\"247\":1554163200000,\"248\":1554163200000,\"249\":1554163200000,\"250\":1554163200000,\"251\":1554163200000,\"252\":1554163200000,\"253\":1554163200000,\"254\":1554163200000,\"255\":1554163200000,\"256\":1554163200000,\"257\":1554163200000,\"258\":1554163200000,\"259\":1554163200000,\"260\":1554163200000,\"261\":1554163200000,\"262\":1554163200000,\"263\":1554163200000,\"264\":1554163200000,\"265\":1554163200000,\"266\":1554163200000,\"267\":1554163200000,\"268\":1554163200000,\"269\":1554163200000,\"270\":1554163200000,\"271\":1554163200000,\"272\":1554163200000,\"273\":1554163200000,\"274\":1554163200000,\"275\":1554163200000,\"276\":1554163200000,\"277\":1554163200000,\"278\":1554163200000,\"279\":1554163200000,\"280\":1554163200000,\"281\":1554163200000,\"282\":1554163200000,\"283\":1554163200000,\"284\":1554163200000,\"285\":1554163200000,\"286\":1554163200000,\"287\":1554163200000,\"288\":1554163200000,\"289\":1554163200000,\"290\":1554163200000,\"291\":1554163200000,\"292\":1554163200000,\"293\":1554163200000,\"294\":1554163200000,\"295\":1554163200000,\"296\":1554163200000,\"297\":1554163200000,\"298\":1554163200000,\"299\":1554163200000,\"300\":1554163200000,\"301\":1554163200000,\"302\":1554163200000,\"303\":1554163200000,\"304\":1554163200000,\"305\":1554163200000,\"306\":1554163200000,\"307\":1554163200000,\"308\":1554163200000,\"309\":1554163200000,\"310\":1554163200000,\"311\":1554163200000,\"312\":1554163200000,\"313\":1554163200000,\"314\":1554163200000,\"315\":1554163200000,\"316\":1554163200000,\"317\":1554163200000,\"318\":1554163200000,\"319\":1554163200000,\"320\":1554163200000,\"321\":1554163200000,\"322\":1554163200000,\"323\":1554163200000,\"324\":1554163200000,\"325\":1554163200000,\"326\":1554163200000,\"327\":1554163200000,\"328\":1554163200000,\"329\":1554163200000,\"330\":1554163200000,\"331\":1554163200000,\"332\":1554163200000,\"333\":1554163200000,\"334\":1554163200000,\"335\":1554163200000,\"336\":1554163200000,\"337\":1554163200000,\"338\":1554163200000,\"339\":1554163200000,\"340\":1554163200000,\"341\":1554163200000,\"342\":1554163200000,\"343\":1554163200000,\"344\":1554163200000,\"345\":1554163200000,\"346\":1554163200000,\"347\":1554163200000,\"348\":1554163200000,\"349\":1554163200000,\"350\":1554163200000,\"351\":1554163200000,\"352\":1554163200000,\"353\":1554163200000,\"354\":1554163200000,\"355\":1554163200000,\"356\":1554163200000,\"357\":1554163200000,\"358\":1554163200000,\"359\":1554163200000,\"360\":1554163200000,\"361\":1554163200000,\"362\":1554163200000,\"363\":1554163200000,\"364\":1554163200000,\"365\":1554163200000,\"366\":1554163200000,\"367\":1554163200000,\"368\":1554163200000,\"369\":1554163200000,\"370\":1554163200000,\"371\":1554163200000,\"372\":1554163200000,\"373\":1554163200000,\"374\":1554163200000,\"375\":1554163200000,\"376\":1554163200000,\"377\":1554163200000,\"378\":1554163200000,\"379\":1554163200000,\"380\":1554163200000,\"381\":1554163200000,\"382\":1554163200000,\"383\":1554163200000,\"384\":1554163200000,\"385\":1554163200000,\"386\":1554163200000,\"387\":1554163200000,\"388\":1554163200000,\"389\":1554163200000},\"frac_nonnull\":{\"0\":0.4154643104,\"1\":0.0157497091,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.4158893879,\"10\":0.0158745795,\"11\":0.0158136892,\"12\":1.0,\"13\":0.4153797106,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.415123633,\"22\":0.0156570592,\"23\":1.0,\"24\":0.4158009049,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.4159476931,\"32\":1.0,\"33\":1.0,\"34\":0.0158543338,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.4153439477,\"41\":1.0,\"42\":0.0157200495,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0156771632,\"47\":0.4154609372,\"48\":1.0,\"49\":0.4160217185,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.4160560167,\"55\":0.0156089077,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0158216726,\"61\":1.0,\"62\":1.0,\"63\":0.0156645164,\"64\":0.4159383494,\"65\":0.4154913378,\"66\":0.4158105334,\"67\":0.0156342709,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.4156722663,\"75\":0.0157705137,\"76\":1.0,\"77\":0.4153603815,\"78\":1.0,\"79\":1.0,\"80\":0.0156650734,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.415358932,\"86\":1.0,\"87\":0.0156979648,\"88\":1.0,\"89\":0.015800088,\"90\":0.0156977681,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.4153695539,\"97\":0.0157045657,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.4157742498,\"108\":1.0,\"109\":0.0156284317,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.4147051557,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.4153955045,\"119\":0.4156779978,\"120\":0.0156751614,\"121\":1.0,\"122\":1.0,\"123\":0.4154603674,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.4153133476,\"131\":0.0157140924,\"132\":1.0,\"133\":1.0,\"134\":0.0155456932,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.015706239,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.4159152713,\"144\":0.0157234668,\"145\":1.0,\"146\":0.415144528,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.4155306684,\"151\":0.0156146368,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.415354446,\"156\":0.4165743527,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.415530683,\"163\":0.0157572033,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.015905168,\"169\":0.0157247585,\"170\":0.0157879533,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.4155767273,\"177\":1.0,\"178\":0.4150010546,\"179\":1.0,\"180\":0.4149944728,\"181\":0.4152803664,\"182\":0.0156097856,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.4152182187,\"189\":1.0,\"190\":1.0,\"191\":0.415453151,\"192\":0.0156292058,\"193\":0.0156250504,\"194\":1.0,\"195\":1.0,\"196\":0.4154759173,\"197\":0.0156581232,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.0155825921,\"202\":0.4156594343,\"203\":0.0159033984,\"204\":0.4149813314,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.0157360687,\"210\":1.0,\"211\":0.4155302772,\"212\":1.0,\"213\":0.01561609,\"214\":0.0156277516,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.4152856203,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.4165761487,\"224\":1.0,\"225\":0.4154777185,\"226\":1.0,\"227\":0.0158470148,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.4156726262,\"234\":0.0156498213,\"235\":1.0,\"236\":0.0155815151,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.4158850332,\"245\":0.0157911213,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.4153813616,\"254\":0.415369485,\"255\":0.0158006158,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.0156110561,\"260\":1.0,\"261\":1.0,\"262\":0.0156804391,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.4155856378,\"267\":0.0156835158,\"268\":0.4155262492,\"269\":0.0157485898,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.4154036329,\"277\":0.4149617196,\"278\":0.015815744,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0155761833,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.4150598662,\"288\":0.4154730278,\"289\":0.0157223623,\"290\":0.0157566617,\"291\":1.0,\"292\":0.0156704434,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.0156261273,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.415438852,\"305\":0.0156534685,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.415392558,\"316\":0.0157739517,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.415639259,\"327\":0.4152883859,\"328\":0.0158575657,\"329\":1.0,\"330\":1.0,\"331\":0.4153826772,\"332\":0.4151816712,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0156191344,\"340\":0.4162505013,\"341\":0.0158710203,\"342\":1.0,\"343\":0.0157085368,\"344\":1.0,\"345\":1.0,\"346\":0.0157817402,\"347\":0.0156918063,\"348\":1.0,\"349\":1.0,\"350\":0.4154767781,\"351\":0.4150777636,\"352\":1.0,\"353\":0.0157781412,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.4152539527,\"361\":1.0,\"362\":0.0155939856,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.015743886,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.415066832,\"375\":1.0,\"376\":0.0156568352,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.4160474411,\"385\":1.0,\"386\":0.4156495571,\"387\":0.0157288166,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":111.4481622228,\"1\":0.0601242521,\"2\":37837.8370024775,\"3\":20.8008476639,\"4\":21.529279084,\"5\":521.7629967972,\"6\":524.4533368519,\"7\":37870.9157783153,\"8\":20.5557265355,\"9\":110.903359248,\"10\":0.0587892543,\"11\":0.0593013344,\"12\":0.9336643158,\"13\":110.6264615523,\"14\":20.0790389147,\"15\":445.7149196689,\"16\":534.3950449249,\"17\":0.9405982275,\"18\":37891.1811082951,\"19\":37747.0638616572,\"20\":37599.7561940206,\"21\":110.8762780137,\"22\":0.0589155387,\"23\":0.9394754672,\"24\":111.2292996997,\"25\":22.0004860066,\"26\":489.0704224151,\"27\":566.9445646438,\"28\":0.9377160996,\"29\":23.7469775395,\"30\":37942.6008857155,\"31\":109.8432356388,\"32\":21.6191160396,\"33\":37305.6025702543,\"34\":0.0594112572,\"35\":567.404713807,\"36\":0.9400543519,\"37\":22.2157285668,\"38\":563.3754693367,\"39\":37612.2604210269,\"40\":110.0489118994,\"41\":580.1200718693,\"42\":0.0589350565,\"43\":37813.386566067,\"44\":21.7721511203,\"45\":37514.9573991959,\"46\":0.0593431381,\"47\":110.1857780993,\"48\":0.9390388143,\"49\":111.8164769609,\"50\":21.8186923468,\"51\":527.2877453067,\"52\":37528.0623014086,\"53\":37751.2574734779,\"54\":111.7187712419,\"55\":0.0597314771,\"56\":0.9383180349,\"57\":0.9370815122,\"58\":21.4850631199,\"59\":550.1151615234,\"60\":0.0584199221,\"61\":37668.1948274553,\"62\":554.3939710601,\"63\":0.0611223162,\"64\":111.405846328,\"65\":110.7125099148,\"66\":110.9184734746,\"67\":0.0578238677,\"68\":21.1959166365,\"69\":0.9376444877,\"70\":21.6670753935,\"71\":554.0056085592,\"72\":37950.4705510361,\"73\":37734.860252001,\"74\":110.845431818,\"75\":0.0591747218,\"76\":0.9385102972,\"77\":111.3356937585,\"78\":0.9362072945,\"79\":552.4046893386,\"80\":0.0593158185,\"81\":20.9443451809,\"82\":563.7719486326,\"83\":520.1364711036,\"84\":37904.665927559,\"85\":111.5743548852,\"86\":0.9372817806,\"87\":0.0593938083,\"88\":0.9376859282,\"89\":0.060854428,\"90\":0.0577153986,\"91\":0.9359501372,\"92\":21.1413543561,\"93\":524.2243365093,\"94\":553.2271185786,\"95\":37727.9554751,\"96\":110.7264761821,\"97\":0.0587295459,\"98\":37838.49095954,\"99\":21.5335488541,\"100\":0.9362637157,\"101\":37601.61319871,\"102\":0.9355304912,\"103\":21.0599942435,\"104\":530.9356826533,\"105\":21.4058571449,\"106\":37477.0307108252,\"107\":110.5605979316,\"108\":37813.2497843142,\"109\":0.0612590726,\"110\":0.9396449374,\"111\":23.0431918007,\"112\":21.9859898523,\"113\":21.0544341209,\"114\":111.4106370914,\"115\":20.4829706173,\"116\":571.9928458611,\"117\":37434.3500087024,\"118\":111.8715538544,\"119\":112.3093601007,\"120\":0.0601646163,\"121\":554.8778788074,\"122\":0.9368084415,\"123\":110.6616866711,\"124\":540.5377828586,\"125\":20.8916500111,\"126\":534.5607267015,\"127\":37511.5097786972,\"128\":544.3821406042,\"129\":37858.6822281465,\"130\":110.7833181927,\"131\":0.0579765609,\"132\":0.9350057151,\"133\":20.7206852905,\"134\":0.0591461526,\"135\":37311.6847225132,\"136\":510.9300734833,\"137\":37867.8403752819,\"138\":0.0588995248,\"139\":531.195475613,\"140\":479.3189018748,\"141\":37461.1599737431,\"142\":37101.3599426439,\"143\":110.8904854006,\"144\":0.059529564,\"145\":0.9364334336,\"146\":111.3552942086,\"147\":22.1905756148,\"148\":532.1234263618,\"149\":37640.8072742975,\"150\":111.247475476,\"151\":0.0594977611,\"152\":37675.6397844112,\"153\":0.9363290835,\"154\":0.9372139183,\"155\":111.7922947718,\"156\":111.4278042075,\"157\":37520.9370118588,\"158\":0.935751953,\"159\":21.1219233211,\"160\":523.5608040536,\"161\":37946.9351952871,\"162\":110.6102234343,\"163\":0.0588501713,\"164\":510.8943513619,\"165\":0.9382227677,\"166\":21.5188806084,\"167\":547.4796026722,\"168\":0.0608801783,\"169\":0.0592557828,\"170\":0.05815525,\"171\":0.9369097413,\"172\":551.1687541662,\"173\":21.1938277363,\"174\":538.2540761543,\"175\":37769.3182595688,\"176\":111.6434242904,\"177\":20.0987459962,\"178\":112.5304396287,\"179\":0.9359409819,\"180\":111.3913020752,\"181\":111.3994602723,\"182\":0.059043977,\"183\":21.2413626589,\"184\":0.9363667043,\"185\":21.0708443381,\"186\":529.0949473228,\"187\":37739.9228456824,\"188\":110.8924422645,\"189\":37411.5079327687,\"190\":20.6368287573,\"191\":111.4819199369,\"192\":0.057941589,\"193\":0.0578740927,\"194\":0.9366099492,\"195\":21.0859054484,\"196\":111.1011116382,\"197\":0.0579042095,\"198\":532.8621176818,\"199\":37844.6942559459,\"200\":540.3496852137,\"201\":0.0606628753,\"202\":110.241217322,\"203\":0.0602014443,\"204\":110.9392860137,\"205\":0.9374848425,\"206\":21.6277955416,\"207\":0.9338525083,\"208\":549.2523632886,\"209\":0.0607649587,\"210\":38276.9988799493,\"211\":111.3842396831,\"212\":37697.2191931416,\"213\":0.0592838577,\"214\":0.0585535443,\"215\":0.936530869,\"216\":0.9345772548,\"217\":20.6658774275,\"218\":505.7710645355,\"219\":110.7969325402,\"220\":37678.5907652007,\"221\":0.9385761986,\"222\":0.9366452405,\"223\":111.5382949245,\"224\":471.2323664006,\"225\":111.9233424684,\"226\":0.9351478873,\"227\":0.0550126702,\"228\":0.936687294,\"229\":20.9979294647,\"230\":537.6972579795,\"231\":37496.4850348733,\"232\":21.1278725805,\"233\":111.6600724831,\"234\":0.0581141175,\"235\":37703.3360259459,\"236\":0.0585790478,\"237\":21.198089909,\"238\":20.763760361,\"239\":0.9378594596,\"240\":0.938456088,\"241\":21.6032295016,\"242\":559.3792334581,\"243\":37651.7630513187,\"244\":110.8794828788,\"245\":0.0594968947,\"246\":21.8990079776,\"247\":0.935906963,\"248\":21.0821655969,\"249\":532.7600386422,\"250\":496.0572582402,\"251\":21.3691717985,\"252\":37636.2276164743,\"253\":112.6877779096,\"254\":111.7805142269,\"255\":0.0604607187,\"256\":0.9357968674,\"257\":509.0213930495,\"258\":513.1600571654,\"259\":0.0582405538,\"260\":37372.9186930849,\"261\":20.9975956799,\"262\":0.0600535951,\"263\":0.9370416925,\"264\":527.3036327896,\"265\":37791.3383689982,\"266\":111.6728506353,\"267\":0.0591895872,\"268\":111.0415721372,\"269\":0.0595889974,\"270\":0.936026024,\"271\":20.8610186286,\"272\":0.9376554104,\"273\":535.3977841989,\"274\":37266.078739973,\"275\":37586.5705681207,\"276\":111.4270107246,\"277\":111.3177348197,\"278\":0.0580359241,\"279\":37631.9103839202,\"280\":0.9375145347,\"281\":0.9350634843,\"282\":0.058746951,\"283\":20.7577517083,\"284\":507.6737454516,\"285\":486.5419629149,\"286\":37565.6635262251,\"287\":110.2692047451,\"288\":111.4755462942,\"289\":0.0594299293,\"290\":0.0593656765,\"291\":0.937612567,\"292\":0.0582963425,\"293\":21.3690621537,\"294\":548.6878713792,\"295\":37550.7473959076,\"296\":0.9366620038,\"297\":21.176101558,\"298\":0.9379342103,\"299\":0.0584856937,\"300\":457.300393524,\"301\":0.9364456016,\"302\":545.2306721909,\"303\":37838.3759941854,\"304\":110.4770434486,\"305\":0.0615878397,\"306\":0.9365849822,\"307\":0.934745662,\"308\":20.8539509922,\"309\":507.5570442574,\"310\":21.0188505178,\"311\":0.9387114438,\"312\":21.1221276373,\"313\":21.8223478954,\"314\":37435.302819261,\"315\":109.4492443114,\"316\":0.058527472,\"317\":37714.3753881731,\"318\":0.9386669678,\"319\":21.9354654998,\"320\":558.8371204133,\"321\":37814.1084351549,\"322\":20.778119722,\"323\":529.8385989602,\"324\":531.3605359355,\"325\":37521.0312674838,\"326\":110.2268931629,\"327\":113.4389721738,\"328\":0.0605824288,\"329\":0.9343817657,\"330\":22.3754767898,\"331\":109.656932439,\"332\":112.0700102413,\"333\":0.9378171069,\"334\":37744.0593939247,\"335\":534.1735327021,\"336\":21.3428839448,\"337\":549.3775756288,\"338\":37925.4311690183,\"339\":0.0579601146,\"340\":111.7968274722,\"341\":0.0586312897,\"342\":0.9376635242,\"343\":0.0595333415,\"344\":21.3510813705,\"345\":550.1142331425,\"346\":0.0573185426,\"347\":0.0597521465,\"348\":37693.1927769689,\"349\":20.5718905477,\"350\":110.7659927674,\"351\":112.2477213896,\"352\":37499.7947154221,\"353\":0.0582078603,\"354\":0.9384127818,\"355\":37841.767876518,\"356\":21.33224912,\"357\":0.9368803698,\"358\":558.7718771743,\"359\":37622.7652901354,\"360\":111.7549290554,\"361\":0.935518087,\"362\":0.0602108643,\"363\":0.9352957803,\"364\":20.661391527,\"365\":0.9359846678,\"366\":0.0600399372,\"367\":549.0755728867,\"368\":21.4409086299,\"369\":37335.4383864143,\"370\":0.9383615901,\"371\":22.5904450166,\"372\":554.8986360257,\"373\":37673.3553245262,\"374\":111.989711407,\"375\":20.6733666194,\"376\":0.0589828995,\"377\":0.9347019846,\"378\":21.1376352724,\"379\":542.7706181279,\"380\":37734.7154087242,\"381\":0.936776349,\"382\":21.2771283701,\"383\":538.0956270427,\"384\":111.7751413754,\"385\":37850.5153460394,\"386\":111.4161508894,\"387\":0.0567349608,\"388\":0.9356984821,\"389\":504.0822473824},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":1553616,\"1\":1553616,\"2\":1550336,\"3\":1551865,\"4\":1551903,\"5\":1550342,\"6\":1551865,\"7\":1551865,\"8\":1550730,\"9\":1553175,\"10\":1553175,\"11\":1552073,\"12\":1553175,\"13\":1552630,\"14\":1553175,\"15\":1553175,\"16\":1551404,\"17\":1539927,\"18\":1552630,\"19\":1550342,\"20\":1553175,\"21\":1550355,\"22\":1550355,\"23\":1550355,\"24\":1551620,\"25\":1550355,\"26\":1550730,\"27\":1550355,\"28\":1552073,\"29\":1539927,\"30\":1550355,\"31\":1553140,\"32\":1550866,\"33\":1552530,\"34\":1553140,\"35\":1538513,\"36\":1553140,\"37\":1553140,\"38\":1553140,\"39\":1553140,\"40\":1553303,\"41\":1539927,\"42\":1553303,\"43\":1550730,\"44\":1552073,\"45\":1552179,\"46\":1551620,\"47\":1550721,\"48\":1553303,\"49\":1550383,\"50\":1553303,\"51\":1553303,\"52\":1553303,\"53\":1539927,\"54\":1553536,\"55\":1553536,\"56\":1553536,\"57\":1551620,\"58\":1553536,\"59\":1553536,\"60\":1550721,\"61\":1553536,\"62\":1552073,\"63\":1550383,\"64\":1553009,\"65\":1551977,\"66\":1552231,\"67\":1552231,\"68\":1550403,\"69\":1552231,\"70\":1552231,\"71\":1552231,\"72\":1552231,\"73\":1552713,\"74\":1551186,\"75\":1551186,\"76\":1551186,\"77\":1540118,\"78\":1550383,\"79\":1551977,\"80\":1553009,\"81\":1550383,\"82\":1553009,\"83\":1550383,\"84\":1550383,\"85\":1553832,\"86\":1550721,\"87\":1553832,\"88\":1550123,\"89\":1540118,\"90\":1550730,\"91\":1553832,\"92\":1553832,\"93\":1553832,\"94\":1551186,\"95\":1553832,\"96\":1551587,\"97\":1551587,\"98\":1553009,\"99\":1550721,\"100\":1551587,\"101\":1550864,\"102\":1540118,\"103\":1551587,\"104\":1551587,\"105\":1550123,\"106\":1551587,\"107\":1552619,\"108\":1551186,\"109\":1552619,\"110\":1552619,\"111\":1552619,\"112\":1538513,\"113\":1551620,\"114\":1550123,\"115\":1540118,\"116\":1552619,\"117\":1552619,\"118\":1552713,\"119\":1551244,\"120\":1551244,\"121\":1550123,\"122\":1551244,\"123\":1550403,\"124\":1551620,\"125\":1551244,\"126\":1551244,\"127\":1550331,\"128\":1550721,\"129\":1551244,\"130\":1552110,\"131\":1552110,\"132\":1552110,\"133\":1552110,\"134\":1552713,\"135\":1551620,\"136\":1552110,\"137\":1550123,\"138\":1550403,\"139\":1552518,\"140\":1540118,\"141\":1552110,\"142\":1550721,\"143\":1553665,\"144\":1553665,\"145\":1553665,\"146\":1552640,\"147\":1553665,\"148\":1553665,\"149\":1553665,\"150\":1552966,\"151\":1552966,\"152\":1540118,\"153\":1552713,\"154\":1550403,\"155\":1553283,\"156\":1550866,\"157\":1538513,\"158\":1552966,\"159\":1552966,\"160\":1552966,\"161\":1552966,\"162\":1552179,\"163\":1552179,\"164\":1551903,\"165\":1552179,\"166\":1552179,\"167\":1552179,\"168\":1552640,\"169\":1553283,\"170\":1550866,\"171\":1553283,\"172\":1550866,\"173\":1553283,\"174\":1553283,\"175\":1553283,\"176\":1552380,\"177\":1553616,\"178\":1550331,\"179\":1552640,\"180\":1549611,\"181\":1554858,\"182\":1554858,\"183\":1552713,\"184\":1554858,\"185\":1554858,\"186\":1554858,\"187\":1550866,\"188\":1539694,\"189\":1554858,\"190\":1552640,\"191\":1552926,\"192\":1552926,\"193\":1550331,\"194\":1552926,\"195\":1552926,\"196\":1551404,\"197\":1549611,\"198\":1552926,\"199\":1552926,\"200\":1550403,\"201\":1552630,\"202\":1552687,\"203\":1552687,\"204\":1550730,\"205\":1552687,\"206\":1552687,\"207\":1553616,\"208\":1552687,\"209\":1551404,\"210\":1552687,\"211\":1538865,\"212\":1551977,\"213\":1539694,\"214\":1538865,\"215\":1549611,\"216\":1538865,\"217\":1538865,\"218\":1538865,\"219\":1551903,\"220\":1538865,\"221\":1553009,\"222\":1551404,\"223\":1550336,\"224\":1552640,\"225\":1540227,\"226\":1539694,\"227\":1540227,\"228\":1540227,\"229\":1540227,\"230\":1540227,\"231\":1540227,\"232\":1549611,\"233\":1543532,\"234\":1543532,\"235\":1552640,\"236\":1551903,\"237\":1551404,\"238\":1539694,\"239\":1550331,\"240\":1543532,\"241\":1543532,\"242\":1543532,\"243\":1543532,\"244\":1552518,\"245\":1552518,\"246\":1553009,\"247\":1552518,\"248\":1552518,\"249\":1549611,\"250\":1539694,\"251\":1550331,\"252\":1539694,\"253\":1550864,\"254\":1552661,\"255\":1552661,\"256\":1552661,\"257\":1552413,\"258\":1548674,\"259\":1551977,\"260\":1551903,\"261\":1552661,\"262\":1552380,\"263\":1551903,\"264\":1552661,\"265\":1552661,\"266\":1551377,\"267\":1550864,\"268\":1552867,\"269\":1551377,\"270\":1551377,\"271\":1551377,\"272\":1551977,\"273\":1551377,\"274\":1551377,\"275\":1552518,\"276\":1552413,\"277\":1552883,\"278\":1552883,\"279\":1551404,\"280\":1552380,\"281\":1552883,\"282\":1550123,\"283\":1552883,\"284\":1552883,\"285\":1552630,\"286\":1552883,\"287\":1538513,\"288\":12399409,\"289\":12399409,\"290\":1552867,\"291\":12399409,\"292\":1552413,\"293\":12399409,\"294\":12399409,\"295\":12399409,\"296\":1550864,\"297\":1552380,\"298\":1550866,\"299\":1538513,\"300\":1553616,\"301\":1552867,\"302\":1552380,\"303\":1552380,\"304\":1551605,\"305\":1551605,\"306\":1551605,\"307\":1552413,\"308\":1551605,\"309\":1551605,\"310\":1550864,\"311\":1538513,\"312\":1552867,\"313\":1551977,\"314\":1551605,\"315\":1549580,\"316\":1549580,\"317\":1553616,\"318\":1549580,\"319\":1549580,\"320\":1549580,\"321\":1549580,\"322\":1552413,\"323\":1552867,\"324\":1552713,\"325\":1552867,\"326\":1550342,\"327\":1550301,\"328\":1550301,\"329\":1552630,\"330\":1551186,\"331\":1539927,\"332\":1552530,\"333\":1550301,\"334\":1552413,\"335\":1550864,\"336\":1550301,\"337\":1550301,\"338\":1550301,\"339\":1550342,\"340\":1551066,\"341\":1551066,\"342\":1551066,\"343\":1539927,\"344\":1551066,\"345\":1551066,\"346\":1550336,\"347\":1552530,\"348\":1551066,\"349\":1552630,\"350\":1549935,\"351\":1552591,\"352\":1550403,\"353\":1552591,\"354\":1552591,\"355\":1552073,\"356\":1552591,\"357\":1550336,\"358\":1552591,\"359\":1552591,\"360\":1548674,\"361\":1552530,\"362\":1548674,\"363\":1548674,\"364\":1548674,\"365\":1550342,\"366\":1549935,\"367\":1550331,\"368\":1550336,\"369\":1548674,\"370\":1549935,\"371\":1549935,\"372\":1549935,\"373\":1549935,\"374\":1549483,\"375\":1552530,\"376\":1549483,\"377\":1550730,\"378\":1550342,\"379\":1550336,\"380\":1549611,\"381\":1549483,\"382\":1549483,\"383\":1549483,\"384\":1552073,\"385\":1549483,\"386\":1551865,\"387\":1551865,\"388\":1551865,\"389\":1552530},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.6471498483,\"1\":0.0013574816,\"2\":256.6275164782,\"3\":0.0754947872,\"4\":0.0763078232,\"5\":2.9478350531,\"6\":2.9945837122,\"7\":256.9288225351,\"8\":0.0758348694,\"9\":0.6441743921,\"10\":0.0012286974,\"11\":0.001289038,\"12\":0.0003057944,\"13\":0.6425034228,\"14\":0.0741525107,\"15\":2.5288985278,\"16\":3.0767770475,\"17\":0.0002671992,\"18\":259.4105941142,\"19\":252.8108841647,\"20\":256.2268525142,\"21\":0.6471498155,\"22\":0.0012800611,\"23\":0.0002900887,\"24\":0.6458756111,\"25\":0.0774951691,\"26\":2.7897603191,\"27\":3.324471824,\"28\":0.0003081959,\"29\":0.0884529529,\"30\":258.5170572419,\"31\":0.633587965,\"32\":0.0767144929,\"33\":250.9905193307,\"34\":0.0012894869,\"35\":3.2942149975,\"36\":0.0002849435,\"37\":0.0787732291,\"38\":3.3100915619,\"39\":250.291498659,\"40\":0.6383882321,\"41\":3.4405644546,\"42\":0.0013042314,\"43\":257.2631398014,\"44\":0.0771697708,\"45\":253.5300293009,\"46\":0.0013135498,\"47\":0.6390170094,\"48\":0.0002877538,\"49\":0.6466206379,\"50\":0.0759857526,\"51\":3.1175248606,\"52\":253.0844391311,\"53\":255.673677773,\"54\":0.6523271529,\"55\":0.0013280769,\"56\":0.0002823519,\"57\":0.0002880345,\"58\":0.074953937,\"59\":3.1969448956,\"60\":0.0012423486,\"61\":253.4526613438,\"62\":3.1918814004,\"63\":0.0013371084,\"64\":0.6480698935,\"65\":0.642504411,\"66\":0.6425836313,\"67\":0.0012296907,\"68\":0.0765120638,\"69\":0.0002762127,\"70\":0.0773479708,\"71\":3.1881969021,\"72\":254.709574966,\"73\":253.7774805229,\"74\":0.6362979346,\"75\":0.0012882986,\"76\":0.000292144,\"77\":0.6494914846,\"78\":0.0002857992,\"79\":3.1623091974,\"80\":0.0013256857,\"81\":0.074312245,\"82\":3.2938066614,\"83\":2.9354492791,\"84\":255.816983752,\"85\":0.6459072637,\"86\":0.0002802886,\"87\":0.00130349,\"88\":0.0002760542,\"89\":0.0013572079,\"90\":0.0012650436,\"91\":0.0002906915,\"92\":0.0770377542,\"93\":3.0075061008,\"94\":3.1940212717,\"95\":256.3085404925,\"96\":0.6426322286,\"97\":0.0012587211,\"98\":253.2714416326,\"99\":0.076853115,\"100\":0.0002982954,\"101\":254.7207818667,\"102\":0.0002924359,\"103\":0.0753525047,\"104\":3.0178164383,\"105\":0.0762640341,\"106\":253.2092260565,\"107\":0.6454306089,\"108\":252.9960878804,\"109\":0.0013756209,\"110\":0.0002674404,\"111\":0.0851396517,\"112\":0.0784050563,\"113\":0.0756240792,\"114\":0.6472047862,\"115\":0.0759343942,\"116\":3.3419336928,\"117\":252.6420199662,\"118\":0.6525739848,\"119\":0.6493493916,\"120\":0.0012715276,\"121\":3.1856372466,\"122\":0.0002834617,\"123\":0.6383518778,\"124\":3.0875193145,\"125\":0.0756576557,\"126\":3.0251439053,\"127\":255.6846130889,\"128\":3.1227187145,\"129\":255.1488538717,\"130\":0.644886226,\"131\":0.001260832,\"132\":0.0003218598,\"133\":0.0751117525,\"134\":0.0012997462,\"135\":252.3244337065,\"136\":2.8956483951,\"137\":256.722985381,\"138\":0.0012546632,\"139\":3.0582591634,\"140\":2.7446314173,\"141\":253.0902744172,\"142\":250.5473855926,\"143\":0.6456449622,\"144\":0.0013076456,\"145\":0.0003088538,\"146\":0.6466712762,\"147\":0.0811206052,\"148\":3.045120718,\"149\":256.6588598258,\"150\":0.6438532762,\"151\":0.0012852278,\"152\":255.9443340014,\"153\":0.0003093077,\"154\":0.0003043732,\"155\":0.6523175901,\"156\":0.6459967986,\"157\":253.0679434152,\"158\":0.000300048,\"159\":0.0746439959,\"160\":2.9891452226,\"161\":253.2309117374,\"162\":0.6389191806,\"163\":0.001308694,\"164\":2.8940684504,\"165\":0.0002916785,\"166\":0.0778740989,\"167\":3.1433705093,\"168\":0.0012660615,\"169\":0.0012577045,\"170\":0.0012735851,\"171\":0.0002811016,\"172\":3.1478428174,\"173\":0.0755907657,\"174\":3.0707243799,\"175\":256.3388525711,\"176\":0.6485351243,\"177\":0.0751187829,\"178\":0.6524013114,\"179\":0.0002955676,\"180\":0.6475114967,\"181\":0.6427388263,\"182\":0.0013165589,\"183\":0.0774510495,\"184\":0.0002964181,\"185\":0.0745341288,\"186\":2.9685392762,\"187\":254.7192479093,\"188\":0.6449751683,\"189\":252.4619404115,\"190\":0.0750591246,\"191\":0.6474044175,\"192\":0.001259408,\"193\":0.0012298682,\"194\":0.0002865731,\"195\":0.0766148737,\"196\":0.6454137031,\"197\":0.0012647321,\"198\":3.0584379846,\"199\":255.4219202957,\"200\":3.1259496654,\"201\":0.0013360855,\"202\":0.6398145531,\"203\":0.0012971595,\"204\":0.6473651564,\"205\":0.0003012714,\"206\":0.0778504937,\"207\":0.000312199,\"208\":3.1631503776,\"209\":0.0013568227,\"210\":259.6965673381,\"211\":0.6467356815,\"212\":255.7949868604,\"213\":0.001326326,\"214\":0.0012887604,\"215\":0.0002862237,\"216\":0.0003096663,\"217\":0.075296083,\"218\":2.8759860195,\"219\":0.644024894,\"220\":255.542613648,\"221\":0.0002835315,\"222\":0.0002976445,\"223\":0.6454321268,\"224\":2.6872727147,\"225\":0.6543778091,\"226\":0.0002998854,\"227\":0.0011664621,\"228\":0.0002875761,\"229\":0.0762071694,\"230\":3.0781304263,\"231\":256.6805258018,\"232\":0.0765001579,\"233\":0.6451460337,\"234\":0.0012472682,\"235\":254.9853023445,\"236\":0.0012943311,\"237\":0.0761106054,\"238\":0.075630443,\"239\":0.0002827915,\"240\":0.0002805979,\"241\":0.0772724018,\"242\":3.2360669798,\"243\":257.1532571416,\"244\":0.6438352195,\"245\":0.0012600763,\"246\":0.0782808626,\"247\":0.0003017948,\"248\":0.0749248903,\"249\":3.0348054432,\"250\":2.8063926478,\"251\":0.0757004826,\"252\":253.3286505791,\"253\":0.651288834,\"254\":0.6500575518,\"255\":0.0012577863,\"256\":0.0003011532,\"257\":2.8669912019,\"258\":2.9039169971,\"259\":0.0012587728,\"260\":249.4523580862,\"261\":0.0759822501,\"262\":0.0013041265,\"263\":0.0002884299,\"264\":3.0086968144,\"265\":256.5197525626,\"266\":0.6483959587,\"267\":0.0012942377,\"268\":0.644993917,\"269\":0.0012737367,\"270\":0.000294563,\"271\":0.0753437726,\"272\":0.0003146779,\"273\":3.0656616117,\"274\":249.3951410467,\"275\":253.7483613756,\"276\":0.6485653133,\"277\":0.6478307063,\"278\":0.0012762969,\"279\":259.0305446264,\"280\":0.0002884252,\"281\":0.0002954365,\"282\":0.0013031125,\"283\":0.0749775063,\"284\":2.882973719,\"285\":2.7871011434,\"286\":255.8527320204,\"287\":0.6465297042,\"288\":0.2284635923,\"289\":0.0004575153,\"290\":0.0013281074,\"291\":0.0001027208,\"292\":0.0012358053,\"293\":0.0269595312,\"294\":1.1159242892,\"295\":90.1938685962,\"296\":0.0003135443,\"297\":0.0749646887,\"298\":0.0003086146,\"299\":0.0012994574,\"300\":2.6094848172,\"301\":0.0003057819,\"302\":3.1168978336,\"303\":258.8173448032,\"304\":0.6399157368,\"305\":0.0013610725,\"306\":0.0003008436,\"307\":0.0003022942,\"308\":0.0743360259,\"309\":2.9541191494,\"310\":0.0750521614,\"311\":0.0002786891,\"312\":0.0765375238,\"313\":0.0786170208,\"314\":254.7377791558,\"315\":0.6332146949,\"316\":0.0012511994,\"317\":255.4818691128,\"318\":0.0002993789,\"319\":0.0795709467,\"320\":3.2918581546,\"321\":257.0717435017,\"322\":0.075620955,\"323\":3.0455739373,\"324\":3.017927999,\"325\":248.36436771,\"326\":0.6379927582,\"327\":0.6590214898,\"328\":0.001320904,\"329\":0.0003095879,\"330\":0.0819953092,\"331\":0.6430504477,\"332\":0.6475359063,\"333\":0.0002835411,\"334\":254.0055031297,\"335\":3.0224912372,\"336\":0.0754360683,\"337\":3.1755819894,\"338\":258.0712157231,\"339\":0.001269575,\"340\":0.6500374322,\"341\":0.0012801779,\"342\":0.0002853545,\"343\":0.0013302131,\"344\":0.0772560755,\"345\":3.1618892322,\"346\":0.0012445772,\"347\":0.0013146078,\"348\":254.9435445427,\"349\":0.0753367786,\"350\":0.6431993264,\"351\":0.6456951464,\"352\":255.0007888682,\"353\":0.0012510583,\"354\":0.000280869,\"355\":255.6296527485,\"356\":0.076037207,\"357\":0.0002909724,\"358\":3.2318942339,\"359\":254.4914089011,\"360\":0.648028199,\"361\":0.0002920462,\"362\":0.0013244939,\"363\":0.0002916378,\"364\":0.0744906409,\"365\":0.0002864286,\"366\":0.0013065438,\"367\":3.1322985321,\"368\":0.0761860326,\"369\":247.8726553922,\"370\":0.0002827609,\"371\":0.0822679693,\"372\":3.2108159712,\"373\":255.7023829207,\"374\":0.6527717517,\"375\":0.0743961115,\"376\":0.0013119883,\"377\":0.0002884829,\"378\":0.0778897431,\"379\":3.127486051,\"380\":254.4063818748,\"381\":0.0002985507,\"382\":0.0768944759,\"383\":3.1095381336,\"384\":0.6514375499,\"385\":260.1100760155,\"386\":0.6475548961,\"387\":0.0012563157,\"388\":0.0002940727,\"389\":2.8612102457},\"start_time\":{\"0\":1553904000000,\"1\":1553904000000,\"2\":1553904000000,\"3\":1553904000000,\"4\":1553904000000,\"5\":1553904000000,\"6\":1553904000000,\"7\":1553904000000,\"8\":1553904000000,\"9\":1553904000000,\"10\":1553904000000,\"11\":1553904000000,\"12\":1553904000000,\"13\":1553904000000,\"14\":1553904000000,\"15\":1553904000000,\"16\":1553904000000,\"17\":1553904000000,\"18\":1553904000000,\"19\":1553904000000,\"20\":1553904000000,\"21\":1553904000000,\"22\":1553904000000,\"23\":1553904000000,\"24\":1553904000000,\"25\":1553904000000,\"26\":1553904000000,\"27\":1553904000000,\"28\":1553904000000,\"29\":1553904000000,\"30\":1553904000000,\"31\":1553904000000,\"32\":1553904000000,\"33\":1553904000000,\"34\":1553904000000,\"35\":1553904000000,\"36\":1553904000000,\"37\":1553904000000,\"38\":1553904000000,\"39\":1553904000000,\"40\":1553904000000,\"41\":1553904000000,\"42\":1553904000000,\"43\":1553904000000,\"44\":1553904000000,\"45\":1553904000000,\"46\":1553904000000,\"47\":1553904000000,\"48\":1553904000000,\"49\":1553904000000,\"50\":1553904000000,\"51\":1553904000000,\"52\":1553904000000,\"53\":1553904000000,\"54\":1553904000000,\"55\":1553904000000,\"56\":1553904000000,\"57\":1553904000000,\"58\":1553904000000,\"59\":1553904000000,\"60\":1553904000000,\"61\":1553904000000,\"62\":1553904000000,\"63\":1553904000000,\"64\":1553904000000,\"65\":1553904000000,\"66\":1553904000000,\"67\":1553904000000,\"68\":1553904000000,\"69\":1553904000000,\"70\":1553904000000,\"71\":1553904000000,\"72\":1553904000000,\"73\":1553904000000,\"74\":1553904000000,\"75\":1553904000000,\"76\":1553904000000,\"77\":1553904000000,\"78\":1553904000000,\"79\":1553904000000,\"80\":1553904000000,\"81\":1553904000000,\"82\":1553904000000,\"83\":1553904000000,\"84\":1553904000000,\"85\":1553904000000,\"86\":1553904000000,\"87\":1553904000000,\"88\":1553904000000,\"89\":1553904000000,\"90\":1553904000000,\"91\":1553904000000,\"92\":1553904000000,\"93\":1553904000000,\"94\":1553904000000,\"95\":1553904000000,\"96\":1553904000000,\"97\":1553904000000,\"98\":1553904000000,\"99\":1553904000000,\"100\":1553904000000,\"101\":1553904000000,\"102\":1553904000000,\"103\":1553904000000,\"104\":1553904000000,\"105\":1553904000000,\"106\":1553904000000,\"107\":1553904000000,\"108\":1553904000000,\"109\":1553904000000,\"110\":1553904000000,\"111\":1553904000000,\"112\":1553904000000,\"113\":1553904000000,\"114\":1553904000000,\"115\":1553904000000,\"116\":1553904000000,\"117\":1553904000000,\"118\":1553904000000,\"119\":1553904000000,\"120\":1553904000000,\"121\":1553904000000,\"122\":1553904000000,\"123\":1553904000000,\"124\":1553904000000,\"125\":1553904000000,\"126\":1553904000000,\"127\":1553904000000,\"128\":1553904000000,\"129\":1553904000000,\"130\":1553904000000,\"131\":1553904000000,\"132\":1553904000000,\"133\":1553904000000,\"134\":1553904000000,\"135\":1553904000000,\"136\":1553904000000,\"137\":1553904000000,\"138\":1553904000000,\"139\":1553904000000,\"140\":1553904000000,\"141\":1553904000000,\"142\":1553904000000,\"143\":1553904000000,\"144\":1553904000000,\"145\":1553904000000,\"146\":1553904000000,\"147\":1553904000000,\"148\":1553904000000,\"149\":1553904000000,\"150\":1553904000000,\"151\":1553904000000,\"152\":1553904000000,\"153\":1553904000000,\"154\":1553904000000,\"155\":1553904000000,\"156\":1553904000000,\"157\":1553904000000,\"158\":1553904000000,\"159\":1553904000000,\"160\":1553904000000,\"161\":1553904000000,\"162\":1553904000000,\"163\":1553904000000,\"164\":1553904000000,\"165\":1553904000000,\"166\":1553904000000,\"167\":1553904000000,\"168\":1553904000000,\"169\":1553904000000,\"170\":1553904000000,\"171\":1553904000000,\"172\":1553904000000,\"173\":1553904000000,\"174\":1553904000000,\"175\":1553904000000,\"176\":1553904000000,\"177\":1553904000000,\"178\":1553904000000,\"179\":1553904000000,\"180\":1553904000000,\"181\":1553904000000,\"182\":1553904000000,\"183\":1553904000000,\"184\":1553904000000,\"185\":1553904000000,\"186\":1553904000000,\"187\":1553904000000,\"188\":1553904000000,\"189\":1553904000000,\"190\":1553904000000,\"191\":1553904000000,\"192\":1553904000000,\"193\":1553904000000,\"194\":1553904000000,\"195\":1553904000000,\"196\":1553904000000,\"197\":1553904000000,\"198\":1553904000000,\"199\":1553904000000,\"200\":1553904000000,\"201\":1553904000000,\"202\":1553904000000,\"203\":1553904000000,\"204\":1553904000000,\"205\":1553904000000,\"206\":1553904000000,\"207\":1553904000000,\"208\":1553904000000,\"209\":1553904000000,\"210\":1553904000000,\"211\":1553904000000,\"212\":1553904000000,\"213\":1553904000000,\"214\":1553904000000,\"215\":1553904000000,\"216\":1553904000000,\"217\":1553904000000,\"218\":1553904000000,\"219\":1553904000000,\"220\":1553904000000,\"221\":1553904000000,\"222\":1553904000000,\"223\":1553904000000,\"224\":1553904000000,\"225\":1553904000000,\"226\":1553904000000,\"227\":1553904000000,\"228\":1553904000000,\"229\":1553904000000,\"230\":1553904000000,\"231\":1553904000000,\"232\":1553904000000,\"233\":1553904000000,\"234\":1553904000000,\"235\":1553904000000,\"236\":1553904000000,\"237\":1553904000000,\"238\":1553904000000,\"239\":1553904000000,\"240\":1553904000000,\"241\":1553904000000,\"242\":1553904000000,\"243\":1553904000000,\"244\":1553904000000,\"245\":1553904000000,\"246\":1553904000000,\"247\":1553904000000,\"248\":1553904000000,\"249\":1553904000000,\"250\":1553904000000,\"251\":1553904000000,\"252\":1553904000000,\"253\":1553904000000,\"254\":1553904000000,\"255\":1553904000000,\"256\":1553904000000,\"257\":1553904000000,\"258\":1553904000000,\"259\":1553904000000,\"260\":1553904000000,\"261\":1553904000000,\"262\":1553904000000,\"263\":1553904000000,\"264\":1553904000000,\"265\":1553904000000,\"266\":1553904000000,\"267\":1553904000000,\"268\":1553904000000,\"269\":1553904000000,\"270\":1553904000000,\"271\":1553904000000,\"272\":1553904000000,\"273\":1553904000000,\"274\":1553904000000,\"275\":1553904000000,\"276\":1553904000000,\"277\":1553904000000,\"278\":1553904000000,\"279\":1553904000000,\"280\":1553904000000,\"281\":1553904000000,\"282\":1553904000000,\"283\":1553904000000,\"284\":1553904000000,\"285\":1553904000000,\"286\":1553904000000,\"287\":1553904000000,\"288\":1553904000000,\"289\":1553904000000,\"290\":1553904000000,\"291\":1553904000000,\"292\":1553904000000,\"293\":1553904000000,\"294\":1553904000000,\"295\":1553904000000,\"296\":1553904000000,\"297\":1553904000000,\"298\":1553904000000,\"299\":1553904000000,\"300\":1553904000000,\"301\":1553904000000,\"302\":1553904000000,\"303\":1553904000000,\"304\":1553904000000,\"305\":1553904000000,\"306\":1553904000000,\"307\":1553904000000,\"308\":1553904000000,\"309\":1553904000000,\"310\":1553904000000,\"311\":1553904000000,\"312\":1553904000000,\"313\":1553904000000,\"314\":1553904000000,\"315\":1553904000000,\"316\":1553904000000,\"317\":1553904000000,\"318\":1553904000000,\"319\":1553904000000,\"320\":1553904000000,\"321\":1553904000000,\"322\":1553904000000,\"323\":1553904000000,\"324\":1553904000000,\"325\":1553904000000,\"326\":1553904000000,\"327\":1553904000000,\"328\":1553904000000,\"329\":1553904000000,\"330\":1553904000000,\"331\":1553904000000,\"332\":1553904000000,\"333\":1553904000000,\"334\":1553904000000,\"335\":1553904000000,\"336\":1553904000000,\"337\":1553904000000,\"338\":1553904000000,\"339\":1553904000000,\"340\":1553904000000,\"341\":1553904000000,\"342\":1553904000000,\"343\":1553904000000,\"344\":1553904000000,\"345\":1553904000000,\"346\":1553904000000,\"347\":1553904000000,\"348\":1553904000000,\"349\":1553904000000,\"350\":1553904000000,\"351\":1553904000000,\"352\":1553904000000,\"353\":1553904000000,\"354\":1553904000000,\"355\":1553904000000,\"356\":1553904000000,\"357\":1553904000000,\"358\":1553904000000,\"359\":1553904000000,\"360\":1553904000000,\"361\":1553904000000,\"362\":1553904000000,\"363\":1553904000000,\"364\":1553904000000,\"365\":1553904000000,\"366\":1553904000000,\"367\":1553904000000,\"368\":1553904000000,\"369\":1553904000000,\"370\":1553904000000,\"371\":1553904000000,\"372\":1553904000000,\"373\":1553904000000,\"374\":1553904000000,\"375\":1553904000000,\"376\":1553904000000,\"377\":1553904000000,\"378\":1553904000000,\"379\":1553904000000,\"380\":1553904000000,\"381\":1553904000000,\"382\":1553904000000,\"383\":1553904000000,\"384\":1553904000000,\"385\":1553904000000,\"386\":1553904000000,\"387\":1553904000000,\"388\":1553904000000,\"389\":1553904000000}}"},"description":null}],[1556078905259,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1554249600000,\"1\":1554249600000,\"2\":1554249600000,\"3\":1554249600000,\"4\":1554249600000,\"5\":1554249600000,\"6\":1554249600000,\"7\":1554249600000,\"8\":1554249600000,\"9\":1554249600000,\"10\":1554249600000,\"11\":1554249600000,\"12\":1554249600000,\"13\":1554249600000,\"14\":1554249600000,\"15\":1554249600000,\"16\":1554249600000,\"17\":1554249600000,\"18\":1554249600000,\"19\":1554249600000,\"20\":1554249600000,\"21\":1554249600000,\"22\":1554249600000,\"23\":1554249600000,\"24\":1554249600000,\"25\":1554249600000,\"26\":1554249600000,\"27\":1554249600000,\"28\":1554249600000,\"29\":1554249600000,\"30\":1554249600000,\"31\":1554249600000,\"32\":1554249600000,\"33\":1554249600000,\"34\":1554249600000,\"35\":1554249600000,\"36\":1554249600000,\"37\":1554249600000,\"38\":1554249600000,\"39\":1554249600000,\"40\":1554249600000,\"41\":1554249600000,\"42\":1554249600000,\"43\":1554249600000,\"44\":1554249600000,\"45\":1554249600000,\"46\":1554249600000,\"47\":1554249600000,\"48\":1554249600000,\"49\":1554249600000,\"50\":1554249600000,\"51\":1554249600000,\"52\":1554249600000,\"53\":1554249600000,\"54\":1554249600000,\"55\":1554249600000,\"56\":1554249600000,\"57\":1554249600000,\"58\":1554249600000,\"59\":1554249600000,\"60\":1554249600000,\"61\":1554249600000,\"62\":1554249600000,\"63\":1554249600000,\"64\":1554249600000,\"65\":1554249600000,\"66\":1554249600000,\"67\":1554249600000,\"68\":1554249600000,\"69\":1554249600000,\"70\":1554249600000,\"71\":1554249600000,\"72\":1554249600000,\"73\":1554249600000,\"74\":1554249600000,\"75\":1554249600000,\"76\":1554249600000,\"77\":1554249600000,\"78\":1554249600000,\"79\":1554249600000,\"80\":1554249600000,\"81\":1554249600000,\"82\":1554249600000,\"83\":1554249600000,\"84\":1554249600000,\"85\":1554249600000,\"86\":1554249600000,\"87\":1554249600000,\"88\":1554249600000,\"89\":1554249600000,\"90\":1554249600000,\"91\":1554249600000,\"92\":1554249600000,\"93\":1554249600000,\"94\":1554249600000,\"95\":1554249600000,\"96\":1554249600000,\"97\":1554249600000,\"98\":1554249600000,\"99\":1554249600000,\"100\":1554249600000,\"101\":1554249600000,\"102\":1554249600000,\"103\":1554249600000,\"104\":1554249600000,\"105\":1554249600000,\"106\":1554249600000,\"107\":1554249600000,\"108\":1554249600000,\"109\":1554249600000,\"110\":1554249600000,\"111\":1554249600000,\"112\":1554249600000,\"113\":1554249600000,\"114\":1554249600000,\"115\":1554249600000,\"116\":1554249600000,\"117\":1554249600000,\"118\":1554249600000,\"119\":1554249600000,\"120\":1554249600000,\"121\":1554249600000,\"122\":1554249600000,\"123\":1554249600000,\"124\":1554249600000,\"125\":1554249600000,\"126\":1554249600000,\"127\":1554249600000,\"128\":1554249600000,\"129\":1554249600000,\"130\":1554249600000,\"131\":1554249600000,\"132\":1554249600000,\"133\":1554249600000,\"134\":1554249600000,\"135\":1554249600000,\"136\":1554249600000,\"137\":1554249600000,\"138\":1554249600000,\"139\":1554249600000,\"140\":1554249600000,\"141\":1554249600000,\"142\":1554249600000,\"143\":1554249600000,\"144\":1554249600000,\"145\":1554249600000,\"146\":1554249600000,\"147\":1554249600000,\"148\":1554249600000,\"149\":1554249600000,\"150\":1554249600000,\"151\":1554249600000,\"152\":1554249600000,\"153\":1554249600000,\"154\":1554249600000,\"155\":1554249600000,\"156\":1554249600000,\"157\":1554249600000,\"158\":1554249600000,\"159\":1554249600000,\"160\":1554249600000,\"161\":1554249600000,\"162\":1554249600000,\"163\":1554249600000,\"164\":1554249600000,\"165\":1554249600000,\"166\":1554249600000,\"167\":1554249600000,\"168\":1554249600000,\"169\":1554249600000,\"170\":1554249600000,\"171\":1554249600000,\"172\":1554249600000,\"173\":1554249600000,\"174\":1554249600000,\"175\":1554249600000,\"176\":1554249600000,\"177\":1554249600000,\"178\":1554249600000,\"179\":1554249600000,\"180\":1554249600000,\"181\":1554249600000,\"182\":1554249600000,\"183\":1554249600000,\"184\":1554249600000,\"185\":1554249600000,\"186\":1554249600000,\"187\":1554249600000,\"188\":1554249600000,\"189\":1554249600000,\"190\":1554249600000,\"191\":1554249600000,\"192\":1554249600000,\"193\":1554249600000,\"194\":1554249600000,\"195\":1554249600000,\"196\":1554249600000,\"197\":1554249600000,\"198\":1554249600000,\"199\":1554249600000,\"200\":1554249600000,\"201\":1554249600000,\"202\":1554249600000,\"203\":1554249600000,\"204\":1554249600000,\"205\":1554249600000,\"206\":1554249600000,\"207\":1554249600000,\"208\":1554249600000,\"209\":1554249600000,\"210\":1554249600000,\"211\":1554249600000,\"212\":1554249600000,\"213\":1554249600000,\"214\":1554249600000,\"215\":1554249600000,\"216\":1554249600000,\"217\":1554249600000,\"218\":1554249600000,\"219\":1554249600000,\"220\":1554249600000,\"221\":1554249600000,\"222\":1554249600000,\"223\":1554249600000,\"224\":1554249600000,\"225\":1554249600000,\"226\":1554249600000,\"227\":1554249600000,\"228\":1554249600000,\"229\":1554249600000,\"230\":1554249600000,\"231\":1554249600000,\"232\":1554249600000,\"233\":1554249600000,\"234\":1554249600000,\"235\":1554249600000,\"236\":1554249600000,\"237\":1554249600000,\"238\":1554249600000,\"239\":1554249600000,\"240\":1554249600000,\"241\":1554249600000,\"242\":1554249600000,\"243\":1554249600000,\"244\":1554249600000,\"245\":1554249600000,\"246\":1554249600000,\"247\":1554249600000,\"248\":1554249600000,\"249\":1554249600000,\"250\":1554249600000,\"251\":1554249600000,\"252\":1554249600000,\"253\":1554249600000,\"254\":1554249600000,\"255\":1554249600000,\"256\":1554249600000,\"257\":1554249600000,\"258\":1554249600000,\"259\":1554249600000,\"260\":1554249600000,\"261\":1554249600000,\"262\":1554249600000,\"263\":1554249600000,\"264\":1554249600000,\"265\":1554249600000,\"266\":1554249600000,\"267\":1554249600000,\"268\":1554249600000,\"269\":1554249600000,\"270\":1554249600000,\"271\":1554249600000,\"272\":1554249600000,\"273\":1554249600000,\"274\":1554249600000,\"275\":1554249600000,\"276\":1554249600000,\"277\":1554249600000,\"278\":1554249600000,\"279\":1554249600000,\"280\":1554249600000,\"281\":1554249600000,\"282\":1554249600000,\"283\":1554249600000,\"284\":1554249600000,\"285\":1554249600000,\"286\":1554249600000,\"287\":1554249600000,\"288\":1554249600000,\"289\":1554249600000,\"290\":1554249600000,\"291\":1554249600000,\"292\":1554249600000,\"293\":1554249600000,\"294\":1554249600000,\"295\":1554249600000,\"296\":1554249600000,\"297\":1554249600000,\"298\":1554249600000,\"299\":1554249600000,\"300\":1554249600000,\"301\":1554249600000,\"302\":1554249600000,\"303\":1554249600000,\"304\":1554249600000,\"305\":1554249600000,\"306\":1554249600000,\"307\":1554249600000,\"308\":1554249600000,\"309\":1554249600000,\"310\":1554249600000,\"311\":1554249600000,\"312\":1554249600000,\"313\":1554249600000,\"314\":1554249600000,\"315\":1554249600000,\"316\":1554249600000,\"317\":1554249600000,\"318\":1554249600000,\"319\":1554249600000,\"320\":1554249600000,\"321\":1554249600000,\"322\":1554249600000,\"323\":1554249600000,\"324\":1554249600000,\"325\":1554249600000,\"326\":1554249600000,\"327\":1554249600000,\"328\":1554249600000,\"329\":1554249600000,\"330\":1554249600000,\"331\":1554249600000,\"332\":1554249600000,\"333\":1554249600000,\"334\":1554249600000,\"335\":1554249600000,\"336\":1554249600000,\"337\":1554249600000,\"338\":1554249600000,\"339\":1554249600000,\"340\":1554249600000,\"341\":1554249600000,\"342\":1554249600000,\"343\":1554249600000,\"344\":1554249600000,\"345\":1554249600000,\"346\":1554249600000,\"347\":1554249600000,\"348\":1554249600000,\"349\":1554249600000,\"350\":1554249600000,\"351\":1554249600000,\"352\":1554249600000,\"353\":1554249600000,\"354\":1554249600000,\"355\":1554249600000,\"356\":1554249600000,\"357\":1554249600000,\"358\":1554249600000,\"359\":1554249600000,\"360\":1554249600000,\"361\":1554249600000,\"362\":1554249600000,\"363\":1554249600000,\"364\":1554249600000,\"365\":1554249600000,\"366\":1554249600000,\"367\":1554249600000,\"368\":1554249600000,\"369\":1554249600000,\"370\":1554249600000,\"371\":1554249600000,\"372\":1554249600000,\"373\":1554249600000,\"374\":1554249600000,\"375\":1554249600000,\"376\":1554249600000,\"377\":1554249600000,\"378\":1554249600000,\"379\":1554249600000,\"380\":1554249600000,\"381\":1554249600000,\"382\":1554249600000,\"383\":1554249600000,\"384\":1554249600000,\"385\":1554249600000,\"386\":1554249600000,\"387\":1554249600000,\"388\":1554249600000,\"389\":1554249600000},\"frac_nonnull\":{\"0\":0.446734088,\"1\":0.0153955991,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.446702369,\"10\":0.0155206889,\"11\":0.0154532424,\"12\":1.0,\"13\":0.4464610492,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.4459469185,\"22\":0.0152970324,\"23\":1.0,\"24\":0.4467779373,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.446990466,\"32\":1.0,\"33\":1.0,\"34\":0.015492509,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.4461323162,\"41\":1.0,\"42\":0.015380146,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0153180543,\"47\":0.4464471311,\"48\":1.0,\"49\":0.4469001983,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.4469610813,\"55\":0.0152609494,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0154611856,\"61\":1.0,\"62\":1.0,\"63\":0.0153151501,\"64\":0.4467881184,\"65\":0.4465674124,\"66\":0.446614891,\"67\":0.0152827101,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.446741304,\"75\":0.0154120117,\"76\":1.0,\"77\":0.4465092842,\"78\":1.0,\"79\":1.0,\"80\":0.0153118412,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.4464851702,\"86\":1.0,\"87\":0.0153393693,\"88\":1.0,\"89\":0.0154569046,\"90\":0.0153553422,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.4461995102,\"97\":0.0153447712,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.446915164,\"108\":1.0,\"109\":0.0152819509,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.4457290612,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.4464202597,\"119\":0.4467915016,\"120\":0.0153123426,\"121\":1.0,\"122\":1.0,\"123\":0.4467890557,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.4466126528,\"131\":0.0153672001,\"132\":1.0,\"133\":1.0,\"134\":0.01519577,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.0153611119,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.4466883718,\"144\":0.0153663498,\"145\":1.0,\"146\":0.4461103257,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.4465936859,\"151\":0.0152644808,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.4461242123,\"156\":0.447303011,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.4468198697,\"163\":0.0154155362,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.0155591973,\"169\":0.0153714896,\"170\":0.0154313806,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.4464123456,\"177\":1.0,\"178\":0.4459536847,\"179\":1.0,\"180\":0.4461132905,\"181\":0.4463064033,\"182\":0.0152642089,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.4460688006,\"189\":1.0,\"190\":1.0,\"191\":0.4462129689,\"192\":0.0152800764,\"193\":0.0152811357,\"194\":1.0,\"195\":1.0,\"196\":0.4467456509,\"197\":0.0153132817,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.0152488072,\"202\":0.4465175396,\"203\":0.0155459226,\"204\":0.4464124149,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.0153924281,\"210\":1.0,\"211\":0.4466758693,\"212\":1.0,\"213\":0.0152581376,\"214\":0.0152599694,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.4461845918,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.4473646175,\"224\":1.0,\"225\":0.4461478767,\"226\":1.0,\"227\":0.0154858435,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.4469509906,\"234\":0.0152964501,\"235\":1.0,\"236\":0.015239247,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.4468633995,\"245\":0.015451148,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.4462703072,\"254\":0.4463047731,\"255\":0.0154447536,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.0152657391,\"260\":1.0,\"261\":1.0,\"262\":0.0153238819,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.446342423,\"267\":0.0153325769,\"268\":0.4464823397,\"269\":0.0153955179,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.4461637391,\"277\":0.4458502154,\"278\":0.0154493144,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0152276225,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.4459754327,\"288\":0.4465432894,\"289\":0.015373904,\"290\":0.0154000149,\"291\":1.0,\"292\":0.0153355447,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.0152691012,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.4466696771,\"305\":0.0153000468,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.4464310309,\"316\":0.0154201652,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.446811267,\"327\":0.4463889982,\"328\":0.0154932901,\"329\":1.0,\"330\":1.0,\"331\":0.4461496302,\"332\":0.4459547379,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0152663395,\"340\":0.4471423272,\"341\":0.0155054761,\"342\":1.0,\"343\":0.0153561214,\"344\":1.0,\"345\":1.0,\"346\":0.0154239281,\"347\":0.0153325788,\"348\":1.0,\"349\":1.0,\"350\":0.4461240349,\"351\":0.446061012,\"352\":1.0,\"353\":0.0154276534,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.4462525903,\"361\":1.0,\"362\":0.015239082,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.0153935799,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.4460243176,\"375\":1.0,\"376\":0.0153096302,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.4472238735,\"385\":1.0,\"386\":0.4465571027,\"387\":0.0153684636,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":143.8914856366,\"1\":0.0584180785,\"2\":37741.4133704068,\"3\":21.0473200141,\"4\":21.7704708828,\"5\":534.8772454669,\"6\":534.8840893416,\"7\":37714.9316292328,\"8\":20.8561277107,\"9\":143.0279623521,\"10\":0.0573039877,\"11\":0.0578247941,\"12\":0.9334024777,\"13\":142.5915928435,\"14\":20.3694726715,\"15\":453.0657960088,\"16\":549.0511518835,\"17\":0.9407118171,\"18\":37995.9865940078,\"19\":37715.2835743502,\"20\":37630.6778735692,\"21\":143.3441475584,\"22\":0.0572762596,\"23\":0.9395435629,\"24\":143.6019150538,\"25\":22.3289678016,\"26\":496.9535891264,\"27\":579.8755075795,\"28\":0.9376057997,\"29\":23.9760921492,\"30\":37745.2536362535,\"31\":141.9427801172,\"32\":21.8797036224,\"33\":37209.4680889798,\"34\":0.0577834285,\"35\":577.466025923,\"36\":0.9401324043,\"37\":22.4920081911,\"38\":579.5490838314,\"39\":37503.7736203781,\"40\":142.1509825788,\"41\":591.7112903438,\"42\":0.0573110047,\"43\":37688.3680487265,\"44\":22.061401753,\"45\":37413.4098394856,\"46\":0.0577029859,\"47\":142.5972764435,\"48\":0.9391002251,\"49\":144.6938540989,\"50\":22.0823489199,\"51\":538.8404308226,\"52\":37510.3854859313,\"53\":37800.8998592237,\"54\":144.5525780175,\"55\":0.0581322512,\"56\":0.9381490743,\"57\":0.937104709,\"58\":21.7785559743,\"59\":564.0915622365,\"60\":0.0569815616,\"61\":37659.3946927048,\"62\":565.6264647098,\"63\":0.0595218499,\"64\":144.1787874736,\"65\":142.8710667388,\"66\":143.028651019,\"67\":0.0564470261,\"68\":21.4723590682,\"69\":0.9376156265,\"70\":21.9157166512,\"71\":563.9575508896,\"72\":37931.6119463242,\"73\":37690.881516649,\"74\":143.1766676904,\"75\":0.0576818308,\"76\":0.938270113,\"77\":143.7420208612,\"78\":0.9361545549,\"79\":562.7090597954,\"80\":0.0577853781,\"81\":21.2604964675,\"82\":577.6802807769,\"83\":531.7389392235,\"84\":37836.5268675367,\"85\":143.800058695,\"86\":0.9373067002,\"87\":0.057802685,\"88\":0.9376681151,\"89\":0.0593724018,\"90\":0.0562023919,\"91\":0.9358286945,\"92\":21.3937173897,\"93\":533.2995099946,\"94\":565.5011648274,\"95\":37696.9563709506,\"96\":143.1661300801,\"97\":0.0571616331,\"98\":37621.8240329866,\"99\":21.8315714862,\"100\":0.9360797336,\"101\":37572.6598271402,\"102\":0.9353596441,\"103\":21.338490998,\"104\":540.1556866168,\"105\":21.6400346563,\"106\":37536.8761088298,\"107\":142.9462781035,\"108\":37783.6672199085,\"109\":0.0595498439,\"110\":0.9395470001,\"111\":23.2929146801,\"112\":22.2431650654,\"113\":21.3535329606,\"114\":143.6867727868,\"115\":20.8066326138,\"116\":585.7843090537,\"117\":37437.6174654059,\"118\":144.4957899557,\"119\":144.6386446021,\"120\":0.0585270651,\"121\":564.7346483405,\"122\":0.9367142599,\"123\":143.4439670522,\"124\":553.0256150304,\"125\":21.1609294892,\"126\":543.4917462892,\"127\":37590.7261981341,\"128\":556.6430987863,\"129\":37931.3754928706,\"130\":143.5249644339,\"131\":0.0564301591,\"132\":0.935007802,\"133\":20.9745011961,\"134\":0.057511135,\"135\":37454.0847704278,\"136\":521.8436058271,\"137\":37797.7701668786,\"138\":0.0574189151,\"139\":540.7413033532,\"140\":486.9978083981,\"141\":37652.1432286414,\"142\":37172.8255777464,\"143\":143.0910626726,\"144\":0.0579235942,\"145\":0.9363543611,\"146\":143.5931783039,\"147\":22.5055156411,\"148\":541.1493906184,\"149\":37502.2550021898,\"150\":143.6691810688,\"151\":0.0579276769,\"152\":37723.5315466473,\"153\":0.9363017163,\"154\":0.9371256203,\"155\":144.2960737152,\"156\":144.0455723596,\"157\":37531.2474014044,\"158\":0.9355693118,\"159\":21.3843847146,\"160\":535.162617066,\"161\":37966.3382660157,\"162\":142.764492817,\"163\":0.0572585989,\"164\":521.4885673544,\"165\":0.9379799599,\"166\":21.8001539366,\"167\":558.9373312742,\"168\":0.0593104552,\"169\":0.0578140644,\"170\":0.0565729726,\"171\":0.9366606719,\"172\":562.6174250382,\"173\":21.4374334625,\"174\":548.3876911099,\"175\":37576.0600885693,\"176\":143.8877990129,\"177\":20.3938551623,\"178\":145.03791056,\"179\":0.9358451792,\"180\":143.7940709247,\"181\":144.313440601,\"182\":0.0575303909,\"183\":21.5082145841,\"184\":0.9364150673,\"185\":21.3634470762,\"186\":540.354941559,\"187\":37625.6899626645,\"188\":143.1259579262,\"189\":37393.0202153951,\"190\":20.9149831146,\"191\":144.4092907513,\"192\":0.0565400939,\"193\":0.0563635829,\"194\":0.9365523944,\"195\":21.4088999606,\"196\":143.9384083984,\"197\":0.0564429932,\"198\":543.3509256103,\"199\":37753.5422188382,\"200\":553.5400395602,\"201\":0.0590814716,\"202\":142.3328069707,\"203\":0.0586449589,\"204\":143.2556159844,\"205\":0.9373983606,\"206\":21.8761495501,\"207\":0.9335864431,\"208\":561.0153373251,\"209\":0.0591187566,\"210\":38269.7618231633,\"211\":143.9688065769,\"212\":37694.0082688384,\"213\":0.0577061944,\"214\":0.0569724861,\"215\":0.9365934412,\"216\":0.934326508,\"217\":20.9381701672,\"218\":515.5469981054,\"219\":143.1546323034,\"220\":37620.7183003718,\"221\":0.9385734776,\"222\":0.9364854169,\"223\":143.3323355635,\"224\":477.5755207251,\"225\":144.2934650811,\"226\":0.9349796093,\"227\":0.0535507209,\"228\":0.9364874416,\"229\":21.3210724987,\"230\":547.1011628546,\"231\":37444.039343096,\"232\":21.4183918127,\"233\":144.1562763107,\"234\":0.0565780646,\"235\":37652.0901917769,\"236\":0.0571632777,\"237\":21.4727492046,\"238\":21.038950512,\"239\":0.9377017126,\"240\":0.9383050636,\"241\":21.8518919135,\"242\":572.7317928028,\"243\":37759.4407895925,\"244\":143.2886391191,\"245\":0.0580130489,\"246\":22.1811563552,\"247\":0.9358185661,\"248\":21.3514435661,\"249\":544.5891065864,\"250\":506.3635257112,\"251\":21.6640149689,\"252\":37621.2147348105,\"253\":145.365280476,\"254\":144.5954251743,\"255\":0.0588839819,\"256\":0.9357846433,\"257\":518.5691087639,\"258\":524.3677121973,\"259\":0.0567124803,\"260\":37309.8655156026,\"261\":21.2963493601,\"262\":0.0583971073,\"263\":0.9368342486,\"264\":537.7218273947,\"265\":37806.5562427545,\"266\":144.2457259518,\"267\":0.0575243711,\"268\":143.8346180738,\"269\":0.0580700123,\"270\":0.9358554236,\"271\":21.1658724048,\"272\":0.9377622802,\"273\":546.8571018679,\"274\":37247.2494108395,\"275\":37528.1926167592,\"276\":144.0449942632,\"277\":143.4493988079,\"278\":0.0565249917,\"279\":37592.5314814776,\"280\":0.9374922308,\"281\":0.9348941146,\"282\":0.0571367588,\"283\":21.0336997163,\"284\":515.9073035981,\"285\":495.7630483864,\"286\":37559.243246574,\"287\":142.3935924262,\"288\":143.9449307822,\"289\":0.0578741258,\"290\":0.05769554,\"291\":0.9374997733,\"292\":0.0568921213,\"293\":21.6372636518,\"294\":560.6473614869,\"295\":37530.2423022424,\"296\":0.9365615485,\"297\":21.4602436992,\"298\":0.937922726,\"299\":0.056941286,\"300\":464.4467049594,\"301\":0.9362925812,\"302\":556.068091252,\"303\":37734.6181096142,\"304\":142.5249855524,\"305\":0.0599887171,\"306\":0.936491483,\"307\":0.9346209688,\"308\":21.1164428415,\"309\":517.0287055503,\"310\":21.3033959051,\"311\":0.9385272723,\"312\":21.4194272163,\"313\":22.1199857861,\"314\":37595.7547040222,\"315\":141.2644253764,\"316\":0.0570491647,\"317\":37706.6437032465,\"318\":0.9385948157,\"319\":22.1907197586,\"320\":574.5273877209,\"321\":37825.5471044068,\"322\":21.0854461784,\"323\":542.3029350722,\"324\":543.4399676676,\"325\":37586.9763182764,\"326\":142.8924503185,\"327\":146.2392522967,\"328\":0.0589146811,\"329\":0.9343198036,\"330\":22.6371209753,\"331\":141.6542768587,\"332\":144.4815247207,\"333\":0.9377193216,\"334\":37876.4839451125,\"335\":544.4295676658,\"336\":21.6224324583,\"337\":561.14681338,\"338\":37919.6325350314,\"339\":0.0564453393,\"340\":144.7734704231,\"341\":0.0571772252,\"342\":0.9375368034,\"343\":0.0579873754,\"344\":21.6598472233,\"345\":563.6541000894,\"346\":0.0558079527,\"347\":0.0580841808,\"348\":37602.5711361761,\"349\":20.8668886394,\"350\":143.2991054887,\"351\":144.8196776626,\"352\":37580.6086540124,\"353\":0.056664915,\"354\":0.9383412737,\"355\":37717.2860314765,\"356\":21.6216898678,\"357\":0.9367555561,\"358\":570.8228707945,\"359\":37484.9479844466,\"360\":144.1637072182,\"361\":0.9354594315,\"362\":0.0585965787,\"363\":0.9353137149,\"364\":20.9474084514,\"365\":0.9360136126,\"366\":0.0584855897,\"367\":559.7036228384,\"368\":21.7126315645,\"369\":37446.9200638244,\"370\":0.938262596,\"371\":22.9278848853,\"372\":569.4895133769,\"373\":37740.1561811734,\"374\":144.3333272804,\"375\":20.9308294427,\"376\":0.0574201927,\"377\":0.9344953871,\"378\":21.3405492897,\"379\":553.9417568228,\"380\":37739.3270564333,\"381\":0.9367502698,\"382\":21.5463005234,\"383\":548.2345843739,\"384\":144.3553551883,\"385\":37815.5131818618,\"386\":143.5446844112,\"387\":0.0552684416,\"388\":0.9356262912,\"389\":512.3005012676},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":1600977,\"1\":1600977,\"2\":1598231,\"3\":1599249,\"4\":1599226,\"5\":1597829,\"6\":1599249,\"7\":1599249,\"8\":1598206,\"9\":1600831,\"10\":1600831,\"11\":1599729,\"12\":1600831,\"13\":1599994,\"14\":1600831,\"15\":1600831,\"16\":1598968,\"17\":1587380,\"18\":1599994,\"19\":1597829,\"20\":1600831,\"21\":1597957,\"22\":1597957,\"23\":1597957,\"24\":1599224,\"25\":1597957,\"26\":1598206,\"27\":1597957,\"28\":1599729,\"29\":1587380,\"30\":1597957,\"31\":1600580,\"32\":1598820,\"33\":1600057,\"34\":1600580,\"35\":1585686,\"36\":1600580,\"37\":1600580,\"38\":1600580,\"39\":1600580,\"40\":1600635,\"41\":1587380,\"42\":1600635,\"43\":1598206,\"44\":1599729,\"45\":1599620,\"46\":1599224,\"47\":1598131,\"48\":1600635,\"49\":1597699,\"50\":1600635,\"51\":1600635,\"52\":1600635,\"53\":1587380,\"54\":1601211,\"55\":1601211,\"56\":1601211,\"57\":1599224,\"58\":1601211,\"59\":1601211,\"60\":1598131,\"61\":1601211,\"62\":1599729,\"63\":1597699,\"64\":1600526,\"65\":1599595,\"66\":1599978,\"67\":1599978,\"68\":1597801,\"69\":1599978,\"70\":1599978,\"71\":1599978,\"72\":1599978,\"73\":1600577,\"74\":1598753,\"75\":1598753,\"76\":1598753,\"77\":1587640,\"78\":1597699,\"79\":1599595,\"80\":1600526,\"81\":1597699,\"82\":1600526,\"83\":1597699,\"84\":1597699,\"85\":1601500,\"86\":1598131,\"87\":1601500,\"88\":1597623,\"89\":1587640,\"90\":1598206,\"91\":1601500,\"92\":1601500,\"93\":1601500,\"94\":1598753,\"95\":1601500,\"96\":1599307,\"97\":1599307,\"98\":1600526,\"99\":1598131,\"100\":1599307,\"101\":1598818,\"102\":1587640,\"103\":1599307,\"104\":1599307,\"105\":1597623,\"106\":1599307,\"107\":1599534,\"108\":1598753,\"109\":1599534,\"110\":1599534,\"111\":1599534,\"112\":1585686,\"113\":1599224,\"114\":1597623,\"115\":1587640,\"116\":1599534,\"117\":1599534,\"118\":1600577,\"119\":1598645,\"120\":1598645,\"121\":1597623,\"122\":1598645,\"123\":1597801,\"124\":1599224,\"125\":1598645,\"126\":1598645,\"127\":1597787,\"128\":1598131,\"129\":1598645,\"130\":1599836,\"131\":1599836,\"132\":1599836,\"133\":1599836,\"134\":1600577,\"135\":1599224,\"136\":1599836,\"137\":1597623,\"138\":1597801,\"139\":1600140,\"140\":1587640,\"141\":1599836,\"142\":1598131,\"143\":1601161,\"144\":1601161,\"145\":1601161,\"146\":1599954,\"147\":1601161,\"148\":1601161,\"149\":1601161,\"150\":1600513,\"151\":1600513,\"152\":1587640,\"153\":1600577,\"154\":1597801,\"155\":1601081,\"156\":1598820,\"157\":1585686,\"158\":1600513,\"159\":1600513,\"160\":1600513,\"161\":1600513,\"162\":1599620,\"163\":1599620,\"164\":1599226,\"165\":1599620,\"166\":1599620,\"167\":1599620,\"168\":1599954,\"169\":1601081,\"170\":1598820,\"171\":1601081,\"172\":1598820,\"173\":1601081,\"174\":1601081,\"175\":1601081,\"176\":1600182,\"177\":1600977,\"178\":1597787,\"179\":1599954,\"180\":1597045,\"181\":1603031,\"182\":1603031,\"183\":1600577,\"184\":1603031,\"185\":1603031,\"186\":1603031,\"187\":1598820,\"188\":1587022,\"189\":1603031,\"190\":1599954,\"191\":1600581,\"192\":1600581,\"193\":1597787,\"194\":1600581,\"195\":1600581,\"196\":1598968,\"197\":1597045,\"198\":1600581,\"199\":1600581,\"200\":1597801,\"201\":1599994,\"202\":1600291,\"203\":1600291,\"204\":1598206,\"205\":1600291,\"206\":1600291,\"207\":1600977,\"208\":1600291,\"209\":1598968,\"210\":1600291,\"211\":1585783,\"212\":1599595,\"213\":1587022,\"214\":1585783,\"215\":1597045,\"216\":1585783,\"217\":1585783,\"218\":1585783,\"219\":1599226,\"220\":1585783,\"221\":1600526,\"222\":1598968,\"223\":1598231,\"224\":1599954,\"225\":1587579,\"226\":1587022,\"227\":1587579,\"228\":1587579,\"229\":1587579,\"230\":1587579,\"231\":1587579,\"232\":1597045,\"233\":1590369,\"234\":1590369,\"235\":1599954,\"236\":1599226,\"237\":1598968,\"238\":1587022,\"239\":1597787,\"240\":1590369,\"241\":1590369,\"242\":1590369,\"243\":1590369,\"244\":1600140,\"245\":1600140,\"246\":1600526,\"247\":1600140,\"248\":1600140,\"249\":1597045,\"250\":1587022,\"251\":1597787,\"252\":1587022,\"253\":1598818,\"254\":1600673,\"255\":1600673,\"256\":1600673,\"257\":1600204,\"258\":1596356,\"259\":1599595,\"260\":1599226,\"261\":1600673,\"262\":1600182,\"263\":1599226,\"264\":1600673,\"265\":1600673,\"266\":1598777,\"267\":1598818,\"268\":1600453,\"269\":1598777,\"270\":1598777,\"271\":1598777,\"272\":1599595,\"273\":1598777,\"274\":1598777,\"275\":1600140,\"276\":1600204,\"277\":1600071,\"278\":1600071,\"279\":1598968,\"280\":1600182,\"281\":1600071,\"282\":1597623,\"283\":1600071,\"284\":1600071,\"285\":1599994,\"286\":1600071,\"287\":1585686,\"288\":12780098,\"289\":12780098,\"290\":1600453,\"291\":12780098,\"292\":1600204,\"293\":12780098,\"294\":12780098,\"295\":12780098,\"296\":1598818,\"297\":1600182,\"298\":1598820,\"299\":1585686,\"300\":1600977,\"301\":1600453,\"302\":1600182,\"303\":1600182,\"304\":1598884,\"305\":1598884,\"306\":1598884,\"307\":1600204,\"308\":1598884,\"309\":1598884,\"310\":1598818,\"311\":1585686,\"312\":1600453,\"313\":1599595,\"314\":1598884,\"315\":1597324,\"316\":1597324,\"317\":1600977,\"318\":1597324,\"319\":1597324,\"320\":1597324,\"321\":1597324,\"322\":1600204,\"323\":1600453,\"324\":1600577,\"325\":1600453,\"326\":1597829,\"327\":1597853,\"328\":1597853,\"329\":1599994,\"330\":1598753,\"331\":1587380,\"332\":1600057,\"333\":1597853,\"334\":1600204,\"335\":1598818,\"336\":1597853,\"337\":1597853,\"338\":1597853,\"339\":1597829,\"340\":1598661,\"341\":1598661,\"342\":1598661,\"343\":1587380,\"344\":1598661,\"345\":1598661,\"346\":1598231,\"347\":1600057,\"348\":1598661,\"349\":1599994,\"350\":1597744,\"351\":1600373,\"352\":1597801,\"353\":1600373,\"354\":1600373,\"355\":1599729,\"356\":1600373,\"357\":1598231,\"358\":1600373,\"359\":1600373,\"360\":1596356,\"361\":1600057,\"362\":1596356,\"363\":1596356,\"364\":1596356,\"365\":1597829,\"366\":1597744,\"367\":1597787,\"368\":1598231,\"369\":1596356,\"370\":1597744,\"371\":1597744,\"372\":1597744,\"373\":1597744,\"374\":1597034,\"375\":1600057,\"376\":1597034,\"377\":1598206,\"378\":1597829,\"379\":1598231,\"380\":1597045,\"381\":1597034,\"382\":1597034,\"383\":1597034,\"384\":1599729,\"385\":1597034,\"386\":1599249,\"387\":1599249,\"388\":1599249,\"389\":1600057},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.8028093701,\"1\":0.0012989092,\"2\":241.5347493779,\"3\":0.0698465553,\"4\":0.0698253327,\"5\":2.783752586,\"6\":2.8158796571,\"7\":240.2955486411,\"8\":0.0702160042,\"9\":0.7993916614,\"10\":0.0011918046,\"11\":0.0012451277,\"12\":0.0002917555,\"13\":0.7949623522,\"14\":0.0684760418,\"15\":2.3857300705,\"16\":2.9154130175,\"17\":0.0002551003,\"18\":247.0605242799,\"19\":238.0254605724,\"20\":242.5508062674,\"21\":0.8057394529,\"22\":0.0012288513,\"23\":0.0002665255,\"24\":0.79999907,\"25\":0.0713937536,\"26\":2.6112705249,\"27\":3.1195666905,\"28\":0.0002925736,\"29\":0.0816951994,\"30\":241.9562840338,\"31\":0.7860031416,\"32\":0.0706258773,\"33\":234.9625257748,\"34\":0.0012363631,\"35\":3.102853141,\"36\":0.0002655336,\"37\":0.0725283055,\"38\":3.1292394905,\"39\":236.1268471153,\"40\":0.7916860435,\"41\":3.2310670035,\"42\":0.0012500233,\"43\":241.3629667352,\"44\":0.0708376384,\"45\":239.0983949003,\"46\":0.0012612052,\"47\":0.7951853371,\"48\":0.0002688819,\"49\":0.8046284404,\"50\":0.070407386,\"51\":2.9438013994,\"52\":239.8024206074,\"53\":243.2088845309,\"54\":0.8111098302,\"55\":0.0012772861,\"56\":0.0002658232,\"57\":0.0002719138,\"58\":0.0690979637,\"59\":3.009105453,\"60\":0.0012011983,\"61\":239.1729299739,\"62\":3.0034929442,\"63\":0.0012886218,\"64\":0.8079090391,\"65\":0.7972829355,\"66\":0.7946762522,\"67\":0.0011946235,\"68\":0.0706149827,\"69\":0.000264659,\"70\":0.0713569863,\"71\":3.0030136766,\"72\":241.5471836843,\"73\":239.96184487,\"74\":0.7905971397,\"75\":0.0012440306,\"76\":0.0002786466,\"77\":0.8062384272,\"78\":0.0002764683,\"79\":2.9730795738,\"80\":0.0012751391,\"81\":0.0683446892,\"82\":3.1134867511,\"83\":2.7643106411,\"84\":241.5187217801,\"85\":0.7999623574,\"86\":0.0002670101,\"87\":0.0012581638,\"88\":0.00026059,\"89\":0.001309959,\"90\":0.0012148787,\"91\":0.0002786328,\"92\":0.0710862138,\"93\":2.8198433102,\"94\":3.00326874,\"95\":241.8728016972,\"96\":0.7998842795,\"97\":0.0012133756,\"98\":238.4356605536,\"99\":0.0705066715,\"100\":0.0002869298,\"101\":240.3700911609,\"102\":0.0002832835,\"103\":0.0694331648,\"104\":2.8291664617,\"105\":0.0700465392,\"106\":240.718730735,\"107\":0.8013754245,\"108\":240.1897344295,\"109\":0.0013212647,\"110\":0.000253026,\"111\":0.0778574609,\"112\":0.0715660369,\"113\":0.06952925,\"114\":0.8009174981,\"115\":0.0700480465,\"116\":3.1586364057,\"117\":238.7969096688,\"118\":0.8093104335,\"119\":0.8016804145,\"120\":0.0012234969,\"121\":2.9838099716,\"122\":0.0002728211,\"123\":0.7952152623,\"124\":2.9124826796,\"125\":0.0701278539,\"126\":2.8442612237,\"127\":243.0408797541,\"128\":2.9452175859,\"129\":242.2887725066,\"130\":0.7999067354,\"131\":0.0012138411,\"132\":0.000308005,\"133\":0.0696417231,\"134\":0.0012491075,\"135\":240.3824000119,\"136\":2.7260937474,\"137\":243.2869161616,\"138\":0.00121172,\"139\":2.8711309227,\"140\":2.5846515915,\"141\":242.1701839836,\"142\":237.1430199929,\"143\":0.7983762571,\"144\":0.0012562674,\"145\":0.000292706,\"146\":0.7995599877,\"147\":0.0741212286,\"148\":2.8582044377,\"149\":240.8247027173,\"150\":0.7985108442,\"151\":0.0012382766,\"152\":242.4974598016,\"153\":0.0002931729,\"154\":0.0002881234,\"155\":0.8085423823,\"156\":0.8024411167,\"157\":238.4050245422,\"158\":0.000284117,\"159\":0.0683852573,\"160\":2.8163422486,\"161\":240.3078773603,\"162\":0.7918102646,\"163\":0.0012502804,\"164\":2.7235333075,\"165\":0.0002762071,\"166\":0.0709851152,\"167\":2.9578066977,\"168\":0.0012223799,\"169\":0.0012179646,\"170\":0.001226068,\"171\":0.0002794893,\"172\":2.9586066121,\"173\":0.0699414615,\"174\":2.8934857582,\"175\":239.8013985564,\"176\":0.8021059627,\"177\":0.0694551705,\"178\":0.8076736527,\"179\":0.0002804043,\"180\":0.8001617938,\"181\":0.8014003974,\"182\":0.0012688242,\"183\":0.0711404223,\"184\":0.000276232,\"185\":0.0688945934,\"186\":2.8053833949,\"187\":240.8794343109,\"188\":0.7974631032,\"189\":238.3914352833,\"190\":0.0692515434,\"191\":0.8066622453,\"192\":0.0012147933,\"193\":0.0011853088,\"194\":0.0002707084,\"195\":0.0701939655,\"196\":0.804587543,\"197\":0.0012227722,\"198\":2.8663260433,\"199\":240.0946487336,\"200\":2.9480469903,\"201\":0.0012853695,\"202\":0.7936582019,\"203\":0.0012495674,\"204\":0.8021753197,\"205\":0.0002863931,\"206\":0.0718543885,\"207\":0.0002953896,\"208\":2.9914440155,\"209\":0.0013020026,\"210\":246.7921034296,\"211\":0.8045490637,\"212\":240.8683374522,\"213\":0.0012741179,\"214\":0.0012404217,\"215\":0.0002748965,\"216\":0.0002950064,\"217\":0.0694771091,\"218\":2.7170580726,\"219\":0.7987865251,\"220\":239.6012498058,\"221\":0.000277136,\"222\":0.0002871882,\"223\":0.7972352041,\"224\":2.5195832227,\"225\":0.807854194,\"226\":0.0002847746,\"227\":0.0011243656,\"228\":0.0002763583,\"229\":0.0706757884,\"230\":2.8829537327,\"231\":241.8589240608,\"232\":0.0700077284,\"233\":0.7976802194,\"234\":0.0012060139,\"235\":240.1557027906,\"236\":0.001252849,\"237\":0.0698422044,\"238\":0.0694696067,\"239\":0.0002693926,\"240\":0.0002631255,\"241\":0.0709192508,\"242\":3.0555746837,\"243\":243.7477818446,\"244\":0.7983136637,\"245\":0.0012180837,\"246\":0.0722102511,\"247\":0.000286472,\"248\":0.0691774093,\"249\":2.8486424948,\"250\":2.6363145732,\"251\":0.069634278,\"252\":240.1068799642,\"253\":0.8059404227,\"254\":0.8084818074,\"255\":0.0012138093,\"256\":0.0002818912,\"257\":2.701949743,\"258\":2.7316473644,\"259\":0.0012156093,\"260\":234.5843308907,\"261\":0.0700923133,\"262\":0.0012585,\"263\":0.0002752959,\"264\":2.8234036506,\"265\":243.0676810005,\"266\":0.8036605877,\"267\":0.0012431019,\"268\":0.8007982801,\"269\":0.0012306339,\"270\":0.0002788228,\"271\":0.0695879392,\"272\":0.0002929609,\"273\":2.8831373555,\"274\":235.421903786,\"275\":239.7477846904,\"276\":0.8057327808,\"277\":0.8019888688,\"278\":0.001227379,\"279\":243.2080112292,\"280\":0.0002796216,\"281\":0.000280599,\"282\":0.001252626,\"283\":0.0689109005,\"284\":2.7049721736,\"285\":2.6216409435,\"286\":240.6727670895,\"287\":0.801018814,\"288\":0.2830848945,\"289\":0.000441106,\"290\":0.0012723651,\"291\":0.0000980199,\"292\":0.0011957729,\"293\":0.0248319452,\"294\":1.0529151667,\"295\":84.9304880813,\"296\":0.0002909778,\"297\":0.0694574465,\"298\":0.0002890485,\"299\":0.001251362,\"300\":2.4541150028,\"301\":0.0002964616,\"302\":2.9237408078,\"303\":243.0599862825,\"304\":0.790027485,\"305\":0.001311726,\"306\":0.0002855763,\"307\":0.0002921713,\"308\":0.0685759121,\"309\":2.7674054992,\"310\":0.0692537889,\"311\":0.0002676292,\"312\":0.0701049493,\"313\":0.0717212437,\"314\":242.9795064257,\"315\":0.7850114758,\"316\":0.00120825,\"317\":241.7406268916,\"318\":0.0002845676,\"319\":0.0730182607,\"320\":3.1103538681,\"321\":242.8756544298,\"322\":0.0695252939,\"323\":2.8770888454,\"324\":2.8433814588,\"325\":237.379549805,\"326\":0.796089921,\"327\":0.8158623217,\"328\":0.0012710567,\"329\":0.0002969374,\"330\":0.0742655206,\"331\":0.7959818286,\"332\":0.8007487112,\"333\":0.0002682595,\"334\":240.2104853951,\"335\":2.8429709499,\"336\":0.0693693706,\"337\":2.9839934298,\"338\":242.5434275286,\"339\":0.0012189816,\"340\":0.8072247169,\"341\":0.0012315223,\"342\":0.0002810724,\"343\":0.0012806115,\"344\":0.0709320681,\"345\":2.9926736276,\"346\":0.0011988455,\"347\":0.001263062,\"348\":238.7910902865,\"349\":0.0691735371,\"350\":0.8002342835,\"351\":0.8015956941,\"352\":241.6634089622,\"353\":0.0012038559,\"354\":0.0002646097,\"355\":241.6562784931,\"356\":0.0703355431,\"357\":0.0002761084,\"358\":3.0531204924,\"359\":239.5629890034,\"360\":0.8031210477,\"361\":0.0002792426,\"362\":0.001276586,\"363\":0.0002799633,\"364\":0.06913457,\"365\":0.00027198,\"366\":0.0012580628,\"367\":2.9606895478,\"368\":0.0700468754,\"369\":235.8604324508,\"370\":0.0002661932,\"371\":0.0751827664,\"372\":3.0343519579,\"373\":242.1890642492,\"374\":0.8089023492,\"375\":0.0688989821,\"376\":0.0012602043,\"377\":0.0002759299,\"378\":0.0715058678,\"379\":2.95323019,\"380\":240.8352526204,\"381\":0.0002866816,\"382\":0.0701869289,\"383\":2.9137197351,\"384\":0.8071680002,\"385\":245.3068431735,\"386\":0.7995383597,\"387\":0.0012131102,\"388\":0.0002794771,\"389\":2.6723613999},\"start_time\":{\"0\":1553904000000,\"1\":1553904000000,\"2\":1553904000000,\"3\":1553904000000,\"4\":1553904000000,\"5\":1553904000000,\"6\":1553904000000,\"7\":1553904000000,\"8\":1553904000000,\"9\":1553904000000,\"10\":1553904000000,\"11\":1553904000000,\"12\":1553904000000,\"13\":1553904000000,\"14\":1553904000000,\"15\":1553904000000,\"16\":1553904000000,\"17\":1553904000000,\"18\":1553904000000,\"19\":1553904000000,\"20\":1553904000000,\"21\":1553904000000,\"22\":1553904000000,\"23\":1553904000000,\"24\":1553904000000,\"25\":1553904000000,\"26\":1553904000000,\"27\":1553904000000,\"28\":1553904000000,\"29\":1553904000000,\"30\":1553904000000,\"31\":1553904000000,\"32\":1553904000000,\"33\":1553904000000,\"34\":1553904000000,\"35\":1553904000000,\"36\":1553904000000,\"37\":1553904000000,\"38\":1553904000000,\"39\":1553904000000,\"40\":1553904000000,\"41\":1553904000000,\"42\":1553904000000,\"43\":1553904000000,\"44\":1553904000000,\"45\":1553904000000,\"46\":1553904000000,\"47\":1553904000000,\"48\":1553904000000,\"49\":1553904000000,\"50\":1553904000000,\"51\":1553904000000,\"52\":1553904000000,\"53\":1553904000000,\"54\":1553904000000,\"55\":1553904000000,\"56\":1553904000000,\"57\":1553904000000,\"58\":1553904000000,\"59\":1553904000000,\"60\":1553904000000,\"61\":1553904000000,\"62\":1553904000000,\"63\":1553904000000,\"64\":1553904000000,\"65\":1553904000000,\"66\":1553904000000,\"67\":1553904000000,\"68\":1553904000000,\"69\":1553904000000,\"70\":1553904000000,\"71\":1553904000000,\"72\":1553904000000,\"73\":1553904000000,\"74\":1553904000000,\"75\":1553904000000,\"76\":1553904000000,\"77\":1553904000000,\"78\":1553904000000,\"79\":1553904000000,\"80\":1553904000000,\"81\":1553904000000,\"82\":1553904000000,\"83\":1553904000000,\"84\":1553904000000,\"85\":1553904000000,\"86\":1553904000000,\"87\":1553904000000,\"88\":1553904000000,\"89\":1553904000000,\"90\":1553904000000,\"91\":1553904000000,\"92\":1553904000000,\"93\":1553904000000,\"94\":1553904000000,\"95\":1553904000000,\"96\":1553904000000,\"97\":1553904000000,\"98\":1553904000000,\"99\":1553904000000,\"100\":1553904000000,\"101\":1553904000000,\"102\":1553904000000,\"103\":1553904000000,\"104\":1553904000000,\"105\":1553904000000,\"106\":1553904000000,\"107\":1553904000000,\"108\":1553904000000,\"109\":1553904000000,\"110\":1553904000000,\"111\":1553904000000,\"112\":1553904000000,\"113\":1553904000000,\"114\":1553904000000,\"115\":1553904000000,\"116\":1553904000000,\"117\":1553904000000,\"118\":1553904000000,\"119\":1553904000000,\"120\":1553904000000,\"121\":1553904000000,\"122\":1553904000000,\"123\":1553904000000,\"124\":1553904000000,\"125\":1553904000000,\"126\":1553904000000,\"127\":1553904000000,\"128\":1553904000000,\"129\":1553904000000,\"130\":1553904000000,\"131\":1553904000000,\"132\":1553904000000,\"133\":1553904000000,\"134\":1553904000000,\"135\":1553904000000,\"136\":1553904000000,\"137\":1553904000000,\"138\":1553904000000,\"139\":1553904000000,\"140\":1553904000000,\"141\":1553904000000,\"142\":1553904000000,\"143\":1553904000000,\"144\":1553904000000,\"145\":1553904000000,\"146\":1553904000000,\"147\":1553904000000,\"148\":1553904000000,\"149\":1553904000000,\"150\":1553904000000,\"151\":1553904000000,\"152\":1553904000000,\"153\":1553904000000,\"154\":1553904000000,\"155\":1553904000000,\"156\":1553904000000,\"157\":1553904000000,\"158\":1553904000000,\"159\":1553904000000,\"160\":1553904000000,\"161\":1553904000000,\"162\":1553904000000,\"163\":1553904000000,\"164\":1553904000000,\"165\":1553904000000,\"166\":1553904000000,\"167\":1553904000000,\"168\":1553904000000,\"169\":1553904000000,\"170\":1553904000000,\"171\":1553904000000,\"172\":1553904000000,\"173\":1553904000000,\"174\":1553904000000,\"175\":1553904000000,\"176\":1553904000000,\"177\":1553904000000,\"178\":1553904000000,\"179\":1553904000000,\"180\":1553904000000,\"181\":1553904000000,\"182\":1553904000000,\"183\":1553904000000,\"184\":1553904000000,\"185\":1553904000000,\"186\":1553904000000,\"187\":1553904000000,\"188\":1553904000000,\"189\":1553904000000,\"190\":1553904000000,\"191\":1553904000000,\"192\":1553904000000,\"193\":1553904000000,\"194\":1553904000000,\"195\":1553904000000,\"196\":1553904000000,\"197\":1553904000000,\"198\":1553904000000,\"199\":1553904000000,\"200\":1553904000000,\"201\":1553904000000,\"202\":1553904000000,\"203\":1553904000000,\"204\":1553904000000,\"205\":1553904000000,\"206\":1553904000000,\"207\":1553904000000,\"208\":1553904000000,\"209\":1553904000000,\"210\":1553904000000,\"211\":1553904000000,\"212\":1553904000000,\"213\":1553904000000,\"214\":1553904000000,\"215\":1553904000000,\"216\":1553904000000,\"217\":1553904000000,\"218\":1553904000000,\"219\":1553904000000,\"220\":1553904000000,\"221\":1553904000000,\"222\":1553904000000,\"223\":1553904000000,\"224\":1553904000000,\"225\":1553904000000,\"226\":1553904000000,\"227\":1553904000000,\"228\":1553904000000,\"229\":1553904000000,\"230\":1553904000000,\"231\":1553904000000,\"232\":1553904000000,\"233\":1553904000000,\"234\":1553904000000,\"235\":1553904000000,\"236\":1553904000000,\"237\":1553904000000,\"238\":1553904000000,\"239\":1553904000000,\"240\":1553904000000,\"241\":1553904000000,\"242\":1553904000000,\"243\":1553904000000,\"244\":1553904000000,\"245\":1553904000000,\"246\":1553904000000,\"247\":1553904000000,\"248\":1553904000000,\"249\":1553904000000,\"250\":1553904000000,\"251\":1553904000000,\"252\":1553904000000,\"253\":1553904000000,\"254\":1553904000000,\"255\":1553904000000,\"256\":1553904000000,\"257\":1553904000000,\"258\":1553904000000,\"259\":1553904000000,\"260\":1553904000000,\"261\":1553904000000,\"262\":1553904000000,\"263\":1553904000000,\"264\":1553904000000,\"265\":1553904000000,\"266\":1553904000000,\"267\":1553904000000,\"268\":1553904000000,\"269\":1553904000000,\"270\":1553904000000,\"271\":1553904000000,\"272\":1553904000000,\"273\":1553904000000,\"274\":1553904000000,\"275\":1553904000000,\"276\":1553904000000,\"277\":1553904000000,\"278\":1553904000000,\"279\":1553904000000,\"280\":1553904000000,\"281\":1553904000000,\"282\":1553904000000,\"283\":1553904000000,\"284\":1553904000000,\"285\":1553904000000,\"286\":1553904000000,\"287\":1553904000000,\"288\":1553904000000,\"289\":1553904000000,\"290\":1553904000000,\"291\":1553904000000,\"292\":1553904000000,\"293\":1553904000000,\"294\":1553904000000,\"295\":1553904000000,\"296\":1553904000000,\"297\":1553904000000,\"298\":1553904000000,\"299\":1553904000000,\"300\":1553904000000,\"301\":1553904000000,\"302\":1553904000000,\"303\":1553904000000,\"304\":1553904000000,\"305\":1553904000000,\"306\":1553904000000,\"307\":1553904000000,\"308\":1553904000000,\"309\":1553904000000,\"310\":1553904000000,\"311\":1553904000000,\"312\":1553904000000,\"313\":1553904000000,\"314\":1553904000000,\"315\":1553904000000,\"316\":1553904000000,\"317\":1553904000000,\"318\":1553904000000,\"319\":1553904000000,\"320\":1553904000000,\"321\":1553904000000,\"322\":1553904000000,\"323\":1553904000000,\"324\":1553904000000,\"325\":1553904000000,\"326\":1553904000000,\"327\":1553904000000,\"328\":1553904000000,\"329\":1553904000000,\"330\":1553904000000,\"331\":1553904000000,\"332\":1553904000000,\"333\":1553904000000,\"334\":1553904000000,\"335\":1553904000000,\"336\":1553904000000,\"337\":1553904000000,\"338\":1553904000000,\"339\":1553904000000,\"340\":1553904000000,\"341\":1553904000000,\"342\":1553904000000,\"343\":1553904000000,\"344\":1553904000000,\"345\":1553904000000,\"346\":1553904000000,\"347\":1553904000000,\"348\":1553904000000,\"349\":1553904000000,\"350\":1553904000000,\"351\":1553904000000,\"352\":1553904000000,\"353\":1553904000000,\"354\":1553904000000,\"355\":1553904000000,\"356\":1553904000000,\"357\":1553904000000,\"358\":1553904000000,\"359\":1553904000000,\"360\":1553904000000,\"361\":1553904000000,\"362\":1553904000000,\"363\":1553904000000,\"364\":1553904000000,\"365\":1553904000000,\"366\":1553904000000,\"367\":1553904000000,\"368\":1553904000000,\"369\":1553904000000,\"370\":1553904000000,\"371\":1553904000000,\"372\":1553904000000,\"373\":1553904000000,\"374\":1553904000000,\"375\":1553904000000,\"376\":1553904000000,\"377\":1553904000000,\"378\":1553904000000,\"379\":1553904000000,\"380\":1553904000000,\"381\":1553904000000,\"382\":1553904000000,\"383\":1553904000000,\"384\":1553904000000,\"385\":1553904000000,\"386\":1553904000000,\"387\":1553904000000,\"388\":1553904000000,\"389\":1553904000000}}"},"description":null}],[1556078905273,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_0\",\"1\":\"0_0\",\"2\":\"0_17\",\"3\":\"0_30\",\"4\":\"0_27\",\"5\":\"0_51\",\"6\":\"0_30\",\"7\":\"0_30\",\"8\":\"0_10\",\"9\":\"0_31\",\"10\":\"0_31\",\"11\":\"0_24\",\"12\":\"0_31\",\"13\":\"0_1\",\"14\":\"0_31\",\"15\":\"0_31\",\"16\":\"0_5\",\"17\":\"0_61\",\"18\":\"0_1\",\"19\":\"0_51\",\"20\":\"0_31\",\"21\":\"0_32\",\"22\":\"0_32\",\"23\":\"0_32\",\"24\":\"0_18\",\"25\":\"0_32\",\"26\":\"0_10\",\"27\":\"0_32\",\"28\":\"0_24\",\"29\":\"0_61\",\"30\":\"0_32\",\"31\":\"0_33\",\"32\":\"0_26\",\"33\":\"0_40\",\"34\":\"0_33\",\"35\":\"0_60\",\"36\":\"0_33\",\"37\":\"0_33\",\"38\":\"0_33\",\"39\":\"0_33\",\"40\":\"0_34\",\"41\":\"0_61\",\"42\":\"0_34\",\"43\":\"0_10\",\"44\":\"0_24\",\"45\":\"0_49\",\"46\":\"0_18\",\"47\":\"0_52\",\"48\":\"0_34\",\"49\":\"0_41\",\"50\":\"0_34\",\"51\":\"0_34\",\"52\":\"0_34\",\"53\":\"0_61\",\"54\":\"0_35\",\"55\":\"0_35\",\"56\":\"0_35\",\"57\":\"0_18\",\"58\":\"0_35\",\"59\":\"0_35\",\"60\":\"0_52\",\"61\":\"0_35\",\"62\":\"0_24\",\"63\":\"0_41\",\"64\":\"0_11\",\"65\":\"0_50\",\"66\":\"0_36\",\"67\":\"0_36\",\"68\":\"0_38\",\"69\":\"0_36\",\"70\":\"0_36\",\"71\":\"0_36\",\"72\":\"0_36\",\"73\":\"0_12\",\"74\":\"0_37\",\"75\":\"0_37\",\"76\":\"0_37\",\"77\":\"0_62\",\"78\":\"0_41\",\"79\":\"0_50\",\"80\":\"0_11\",\"81\":\"0_41\",\"82\":\"0_11\",\"83\":\"0_41\",\"84\":\"0_41\",\"85\":\"0_42\",\"86\":\"0_52\",\"87\":\"0_42\",\"88\":\"0_25\",\"89\":\"0_62\",\"90\":\"0_10\",\"91\":\"0_42\",\"92\":\"0_42\",\"93\":\"0_42\",\"94\":\"0_37\",\"95\":\"0_42\",\"96\":\"0_43\",\"97\":\"0_43\",\"98\":\"0_11\",\"99\":\"0_52\",\"100\":\"0_43\",\"101\":\"0_4\",\"102\":\"0_62\",\"103\":\"0_43\",\"104\":\"0_43\",\"105\":\"0_25\",\"106\":\"0_43\",\"107\":\"0_44\",\"108\":\"0_37\",\"109\":\"0_44\",\"110\":\"0_44\",\"111\":\"0_44\",\"112\":\"0_60\",\"113\":\"0_18\",\"114\":\"0_25\",\"115\":\"0_62\",\"116\":\"0_44\",\"117\":\"0_44\",\"118\":\"0_12\",\"119\":\"0_45\",\"120\":\"0_45\",\"121\":\"0_25\",\"122\":\"0_45\",\"123\":\"0_38\",\"124\":\"0_18\",\"125\":\"0_45\",\"126\":\"0_45\",\"127\":\"0_39\",\"128\":\"0_52\",\"129\":\"0_45\",\"130\":\"0_46\",\"131\":\"0_46\",\"132\":\"0_46\",\"133\":\"0_46\",\"134\":\"0_12\",\"135\":\"0_18\",\"136\":\"0_46\",\"137\":\"0_25\",\"138\":\"0_38\",\"139\":\"0_6\",\"140\":\"0_62\",\"141\":\"0_46\",\"142\":\"0_52\",\"143\":\"0_47\",\"144\":\"0_47\",\"145\":\"0_47\",\"146\":\"0_19\",\"147\":\"0_47\",\"148\":\"0_47\",\"149\":\"0_47\",\"150\":\"0_48\",\"151\":\"0_48\",\"152\":\"0_62\",\"153\":\"0_12\",\"154\":\"0_38\",\"155\":\"0_53\",\"156\":\"0_26\",\"157\":\"0_60\",\"158\":\"0_48\",\"159\":\"0_48\",\"160\":\"0_48\",\"161\":\"0_48\",\"162\":\"0_49\",\"163\":\"0_49\",\"164\":\"0_27\",\"165\":\"0_49\",\"166\":\"0_49\",\"167\":\"0_49\",\"168\":\"0_19\",\"169\":\"0_53\",\"170\":\"0_26\",\"171\":\"0_53\",\"172\":\"0_26\",\"173\":\"0_53\",\"174\":\"0_53\",\"175\":\"0_53\",\"176\":\"0_14\",\"177\":\"0_0\",\"178\":\"0_39\",\"179\":\"0_19\",\"180\":\"0_13\",\"181\":\"0_54\",\"182\":\"0_54\",\"183\":\"0_12\",\"184\":\"0_54\",\"185\":\"0_54\",\"186\":\"0_54\",\"187\":\"0_26\",\"188\":\"0_63\",\"189\":\"0_54\",\"190\":\"0_19\",\"191\":\"0_55\",\"192\":\"0_55\",\"193\":\"0_39\",\"194\":\"0_55\",\"195\":\"0_55\",\"196\":\"0_5\",\"197\":\"0_13\",\"198\":\"0_55\",\"199\":\"0_55\",\"200\":\"0_38\",\"201\":\"0_1\",\"202\":\"0_56\",\"203\":\"0_56\",\"204\":\"0_10\",\"205\":\"0_56\",\"206\":\"0_56\",\"207\":\"0_0\",\"208\":\"0_56\",\"209\":\"0_5\",\"210\":\"0_56\",\"211\":\"0_57\",\"212\":\"0_50\",\"213\":\"0_63\",\"214\":\"0_57\",\"215\":\"0_13\",\"216\":\"0_57\",\"217\":\"0_57\",\"218\":\"0_57\",\"219\":\"0_27\",\"220\":\"0_57\",\"221\":\"0_11\",\"222\":\"0_5\",\"223\":\"0_17\",\"224\":\"0_19\",\"225\":\"0_58\",\"226\":\"0_63\",\"227\":\"0_58\",\"228\":\"0_58\",\"229\":\"0_58\",\"230\":\"0_58\",\"231\":\"0_58\",\"232\":\"0_13\",\"233\":\"0_59\",\"234\":\"0_59\",\"235\":\"0_19\",\"236\":\"0_27\",\"237\":\"0_5\",\"238\":\"0_63\",\"239\":\"0_39\",\"240\":\"0_59\",\"241\":\"0_59\",\"242\":\"0_59\",\"243\":\"0_59\",\"244\":\"0_6\",\"245\":\"0_6\",\"246\":\"0_11\",\"247\":\"0_6\",\"248\":\"0_6\",\"249\":\"0_13\",\"250\":\"0_63\",\"251\":\"0_39\",\"252\":\"0_63\",\"253\":\"0_4\",\"254\":\"0_7\",\"255\":\"0_7\",\"256\":\"0_7\",\"257\":\"0_28\",\"258\":\"0_23\",\"259\":\"0_50\",\"260\":\"0_27\",\"261\":\"0_7\",\"262\":\"0_14\",\"263\":\"0_27\",\"264\":\"0_7\",\"265\":\"0_7\",\"266\":\"0_8\",\"267\":\"0_4\",\"268\":\"0_2\",\"269\":\"0_8\",\"270\":\"0_8\",\"271\":\"0_8\",\"272\":\"0_50\",\"273\":\"0_8\",\"274\":\"0_8\",\"275\":\"0_6\",\"276\":\"0_28\",\"277\":\"0_9\",\"278\":\"0_9\",\"279\":\"0_5\",\"280\":\"0_14\",\"281\":\"0_9\",\"282\":\"0_25\",\"283\":\"0_9\",\"284\":\"0_9\",\"285\":\"0_1\",\"286\":\"0_9\",\"287\":\"0_60\",\"288\":\"status_quo\",\"289\":\"status_quo\",\"290\":\"0_2\",\"291\":\"status_quo\",\"292\":\"0_28\",\"293\":\"status_quo\",\"294\":\"status_quo\",\"295\":\"status_quo\",\"296\":\"0_4\",\"297\":\"0_14\",\"298\":\"0_26\",\"299\":\"0_60\",\"300\":\"0_0\",\"301\":\"0_2\",\"302\":\"0_14\",\"303\":\"0_14\",\"304\":\"0_15\",\"305\":\"0_15\",\"306\":\"0_15\",\"307\":\"0_28\",\"308\":\"0_15\",\"309\":\"0_15\",\"310\":\"0_4\",\"311\":\"0_60\",\"312\":\"0_2\",\"313\":\"0_50\",\"314\":\"0_15\",\"315\":\"0_16\",\"316\":\"0_16\",\"317\":\"0_0\",\"318\":\"0_16\",\"319\":\"0_16\",\"320\":\"0_16\",\"321\":\"0_16\",\"322\":\"0_28\",\"323\":\"0_2\",\"324\":\"0_12\",\"325\":\"0_2\",\"326\":\"0_51\",\"327\":\"0_20\",\"328\":\"0_20\",\"329\":\"0_1\",\"330\":\"0_37\",\"331\":\"0_61\",\"332\":\"0_40\",\"333\":\"0_20\",\"334\":\"0_28\",\"335\":\"0_4\",\"336\":\"0_20\",\"337\":\"0_20\",\"338\":\"0_20\",\"339\":\"0_51\",\"340\":\"0_21\",\"341\":\"0_21\",\"342\":\"0_21\",\"343\":\"0_61\",\"344\":\"0_21\",\"345\":\"0_21\",\"346\":\"0_17\",\"347\":\"0_40\",\"348\":\"0_21\",\"349\":\"0_1\",\"350\":\"0_29\",\"351\":\"0_22\",\"352\":\"0_38\",\"353\":\"0_22\",\"354\":\"0_22\",\"355\":\"0_24\",\"356\":\"0_22\",\"357\":\"0_17\",\"358\":\"0_22\",\"359\":\"0_22\",\"360\":\"0_23\",\"361\":\"0_40\",\"362\":\"0_23\",\"363\":\"0_23\",\"364\":\"0_23\",\"365\":\"0_51\",\"366\":\"0_29\",\"367\":\"0_39\",\"368\":\"0_17\",\"369\":\"0_23\",\"370\":\"0_29\",\"371\":\"0_29\",\"372\":\"0_29\",\"373\":\"0_29\",\"374\":\"0_3\",\"375\":\"0_40\",\"376\":\"0_3\",\"377\":\"0_10\",\"378\":\"0_51\",\"379\":\"0_17\",\"380\":\"0_13\",\"381\":\"0_3\",\"382\":\"0_3\",\"383\":\"0_3\",\"384\":\"0_24\",\"385\":\"0_3\",\"386\":\"0_30\",\"387\":\"0_30\",\"388\":\"0_30\",\"389\":\"0_40\"},\"trial_index\":{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0,\"13\":0,\"14\":0,\"15\":0,\"16\":0,\"17\":0,\"18\":0,\"19\":0,\"20\":0,\"21\":0,\"22\":0,\"23\":0,\"24\":0,\"25\":0,\"26\":0,\"27\":0,\"28\":0,\"29\":0,\"30\":0,\"31\":0,\"32\":0,\"33\":0,\"34\":0,\"35\":0,\"36\":0,\"37\":0,\"38\":0,\"39\":0,\"40\":0,\"41\":0,\"42\":0,\"43\":0,\"44\":0,\"45\":0,\"46\":0,\"47\":0,\"48\":0,\"49\":0,\"50\":0,\"51\":0,\"52\":0,\"53\":0,\"54\":0,\"55\":0,\"56\":0,\"57\":0,\"58\":0,\"59\":0,\"60\":0,\"61\":0,\"62\":0,\"63\":0,\"64\":0,\"65\":0,\"66\":0,\"67\":0,\"68\":0,\"69\":0,\"70\":0,\"71\":0,\"72\":0,\"73\":0,\"74\":0,\"75\":0,\"76\":0,\"77\":0,\"78\":0,\"79\":0,\"80\":0,\"81\":0,\"82\":0,\"83\":0,\"84\":0,\"85\":0,\"86\":0,\"87\":0,\"88\":0,\"89\":0,\"90\":0,\"91\":0,\"92\":0,\"93\":0,\"94\":0,\"95\":0,\"96\":0,\"97\":0,\"98\":0,\"99\":0,\"100\":0,\"101\":0,\"102\":0,\"103\":0,\"104\":0,\"105\":0,\"106\":0,\"107\":0,\"108\":0,\"109\":0,\"110\":0,\"111\":0,\"112\":0,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":0,\"120\":0,\"121\":0,\"122\":0,\"123\":0,\"124\":0,\"125\":0,\"126\":0,\"127\":0,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":0,\"141\":0,\"142\":0,\"143\":0,\"144\":0,\"145\":0,\"146\":0,\"147\":0,\"148\":0,\"149\":0,\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"155\":0,\"156\":0,\"157\":0,\"158\":0,\"159\":0,\"160\":0,\"161\":0,\"162\":0,\"163\":0,\"164\":0,\"165\":0,\"166\":0,\"167\":0,\"168\":0,\"169\":0,\"170\":0,\"171\":0,\"172\":0,\"173\":0,\"174\":0,\"175\":0,\"176\":0,\"177\":0,\"178\":0,\"179\":0,\"180\":0,\"181\":0,\"182\":0,\"183\":0,\"184\":0,\"185\":0,\"186\":0,\"187\":0,\"188\":0,\"189\":0,\"190\":0,\"191\":0,\"192\":0,\"193\":0,\"194\":0,\"195\":0,\"196\":0,\"197\":0,\"198\":0,\"199\":0,\"200\":0,\"201\":0,\"202\":0,\"203\":0,\"204\":0,\"205\":0,\"206\":0,\"207\":0,\"208\":0,\"209\":0,\"210\":0,\"211\":0,\"212\":0,\"213\":0,\"214\":0,\"215\":0,\"216\":0,\"217\":0,\"218\":0,\"219\":0,\"220\":0,\"221\":0,\"222\":0,\"223\":0,\"224\":0,\"225\":0,\"226\":0,\"227\":0,\"228\":0,\"229\":0,\"230\":0,\"231\":0,\"232\":0,\"233\":0,\"234\":0,\"235\":0,\"236\":0,\"237\":0,\"238\":0,\"239\":0,\"240\":0,\"241\":0,\"242\":0,\"243\":0,\"244\":0,\"245\":0,\"246\":0,\"247\":0,\"248\":0,\"249\":0,\"250\":0,\"251\":0,\"252\":0,\"253\":0,\"254\":0,\"255\":0,\"256\":0,\"257\":0,\"258\":0,\"259\":0,\"260\":0,\"261\":0,\"262\":0,\"263\":0,\"264\":0,\"265\":0,\"266\":0,\"267\":0,\"268\":0,\"269\":0,\"270\":0,\"271\":0,\"272\":0,\"273\":0,\"274\":0,\"275\":0,\"276\":0,\"277\":0,\"278\":0,\"279\":0,\"280\":0,\"281\":0,\"282\":0,\"283\":0,\"284\":0,\"285\":0,\"286\":0,\"287\":0,\"288\":0,\"289\":0,\"290\":0,\"291\":0,\"292\":0,\"293\":0,\"294\":0,\"295\":0,\"296\":0,\"297\":0,\"298\":0,\"299\":0,\"300\":0,\"301\":0,\"302\":0,\"303\":0,\"304\":0,\"305\":0,\"306\":0,\"307\":0,\"308\":0,\"309\":0,\"310\":0,\"311\":0,\"312\":0,\"313\":0,\"314\":0,\"315\":0,\"316\":0,\"317\":0,\"318\":0,\"319\":0,\"320\":0,\"321\":0,\"322\":0,\"323\":0,\"324\":0,\"325\":0,\"326\":0,\"327\":0,\"328\":0,\"329\":0,\"330\":0,\"331\":0,\"332\":0,\"333\":0,\"334\":0,\"335\":0,\"336\":0,\"337\":0,\"338\":0,\"339\":0,\"340\":0,\"341\":0,\"342\":0,\"343\":0,\"344\":0,\"345\":0,\"346\":0,\"347\":0,\"348\":0,\"349\":0,\"350\":0,\"351\":0,\"352\":0,\"353\":0,\"354\":0,\"355\":0,\"356\":0,\"357\":0,\"358\":0,\"359\":0,\"360\":0,\"361\":0,\"362\":0,\"363\":0,\"364\":0,\"365\":0,\"366\":0,\"367\":0,\"368\":0,\"369\":0,\"370\":0,\"371\":0,\"372\":0,\"373\":0,\"374\":0,\"375\":0,\"376\":0,\"377\":0,\"378\":0,\"379\":0,\"380\":0,\"381\":0,\"382\":0,\"383\":0,\"384\":0,\"385\":0,\"386\":0,\"387\":0,\"388\":0,\"389\":0},\"end_time\":{\"0\":1554249600000,\"1\":1554249600000,\"2\":1554249600000,\"3\":1554249600000,\"4\":1554249600000,\"5\":1554249600000,\"6\":1554249600000,\"7\":1554249600000,\"8\":1554249600000,\"9\":1554249600000,\"10\":1554249600000,\"11\":1554249600000,\"12\":1554249600000,\"13\":1554249600000,\"14\":1554249600000,\"15\":1554249600000,\"16\":1554249600000,\"17\":1554249600000,\"18\":1554249600000,\"19\":1554249600000,\"20\":1554249600000,\"21\":1554249600000,\"22\":1554249600000,\"23\":1554249600000,\"24\":1554249600000,\"25\":1554249600000,\"26\":1554249600000,\"27\":1554249600000,\"28\":1554249600000,\"29\":1554249600000,\"30\":1554249600000,\"31\":1554249600000,\"32\":1554249600000,\"33\":1554249600000,\"34\":1554249600000,\"35\":1554249600000,\"36\":1554249600000,\"37\":1554249600000,\"38\":1554249600000,\"39\":1554249600000,\"40\":1554249600000,\"41\":1554249600000,\"42\":1554249600000,\"43\":1554249600000,\"44\":1554249600000,\"45\":1554249600000,\"46\":1554249600000,\"47\":1554249600000,\"48\":1554249600000,\"49\":1554249600000,\"50\":1554249600000,\"51\":1554249600000,\"52\":1554249600000,\"53\":1554249600000,\"54\":1554249600000,\"55\":1554249600000,\"56\":1554249600000,\"57\":1554249600000,\"58\":1554249600000,\"59\":1554249600000,\"60\":1554249600000,\"61\":1554249600000,\"62\":1554249600000,\"63\":1554249600000,\"64\":1554249600000,\"65\":1554249600000,\"66\":1554249600000,\"67\":1554249600000,\"68\":1554249600000,\"69\":1554249600000,\"70\":1554249600000,\"71\":1554249600000,\"72\":1554249600000,\"73\":1554249600000,\"74\":1554249600000,\"75\":1554249600000,\"76\":1554249600000,\"77\":1554249600000,\"78\":1554249600000,\"79\":1554249600000,\"80\":1554249600000,\"81\":1554249600000,\"82\":1554249600000,\"83\":1554249600000,\"84\":1554249600000,\"85\":1554249600000,\"86\":1554249600000,\"87\":1554249600000,\"88\":1554249600000,\"89\":1554249600000,\"90\":1554249600000,\"91\":1554249600000,\"92\":1554249600000,\"93\":1554249600000,\"94\":1554249600000,\"95\":1554249600000,\"96\":1554249600000,\"97\":1554249600000,\"98\":1554249600000,\"99\":1554249600000,\"100\":1554249600000,\"101\":1554249600000,\"102\":1554249600000,\"103\":1554249600000,\"104\":1554249600000,\"105\":1554249600000,\"106\":1554249600000,\"107\":1554249600000,\"108\":1554249600000,\"109\":1554249600000,\"110\":1554249600000,\"111\":1554249600000,\"112\":1554249600000,\"113\":1554249600000,\"114\":1554249600000,\"115\":1554249600000,\"116\":1554249600000,\"117\":1554249600000,\"118\":1554249600000,\"119\":1554249600000,\"120\":1554249600000,\"121\":1554249600000,\"122\":1554249600000,\"123\":1554249600000,\"124\":1554249600000,\"125\":1554249600000,\"126\":1554249600000,\"127\":1554249600000,\"128\":1554249600000,\"129\":1554249600000,\"130\":1554249600000,\"131\":1554249600000,\"132\":1554249600000,\"133\":1554249600000,\"134\":1554249600000,\"135\":1554249600000,\"136\":1554249600000,\"137\":1554249600000,\"138\":1554249600000,\"139\":1554249600000,\"140\":1554249600000,\"141\":1554249600000,\"142\":1554249600000,\"143\":1554249600000,\"144\":1554249600000,\"145\":1554249600000,\"146\":1554249600000,\"147\":1554249600000,\"148\":1554249600000,\"149\":1554249600000,\"150\":1554249600000,\"151\":1554249600000,\"152\":1554249600000,\"153\":1554249600000,\"154\":1554249600000,\"155\":1554249600000,\"156\":1554249600000,\"157\":1554249600000,\"158\":1554249600000,\"159\":1554249600000,\"160\":1554249600000,\"161\":1554249600000,\"162\":1554249600000,\"163\":1554249600000,\"164\":1554249600000,\"165\":1554249600000,\"166\":1554249600000,\"167\":1554249600000,\"168\":1554249600000,\"169\":1554249600000,\"170\":1554249600000,\"171\":1554249600000,\"172\":1554249600000,\"173\":1554249600000,\"174\":1554249600000,\"175\":1554249600000,\"176\":1554249600000,\"177\":1554249600000,\"178\":1554249600000,\"179\":1554249600000,\"180\":1554249600000,\"181\":1554249600000,\"182\":1554249600000,\"183\":1554249600000,\"184\":1554249600000,\"185\":1554249600000,\"186\":1554249600000,\"187\":1554249600000,\"188\":1554249600000,\"189\":1554249600000,\"190\":1554249600000,\"191\":1554249600000,\"192\":1554249600000,\"193\":1554249600000,\"194\":1554249600000,\"195\":1554249600000,\"196\":1554249600000,\"197\":1554249600000,\"198\":1554249600000,\"199\":1554249600000,\"200\":1554249600000,\"201\":1554249600000,\"202\":1554249600000,\"203\":1554249600000,\"204\":1554249600000,\"205\":1554249600000,\"206\":1554249600000,\"207\":1554249600000,\"208\":1554249600000,\"209\":1554249600000,\"210\":1554249600000,\"211\":1554249600000,\"212\":1554249600000,\"213\":1554249600000,\"214\":1554249600000,\"215\":1554249600000,\"216\":1554249600000,\"217\":1554249600000,\"218\":1554249600000,\"219\":1554249600000,\"220\":1554249600000,\"221\":1554249600000,\"222\":1554249600000,\"223\":1554249600000,\"224\":1554249600000,\"225\":1554249600000,\"226\":1554249600000,\"227\":1554249600000,\"228\":1554249600000,\"229\":1554249600000,\"230\":1554249600000,\"231\":1554249600000,\"232\":1554249600000,\"233\":1554249600000,\"234\":1554249600000,\"235\":1554249600000,\"236\":1554249600000,\"237\":1554249600000,\"238\":1554249600000,\"239\":1554249600000,\"240\":1554249600000,\"241\":1554249600000,\"242\":1554249600000,\"243\":1554249600000,\"244\":1554249600000,\"245\":1554249600000,\"246\":1554249600000,\"247\":1554249600000,\"248\":1554249600000,\"249\":1554249600000,\"250\":1554249600000,\"251\":1554249600000,\"252\":1554249600000,\"253\":1554249600000,\"254\":1554249600000,\"255\":1554249600000,\"256\":1554249600000,\"257\":1554249600000,\"258\":1554249600000,\"259\":1554249600000,\"260\":1554249600000,\"261\":1554249600000,\"262\":1554249600000,\"263\":1554249600000,\"264\":1554249600000,\"265\":1554249600000,\"266\":1554249600000,\"267\":1554249600000,\"268\":1554249600000,\"269\":1554249600000,\"270\":1554249600000,\"271\":1554249600000,\"272\":1554249600000,\"273\":1554249600000,\"274\":1554249600000,\"275\":1554249600000,\"276\":1554249600000,\"277\":1554249600000,\"278\":1554249600000,\"279\":1554249600000,\"280\":1554249600000,\"281\":1554249600000,\"282\":1554249600000,\"283\":1554249600000,\"284\":1554249600000,\"285\":1554249600000,\"286\":1554249600000,\"287\":1554249600000,\"288\":1554249600000,\"289\":1554249600000,\"290\":1554249600000,\"291\":1554249600000,\"292\":1554249600000,\"293\":1554249600000,\"294\":1554249600000,\"295\":1554249600000,\"296\":1554249600000,\"297\":1554249600000,\"298\":1554249600000,\"299\":1554249600000,\"300\":1554249600000,\"301\":1554249600000,\"302\":1554249600000,\"303\":1554249600000,\"304\":1554249600000,\"305\":1554249600000,\"306\":1554249600000,\"307\":1554249600000,\"308\":1554249600000,\"309\":1554249600000,\"310\":1554249600000,\"311\":1554249600000,\"312\":1554249600000,\"313\":1554249600000,\"314\":1554249600000,\"315\":1554249600000,\"316\":1554249600000,\"317\":1554249600000,\"318\":1554249600000,\"319\":1554249600000,\"320\":1554249600000,\"321\":1554249600000,\"322\":1554249600000,\"323\":1554249600000,\"324\":1554249600000,\"325\":1554249600000,\"326\":1554249600000,\"327\":1554249600000,\"328\":1554249600000,\"329\":1554249600000,\"330\":1554249600000,\"331\":1554249600000,\"332\":1554249600000,\"333\":1554249600000,\"334\":1554249600000,\"335\":1554249600000,\"336\":1554249600000,\"337\":1554249600000,\"338\":1554249600000,\"339\":1554249600000,\"340\":1554249600000,\"341\":1554249600000,\"342\":1554249600000,\"343\":1554249600000,\"344\":1554249600000,\"345\":1554249600000,\"346\":1554249600000,\"347\":1554249600000,\"348\":1554249600000,\"349\":1554249600000,\"350\":1554249600000,\"351\":1554249600000,\"352\":1554249600000,\"353\":1554249600000,\"354\":1554249600000,\"355\":1554249600000,\"356\":1554249600000,\"357\":1554249600000,\"358\":1554249600000,\"359\":1554249600000,\"360\":1554249600000,\"361\":1554249600000,\"362\":1554249600000,\"363\":1554249600000,\"364\":1554249600000,\"365\":1554249600000,\"366\":1554249600000,\"367\":1554249600000,\"368\":1554249600000,\"369\":1554249600000,\"370\":1554249600000,\"371\":1554249600000,\"372\":1554249600000,\"373\":1554249600000,\"374\":1554249600000,\"375\":1554249600000,\"376\":1554249600000,\"377\":1554249600000,\"378\":1554249600000,\"379\":1554249600000,\"380\":1554249600000,\"381\":1554249600000,\"382\":1554249600000,\"383\":1554249600000,\"384\":1554249600000,\"385\":1554249600000,\"386\":1554249600000,\"387\":1554249600000,\"388\":1554249600000,\"389\":1554249600000},\"frac_nonnull\":{\"0\":0.4006647191,\"1\":0.0151982196,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":1.0,\"8\":1.0,\"9\":0.400760605,\"10\":0.0152601992,\"11\":0.0151656937,\"12\":1.0,\"13\":0.4006552525,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.4001985035,\"22\":0.0149559719,\"23\":1.0,\"24\":0.400938205,\"25\":1.0,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":1.0,\"30\":1.0,\"31\":0.4010821077,\"32\":1.0,\"33\":1.0,\"34\":0.0152126104,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":0.4002239113,\"41\":1.0,\"42\":0.0152552051,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":0.0150129063,\"47\":0.4006498841,\"48\":1.0,\"49\":0.4010185899,\"50\":1.0,\"51\":1.0,\"52\":1.0,\"53\":1.0,\"54\":0.4011022914,\"55\":0.015038627,\"56\":1.0,\"57\":1.0,\"58\":1.0,\"59\":1.0,\"60\":0.0152040102,\"61\":1.0,\"62\":1.0,\"63\":0.0151455312,\"64\":0.4009188229,\"65\":0.4007839484,\"66\":0.40072426,\"67\":0.0150845824,\"68\":1.0,\"69\":1.0,\"70\":1.0,\"71\":1.0,\"72\":1.0,\"73\":1.0,\"74\":0.4008617967,\"75\":0.0151155307,\"76\":1.0,\"77\":0.400684664,\"78\":1.0,\"79\":1.0,\"80\":0.0150250605,\"81\":1.0,\"82\":1.0,\"83\":1.0,\"84\":1.0,\"85\":0.4007686544,\"86\":1.0,\"87\":0.0150565095,\"88\":1.0,\"89\":0.0152288932,\"90\":0.0150387372,\"91\":1.0,\"92\":1.0,\"93\":1.0,\"94\":1.0,\"95\":1.0,\"96\":0.4001714493,\"97\":0.0150721531,\"98\":1.0,\"99\":1.0,\"100\":1.0,\"101\":1.0,\"102\":1.0,\"103\":1.0,\"104\":1.0,\"105\":1.0,\"106\":1.0,\"107\":0.4009186426,\"108\":1.0,\"109\":0.0151225294,\"110\":1.0,\"111\":1.0,\"112\":1.0,\"113\":1.0,\"114\":0.3996468504,\"115\":1.0,\"116\":1.0,\"117\":1.0,\"118\":0.4004868244,\"119\":0.401189132,\"120\":0.0150421138,\"121\":1.0,\"122\":1.0,\"123\":0.4009397916,\"124\":1.0,\"125\":1.0,\"126\":1.0,\"127\":1.0,\"128\":1.0,\"129\":1.0,\"130\":0.4004329194,\"131\":0.015122175,\"132\":1.0,\"133\":1.0,\"134\":0.0149714759,\"135\":1.0,\"136\":1.0,\"137\":1.0,\"138\":0.0150719645,\"139\":1.0,\"140\":1.0,\"141\":1.0,\"142\":1.0,\"143\":0.40074421,\"144\":0.0150534518,\"145\":1.0,\"146\":0.4002186314,\"147\":1.0,\"148\":1.0,\"149\":1.0,\"150\":0.4005793146,\"151\":0.0150889215,\"152\":1.0,\"153\":1.0,\"154\":1.0,\"155\":0.3998123768,\"156\":0.4015930499,\"157\":1.0,\"158\":1.0,\"159\":1.0,\"160\":1.0,\"161\":1.0,\"162\":0.4009548524,\"163\":0.0151173498,\"164\":1.0,\"165\":1.0,\"166\":1.0,\"167\":1.0,\"168\":0.0152323224,\"169\":0.01508231,\"170\":0.0150867515,\"171\":1.0,\"172\":1.0,\"173\":1.0,\"174\":1.0,\"175\":1.0,\"176\":0.4005838086,\"177\":1.0,\"178\":0.4001950199,\"179\":1.0,\"180\":0.4000547261,\"181\":0.4008762151,\"182\":0.0150271579,\"183\":1.0,\"184\":1.0,\"185\":1.0,\"186\":1.0,\"187\":1.0,\"188\":0.3999673603,\"189\":1.0,\"190\":1.0,\"191\":0.400477327,\"192\":0.0149558285,\"193\":0.0150577111,\"194\":1.0,\"195\":1.0,\"196\":0.4008329122,\"197\":0.0150703425,\"198\":1.0,\"199\":1.0,\"200\":1.0,\"201\":0.0150538065,\"202\":0.4006358843,\"203\":0.0152734721,\"204\":0.4006435966,\"205\":1.0,\"206\":1.0,\"207\":1.0,\"208\":1.0,\"209\":0.0151366381,\"210\":1.0,\"211\":0.4006569625,\"212\":1.0,\"213\":0.0149695467,\"214\":0.0149711531,\"215\":1.0,\"216\":1.0,\"217\":1.0,\"218\":1.0,\"219\":0.4003067734,\"220\":1.0,\"221\":1.0,\"222\":1.0,\"223\":0.4015295661,\"224\":1.0,\"225\":0.4002131547,\"226\":1.0,\"227\":0.015231368,\"228\":1.0,\"229\":1.0,\"230\":1.0,\"231\":1.0,\"232\":1.0,\"233\":0.4012182078,\"234\":0.0150518527,\"235\":1.0,\"236\":0.0149459801,\"237\":1.0,\"238\":1.0,\"239\":1.0,\"240\":1.0,\"241\":1.0,\"242\":1.0,\"243\":1.0,\"244\":0.4007214373,\"245\":0.0151311855,\"246\":1.0,\"247\":1.0,\"248\":1.0,\"249\":1.0,\"250\":1.0,\"251\":1.0,\"252\":1.0,\"253\":0.4004389493,\"254\":0.4004784238,\"255\":0.0151505023,\"256\":1.0,\"257\":1.0,\"258\":1.0,\"259\":0.0149231524,\"260\":1.0,\"261\":1.0,\"262\":0.015068286,\"263\":1.0,\"264\":1.0,\"265\":1.0,\"266\":0.4007403163,\"267\":0.0151637022,\"268\":0.4006455676,\"269\":0.0151953745,\"270\":1.0,\"271\":1.0,\"272\":1.0,\"273\":1.0,\"274\":1.0,\"275\":1.0,\"276\":0.4002292209,\"277\":0.400068497,\"278\":0.0151868261,\"279\":1.0,\"280\":1.0,\"281\":1.0,\"282\":0.0149428244,\"283\":1.0,\"284\":1.0,\"285\":1.0,\"286\":1.0,\"287\":0.4002400223,\"288\":0.4006553628,\"289\":0.0150827506,\"290\":0.0151294759,\"291\":1.0,\"292\":0.0150518403,\"293\":1.0,\"294\":1.0,\"295\":1.0,\"296\":1.0,\"297\":1.0,\"298\":1.0,\"299\":0.0150042316,\"300\":1.0,\"301\":1.0,\"302\":1.0,\"303\":1.0,\"304\":0.4008739846,\"305\":0.0150636319,\"306\":1.0,\"307\":1.0,\"308\":1.0,\"309\":1.0,\"310\":1.0,\"311\":1.0,\"312\":1.0,\"313\":1.0,\"314\":1.0,\"315\":0.4007229596,\"316\":0.0151290628,\"317\":1.0,\"318\":1.0,\"319\":1.0,\"320\":1.0,\"321\":1.0,\"322\":1.0,\"323\":1.0,\"324\":1.0,\"325\":1.0,\"326\":0.4012565808,\"327\":0.4004763896,\"328\":0.015237957,\"329\":1.0,\"330\":1.0,\"331\":0.4002211191,\"332\":0.4000476233,\"333\":1.0,\"334\":1.0,\"335\":1.0,\"336\":1.0,\"337\":1.0,\"338\":1.0,\"339\":0.0151030023,\"340\":0.4014774874,\"341\":0.015260906,\"342\":1.0,\"343\":0.0150726354,\"344\":1.0,\"345\":1.0,\"346\":0.0151630146,\"347\":0.0150332144,\"348\":1.0,\"349\":1.0,\"350\":0.4002082938,\"351\":0.4004310245,\"352\":1.0,\"353\":0.0151402204,\"354\":1.0,\"355\":1.0,\"356\":1.0,\"357\":1.0,\"358\":1.0,\"359\":1.0,\"360\":0.4005788186,\"361\":1.0,\"362\":0.0149164816,\"363\":1.0,\"364\":1.0,\"365\":1.0,\"366\":0.0151732788,\"367\":1.0,\"368\":1.0,\"369\":1.0,\"370\":1.0,\"371\":1.0,\"372\":1.0,\"373\":1.0,\"374\":0.4002656177,\"375\":1.0,\"376\":0.0150955022,\"377\":1.0,\"378\":1.0,\"379\":1.0,\"380\":1.0,\"381\":1.0,\"382\":1.0,\"383\":1.0,\"384\":0.4012060793,\"385\":1.0,\"386\":0.4007449747,\"387\":0.0150758262,\"388\":1.0,\"389\":1.0},\"mean\":{\"0\":107.826161775,\"1\":0.0575654741,\"2\":37584.8752081701,\"3\":20.9665899154,\"4\":21.7242086794,\"5\":557.4607775851,\"6\":556.5377087941,\"7\":37566.6513249893,\"8\":20.8329037214,\"9\":107.0019833449,\"10\":0.0563588536,\"11\":0.0570646653,\"12\":0.930568168,\"13\":106.6552643322,\"14\":20.3378701446,\"15\":467.2184408422,\"16\":573.3120395727,\"17\":0.9384860068,\"18\":38015.5793197679,\"19\":37558.3819295608,\"20\":37533.3697541759,\"21\":107.4664950308,\"22\":0.0563475738,\"23\":0.9371255278,\"24\":107.7177581127,\"25\":22.3791848423,\"26\":515.295209408,\"27\":607.4074370139,\"28\":0.9352998933,\"29\":23.9757863101,\"30\":37582.3339326604,\"31\":106.366162891,\"32\":21.8464368291,\"33\":37122.0014078079,\"34\":0.0565551238,\"35\":603.675982595,\"36\":0.9378539443,\"37\":22.5021574507,\"38\":608.8510984511,\"39\":37307.9439049054,\"40\":106.6284397308,\"41\":616.4068382959,\"42\":0.0569686762,\"43\":37612.6090885912,\"44\":22.0497886839,\"45\":37348.8890484436,\"46\":0.0567631551,\"47\":106.7610433688,\"48\":0.9367926947,\"49\":108.6824364289,\"50\":22.0964238686,\"51\":559.8941905515,\"52\":37482.3726293896,\"53\":37640.1722391869,\"54\":108.3062952392,\"55\":0.0571898752,\"56\":0.9353994604,\"57\":0.9346985611,\"58\":21.7628653048,\"59\":591.6689343409,\"60\":0.0563051464,\"61\":37580.2224375069,\"62\":591.7159041231,\"63\":0.0585348054,\"64\":108.1598999329,\"65\":106.8755916341,\"66\":107.0354461124,\"67\":0.0558451429,\"68\":21.4024551149,\"69\":0.9354913324,\"70\":21.8909111727,\"71\":587.3041249134,\"72\":37748.9505820162,\"73\":37629.124471035,\"74\":106.9719575194,\"75\":0.056618502,\"76\":0.9356149453,\"77\":107.4930305359,\"78\":0.9335151004,\"79\":585.7442575994,\"80\":0.0570993536,\"81\":21.2805836847,\"82\":606.0287973786,\"83\":553.5282754224,\"84\":37776.1838534741,\"85\":107.7478157977,\"86\":0.9348967596,\"87\":0.0564514518,\"88\":0.9355589403,\"89\":0.0582770653,\"90\":0.055300756,\"91\":0.9331811473,\"92\":21.3634606871,\"93\":553.021289756,\"94\":590.4366189889,\"95\":37522.4963610281,\"96\":107.2274485136,\"97\":0.0564013038,\"98\":37430.1112124263,\"99\":21.7808962788,\"100\":0.9334716909,\"101\":37445.1185012562,\"102\":0.9328706913,\"103\":21.2952493848,\"104\":562.1577972569,\"105\":21.6179985553,\"106\":37450.9120865565,\"107\":107.2156721895,\"108\":37604.858691387,\"109\":0.0585864383,\"110\":0.9372682859,\"111\":23.3437396788,\"112\":22.2449087638,\"113\":21.3699028783,\"114\":107.5561493544,\"115\":20.8142903897,\"116\":613.7780565408,\"117\":37410.7168974204,\"118\":108.2876525153,\"119\":108.0091402406,\"120\":0.0576031577,\"121\":591.8642702883,\"122\":0.9341589925,\"123\":107.8408343717,\"124\":578.7612852938,\"125\":21.1457521274,\"126\":563.3181260603,\"127\":37442.0746679861,\"128\":578.7157437369,\"129\":37679.090258879,\"130\":107.6882249181,\"131\":0.0555481937,\"132\":0.9327510676,\"133\":20.9139036438,\"134\":0.0563415568,\"135\":37266.2074408905,\"136\":542.4201844972,\"137\":37664.1559475007,\"138\":0.0563568304,\"139\":563.8285873521,\"140\":504.485065891,\"141\":37560.4529999272,\"142\":36961.4111743747,\"143\":107.2038227261,\"144\":0.0569917703,\"145\":0.9335912162,\"146\":107.3369423977,\"147\":22.5496550999,\"148\":564.6809308568,\"149\":37429.7299639896,\"150\":107.5271538108,\"151\":0.0573778891,\"152\":37552.9974667582,\"153\":0.9335441794,\"154\":0.9344545597,\"155\":108.1737819636,\"156\":108.1201798827,\"157\":37483.3925762854,\"158\":0.9330542836,\"159\":21.4099901782,\"160\":558.7468507311,\"161\":37771.2375049122,\"162\":106.8864904705,\"163\":0.0570473344,\"164\":544.6137262552,\"165\":0.9351752867,\"166\":21.7682980906,\"167\":582.1566478377,\"168\":0.0584673425,\"169\":0.0569796281,\"170\":0.0556704319,\"171\":0.9340237195,\"172\":588.2993554271,\"173\":21.4399818215,\"174\":569.0913562641,\"175\":37430.2529471499,\"176\":107.7661059804,\"177\":20.3718346369,\"178\":108.3178154021,\"179\":0.9333949805,\"180\":107.5474564257,\"181\":108.2667609048,\"182\":0.0564324707,\"183\":21.439423418,\"184\":0.933923306,\"185\":21.3288524244,\"186\":563.378597096,\"187\":37531.5730015806,\"188\":107.0605442143,\"189\":37233.3660610549,\"190\":20.9493417548,\"191\":108.4109953892,\"192\":0.0555348686,\"193\":0.0554460985,\"194\":0.9343857089,\"195\":21.4251428748,\"196\":108.1469572875,\"197\":0.0555219518,\"198\":565.6646868022,\"199\":37663.3582107362,\"200\":580.7430090023,\"201\":0.0584889693,\"202\":106.6952529259,\"203\":0.0578244832,\"204\":107.2539972945,\"205\":0.9349934925,\"206\":21.8386480153,\"207\":0.9310968496,\"208\":587.1104222543,\"209\":0.058235687,\"210\":38133.2309694954,\"211\":107.9365493261,\"212\":37521.8127005736,\"213\":0.0573432504,\"214\":0.0561703587,\"215\":0.9340968742,\"216\":0.9317235544,\"217\":20.8760544195,\"218\":536.7727423826,\"219\":107.3677335161,\"220\":37484.1436674012,\"221\":0.9361198394,\"222\":0.9338255485,\"223\":107.3881184885,\"224\":494.0849962599,\"225\":108.0600096121,\"226\":0.9324179336,\"227\":0.0527639884,\"228\":0.9338243596,\"229\":21.3419029391,\"230\":570.6400540192,\"231\":37312.8094523108,\"232\":21.3887146337,\"233\":107.8491821709,\"234\":0.0556003041,\"235\":37663.4121010289,\"236\":0.0565955031,\"237\":21.4443189432,\"238\":21.0192880554,\"239\":0.9350288217,\"240\":0.9359929284,\"241\":21.8883782866,\"242\":597.9848551407,\"243\":37650.8326431073,\"244\":107.481058833,\"245\":0.0570325453,\"246\":22.2460380664,\"247\":0.9335160274,\"248\":21.3611621173,\"249\":567.2419293581,\"250\":525.7443768856,\"251\":21.6940362717,\"252\":37595.8425660567,\"253\":108.8554188157,\"254\":108.8979060683,\"255\":0.0577988134,\"256\":0.9333494475,\"257\":537.9460234981,\"258\":545.4608952069,\"259\":0.0559272816,\"260\":37263.6270763449,\"261\":21.2418857324,\"262\":0.0573172302,\"263\":0.9343076079,\"264\":560.4658964853,\"265\":37663.786589795,\"266\":108.2160896836,\"267\":0.0569683354,\"268\":108.0543652668,\"269\":0.0576891322,\"270\":0.9335799645,\"271\":21.1345879133,\"272\":0.9353241273,\"273\":568.1433548751,\"274\":37063.3847876582,\"275\":37494.644541449,\"276\":107.7843198644,\"277\":107.399279157,\"278\":0.0555912831,\"279\":37495.1409590009,\"280\":0.9350378463,\"281\":0.9322968789,\"282\":0.0568363124,\"283\":21.0013732769,\"284\":535.203876843,\"285\":515.7126930737,\"286\":37539.4694854888,\"287\":106.7416071025,\"288\":107.8859740177,\"289\":0.0569384612,\"290\":0.0569095481,\"291\":0.9350923011,\"292\":0.056023517,\"293\":21.6335257209,\"294\":586.3861053697,\"295\":37446.9854386155,\"296\":0.9340406699,\"297\":21.4693171637,\"298\":0.9354395555,\"299\":0.0561164064,\"300\":480.2483906147,\"301\":0.9338580717,\"302\":580.6437354793,\"303\":37576.5827919862,\"304\":106.5938223161,\"305\":0.0592469497,\"306\":0.9337679695,\"307\":0.9322490439,\"308\":21.0690555743,\"309\":533.838540231,\"310\":21.2685250627,\"311\":0.9359832023,\"312\":21.4276161476,\"313\":22.1673585764,\"314\":37531.5923667457,\"315\":105.7240113615,\"316\":0.0558809959,\"317\":37632.0757980624,\"318\":0.9362771291,\"319\":22.1223815743,\"320\":602.7819638778,\"321\":37709.7886667735,\"322\":21.1403304733,\"323\":565.2938494126,\"324\":565.6119294856,\"325\":37468.3297780697,\"326\":107.2613472789,\"327\":109.3682043143,\"328\":0.0580754663,\"329\":0.9319814826,\"330\":22.6739207706,\"331\":105.9620355554,\"332\":108.0386654975,\"333\":0.9351364141,\"334\":37647.1782120187,\"335\":568.9180717457,\"336\":21.6748662007,\"337\":585.2059607528,\"338\":37878.6308495364,\"339\":0.0556399062,\"340\":108.4597525428,\"341\":0.0564622872,\"342\":0.9348463759,\"343\":0.0572219632,\"344\":21.6473922281,\"345\":589.9976112943,\"346\":0.0550702621,\"347\":0.0575423251,\"348\":37436.5309788938,\"349\":20.8531297276,\"350\":107.2169547919,\"351\":108.2950237226,\"352\":37370.9407466289,\"353\":0.0561444113,\"354\":0.9359114584,\"355\":37492.8270398294,\"356\":21.625076637,\"357\":0.9343331548,\"358\":597.6064080328,\"359\":37373.0917519477,\"360\":107.9953494054,\"361\":0.9330083285,\"362\":0.0575536143,\"363\":0.9330932709,\"364\":20.8818104012,\"365\":0.9333562061,\"366\":0.0573828206,\"367\":586.0497267315,\"368\":21.674842235,\"369\":37337.6661936355,\"370\":0.9360415151,\"371\":23.0129427805,\"372\":591.9954763641,\"373\":37652.1481579212,\"374\":108.147545572,\"375\":20.9034144346,\"376\":0.0562556041,\"377\":0.9318916145,\"378\":21.3355048,\"379\":578.4840793957,\"380\":37638.7998899846,\"381\":0.9340079042,\"382\":21.5310980232,\"383\":568.6786242275,\"384\":108.299395085,\"385\":37644.5325722723,\"386\":107.1486704072,\"387\":0.054461813,\"388\":0.9330929645,\"389\":529.4822824938},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"wilde_scroll_frame_drops_per_minute\",\"3\":\"video:encoding:iphone_live_playback_mos_loss\",\"4\":\"video:encoding:iphone_live_playback_mos_loss\",\"5\":\"video:sbl_iphone_is_live__smtbr\",\"6\":\"video:sbl_iphone_is_live__smtbr\",\"7\":\"wilde_scroll_frame_drops_per_minute\",\"8\":\"video:encoding:iphone_live_playback_mos_loss\",\"9\":\"is_live_watch_time_given_iphone\",\"10\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"11\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"12\":\"sbl_iphone_is_live__psr_1_start\",\"13\":\"is_live_watch_time_given_iphone\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"video:sbl_iphone_is_live__smtbr\",\"16\":\"video:sbl_iphone_is_live__smtbr\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"wilde_scroll_frame_drops_per_minute\",\"19\":\"wilde_scroll_frame_drops_per_minute\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"video:encoding:iphone_live_playback_mos_loss\",\"26\":\"video:sbl_iphone_is_live__smtbr\",\"27\":\"video:sbl_iphone_is_live__smtbr\",\"28\":\"sbl_iphone_is_live__psr_1_start\",\"29\":\"video:encoding:iphone_live_playback_mos_loss\",\"30\":\"wilde_scroll_frame_drops_per_minute\",\"31\":\"is_live_watch_time_given_iphone\",\"32\":\"video:encoding:iphone_live_playback_mos_loss\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:sbl_iphone_is_live__smtbr\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"wilde_scroll_frame_drops_per_minute\",\"40\":\"is_live_watch_time_given_iphone\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"43\":\"wilde_scroll_frame_drops_per_minute\",\"44\":\"video:encoding:iphone_live_playback_mos_loss\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"sbl_iphone_is_live__psr_1_start\",\"49\":\"is_live_watch_time_given_iphone\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"video:sbl_iphone_is_live__smtbr\",\"52\":\"wilde_scroll_frame_drops_per_minute\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"is_live_watch_time_given_iphone\",\"55\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"56\":\"sbl_iphone_is_live__psr_1_start\",\"57\":\"sbl_iphone_is_live__psr_1_start\",\"58\":\"video:encoding:iphone_live_playback_mos_loss\",\"59\":\"video:sbl_iphone_is_live__smtbr\",\"60\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"61\":\"wilde_scroll_frame_drops_per_minute\",\"62\":\"video:sbl_iphone_is_live__smtbr\",\"63\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"64\":\"is_live_watch_time_given_iphone\",\"65\":\"is_live_watch_time_given_iphone\",\"66\":\"is_live_watch_time_given_iphone\",\"67\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"68\":\"video:encoding:iphone_live_playback_mos_loss\",\"69\":\"sbl_iphone_is_live__psr_1_start\",\"70\":\"video:encoding:iphone_live_playback_mos_loss\",\"71\":\"video:sbl_iphone_is_live__smtbr\",\"72\":\"wilde_scroll_frame_drops_per_minute\",\"73\":\"wilde_scroll_frame_drops_per_minute\",\"74\":\"is_live_watch_time_given_iphone\",\"75\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"76\":\"sbl_iphone_is_live__psr_1_start\",\"77\":\"is_live_watch_time_given_iphone\",\"78\":\"sbl_iphone_is_live__psr_1_start\",\"79\":\"video:sbl_iphone_is_live__smtbr\",\"80\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"81\":\"video:encoding:iphone_live_playback_mos_loss\",\"82\":\"video:sbl_iphone_is_live__smtbr\",\"83\":\"video:sbl_iphone_is_live__smtbr\",\"84\":\"wilde_scroll_frame_drops_per_minute\",\"85\":\"is_live_watch_time_given_iphone\",\"86\":\"sbl_iphone_is_live__psr_1_start\",\"87\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"88\":\"sbl_iphone_is_live__psr_1_start\",\"89\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"90\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"91\":\"sbl_iphone_is_live__psr_1_start\",\"92\":\"video:encoding:iphone_live_playback_mos_loss\",\"93\":\"video:sbl_iphone_is_live__smtbr\",\"94\":\"video:sbl_iphone_is_live__smtbr\",\"95\":\"wilde_scroll_frame_drops_per_minute\",\"96\":\"is_live_watch_time_given_iphone\",\"97\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"98\":\"wilde_scroll_frame_drops_per_minute\",\"99\":\"video:encoding:iphone_live_playback_mos_loss\",\"100\":\"sbl_iphone_is_live__psr_1_start\",\"101\":\"wilde_scroll_frame_drops_per_minute\",\"102\":\"sbl_iphone_is_live__psr_1_start\",\"103\":\"video:encoding:iphone_live_playback_mos_loss\",\"104\":\"video:sbl_iphone_is_live__smtbr\",\"105\":\"video:encoding:iphone_live_playback_mos_loss\",\"106\":\"wilde_scroll_frame_drops_per_minute\",\"107\":\"is_live_watch_time_given_iphone\",\"108\":\"wilde_scroll_frame_drops_per_minute\",\"109\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"110\":\"sbl_iphone_is_live__psr_1_start\",\"111\":\"video:encoding:iphone_live_playback_mos_loss\",\"112\":\"video:encoding:iphone_live_playback_mos_loss\",\"113\":\"video:encoding:iphone_live_playback_mos_loss\",\"114\":\"is_live_watch_time_given_iphone\",\"115\":\"video:encoding:iphone_live_playback_mos_loss\",\"116\":\"video:sbl_iphone_is_live__smtbr\",\"117\":\"wilde_scroll_frame_drops_per_minute\",\"118\":\"is_live_watch_time_given_iphone\",\"119\":\"is_live_watch_time_given_iphone\",\"120\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"121\":\"video:sbl_iphone_is_live__smtbr\",\"122\":\"sbl_iphone_is_live__psr_1_start\",\"123\":\"is_live_watch_time_given_iphone\",\"124\":\"video:sbl_iphone_is_live__smtbr\",\"125\":\"video:encoding:iphone_live_playback_mos_loss\",\"126\":\"video:sbl_iphone_is_live__smtbr\",\"127\":\"wilde_scroll_frame_drops_per_minute\",\"128\":\"video:sbl_iphone_is_live__smtbr\",\"129\":\"wilde_scroll_frame_drops_per_minute\",\"130\":\"is_live_watch_time_given_iphone\",\"131\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"132\":\"sbl_iphone_is_live__psr_1_start\",\"133\":\"video:encoding:iphone_live_playback_mos_loss\",\"134\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"135\":\"wilde_scroll_frame_drops_per_minute\",\"136\":\"video:sbl_iphone_is_live__smtbr\",\"137\":\"wilde_scroll_frame_drops_per_minute\",\"138\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"139\":\"video:sbl_iphone_is_live__smtbr\",\"140\":\"video:sbl_iphone_is_live__smtbr\",\"141\":\"wilde_scroll_frame_drops_per_minute\",\"142\":\"wilde_scroll_frame_drops_per_minute\",\"143\":\"is_live_watch_time_given_iphone\",\"144\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"145\":\"sbl_iphone_is_live__psr_1_start\",\"146\":\"is_live_watch_time_given_iphone\",\"147\":\"video:encoding:iphone_live_playback_mos_loss\",\"148\":\"video:sbl_iphone_is_live__smtbr\",\"149\":\"wilde_scroll_frame_drops_per_minute\",\"150\":\"is_live_watch_time_given_iphone\",\"151\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"152\":\"wilde_scroll_frame_drops_per_minute\",\"153\":\"sbl_iphone_is_live__psr_1_start\",\"154\":\"sbl_iphone_is_live__psr_1_start\",\"155\":\"is_live_watch_time_given_iphone\",\"156\":\"is_live_watch_time_given_iphone\",\"157\":\"wilde_scroll_frame_drops_per_minute\",\"158\":\"sbl_iphone_is_live__psr_1_start\",\"159\":\"video:encoding:iphone_live_playback_mos_loss\",\"160\":\"video:sbl_iphone_is_live__smtbr\",\"161\":\"wilde_scroll_frame_drops_per_minute\",\"162\":\"is_live_watch_time_given_iphone\",\"163\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"164\":\"video:sbl_iphone_is_live__smtbr\",\"165\":\"sbl_iphone_is_live__psr_1_start\",\"166\":\"video:encoding:iphone_live_playback_mos_loss\",\"167\":\"video:sbl_iphone_is_live__smtbr\",\"168\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"169\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"170\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"171\":\"sbl_iphone_is_live__psr_1_start\",\"172\":\"video:sbl_iphone_is_live__smtbr\",\"173\":\"video:encoding:iphone_live_playback_mos_loss\",\"174\":\"video:sbl_iphone_is_live__smtbr\",\"175\":\"wilde_scroll_frame_drops_per_minute\",\"176\":\"is_live_watch_time_given_iphone\",\"177\":\"video:encoding:iphone_live_playback_mos_loss\",\"178\":\"is_live_watch_time_given_iphone\",\"179\":\"sbl_iphone_is_live__psr_1_start\",\"180\":\"is_live_watch_time_given_iphone\",\"181\":\"is_live_watch_time_given_iphone\",\"182\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"183\":\"video:encoding:iphone_live_playback_mos_loss\",\"184\":\"sbl_iphone_is_live__psr_1_start\",\"185\":\"video:encoding:iphone_live_playback_mos_loss\",\"186\":\"video:sbl_iphone_is_live__smtbr\",\"187\":\"wilde_scroll_frame_drops_per_minute\",\"188\":\"is_live_watch_time_given_iphone\",\"189\":\"wilde_scroll_frame_drops_per_minute\",\"190\":\"video:encoding:iphone_live_playback_mos_loss\",\"191\":\"is_live_watch_time_given_iphone\",\"192\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"193\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"194\":\"sbl_iphone_is_live__psr_1_start\",\"195\":\"video:encoding:iphone_live_playback_mos_loss\",\"196\":\"is_live_watch_time_given_iphone\",\"197\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"198\":\"video:sbl_iphone_is_live__smtbr\",\"199\":\"wilde_scroll_frame_drops_per_minute\",\"200\":\"video:sbl_iphone_is_live__smtbr\",\"201\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"202\":\"is_live_watch_time_given_iphone\",\"203\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"204\":\"is_live_watch_time_given_iphone\",\"205\":\"sbl_iphone_is_live__psr_1_start\",\"206\":\"video:encoding:iphone_live_playback_mos_loss\",\"207\":\"sbl_iphone_is_live__psr_1_start\",\"208\":\"video:sbl_iphone_is_live__smtbr\",\"209\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"210\":\"wilde_scroll_frame_drops_per_minute\",\"211\":\"is_live_watch_time_given_iphone\",\"212\":\"wilde_scroll_frame_drops_per_minute\",\"213\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"214\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"215\":\"sbl_iphone_is_live__psr_1_start\",\"216\":\"sbl_iphone_is_live__psr_1_start\",\"217\":\"video:encoding:iphone_live_playback_mos_loss\",\"218\":\"video:sbl_iphone_is_live__smtbr\",\"219\":\"is_live_watch_time_given_iphone\",\"220\":\"wilde_scroll_frame_drops_per_minute\",\"221\":\"sbl_iphone_is_live__psr_1_start\",\"222\":\"sbl_iphone_is_live__psr_1_start\",\"223\":\"is_live_watch_time_given_iphone\",\"224\":\"video:sbl_iphone_is_live__smtbr\",\"225\":\"is_live_watch_time_given_iphone\",\"226\":\"sbl_iphone_is_live__psr_1_start\",\"227\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"228\":\"sbl_iphone_is_live__psr_1_start\",\"229\":\"video:encoding:iphone_live_playback_mos_loss\",\"230\":\"video:sbl_iphone_is_live__smtbr\",\"231\":\"wilde_scroll_frame_drops_per_minute\",\"232\":\"video:encoding:iphone_live_playback_mos_loss\",\"233\":\"is_live_watch_time_given_iphone\",\"234\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"235\":\"wilde_scroll_frame_drops_per_minute\",\"236\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"237\":\"video:encoding:iphone_live_playback_mos_loss\",\"238\":\"video:encoding:iphone_live_playback_mos_loss\",\"239\":\"sbl_iphone_is_live__psr_1_start\",\"240\":\"sbl_iphone_is_live__psr_1_start\",\"241\":\"video:encoding:iphone_live_playback_mos_loss\",\"242\":\"video:sbl_iphone_is_live__smtbr\",\"243\":\"wilde_scroll_frame_drops_per_minute\",\"244\":\"is_live_watch_time_given_iphone\",\"245\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"246\":\"video:encoding:iphone_live_playback_mos_loss\",\"247\":\"sbl_iphone_is_live__psr_1_start\",\"248\":\"video:encoding:iphone_live_playback_mos_loss\",\"249\":\"video:sbl_iphone_is_live__smtbr\",\"250\":\"video:sbl_iphone_is_live__smtbr\",\"251\":\"video:encoding:iphone_live_playback_mos_loss\",\"252\":\"wilde_scroll_frame_drops_per_minute\",\"253\":\"is_live_watch_time_given_iphone\",\"254\":\"is_live_watch_time_given_iphone\",\"255\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"256\":\"sbl_iphone_is_live__psr_1_start\",\"257\":\"video:sbl_iphone_is_live__smtbr\",\"258\":\"video:sbl_iphone_is_live__smtbr\",\"259\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"260\":\"wilde_scroll_frame_drops_per_minute\",\"261\":\"video:encoding:iphone_live_playback_mos_loss\",\"262\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"263\":\"sbl_iphone_is_live__psr_1_start\",\"264\":\"video:sbl_iphone_is_live__smtbr\",\"265\":\"wilde_scroll_frame_drops_per_minute\",\"266\":\"is_live_watch_time_given_iphone\",\"267\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"268\":\"is_live_watch_time_given_iphone\",\"269\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"270\":\"sbl_iphone_is_live__psr_1_start\",\"271\":\"video:encoding:iphone_live_playback_mos_loss\",\"272\":\"sbl_iphone_is_live__psr_1_start\",\"273\":\"video:sbl_iphone_is_live__smtbr\",\"274\":\"wilde_scroll_frame_drops_per_minute\",\"275\":\"wilde_scroll_frame_drops_per_minute\",\"276\":\"is_live_watch_time_given_iphone\",\"277\":\"is_live_watch_time_given_iphone\",\"278\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"279\":\"wilde_scroll_frame_drops_per_minute\",\"280\":\"sbl_iphone_is_live__psr_1_start\",\"281\":\"sbl_iphone_is_live__psr_1_start\",\"282\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"283\":\"video:encoding:iphone_live_playback_mos_loss\",\"284\":\"video:sbl_iphone_is_live__smtbr\",\"285\":\"video:sbl_iphone_is_live__smtbr\",\"286\":\"wilde_scroll_frame_drops_per_minute\",\"287\":\"is_live_watch_time_given_iphone\",\"288\":\"is_live_watch_time_given_iphone\",\"289\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"290\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"291\":\"sbl_iphone_is_live__psr_1_start\",\"292\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"293\":\"video:encoding:iphone_live_playback_mos_loss\",\"294\":\"video:sbl_iphone_is_live__smtbr\",\"295\":\"wilde_scroll_frame_drops_per_minute\",\"296\":\"sbl_iphone_is_live__psr_1_start\",\"297\":\"video:encoding:iphone_live_playback_mos_loss\",\"298\":\"sbl_iphone_is_live__psr_1_start\",\"299\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"300\":\"video:sbl_iphone_is_live__smtbr\",\"301\":\"sbl_iphone_is_live__psr_1_start\",\"302\":\"video:sbl_iphone_is_live__smtbr\",\"303\":\"wilde_scroll_frame_drops_per_minute\",\"304\":\"is_live_watch_time_given_iphone\",\"305\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"306\":\"sbl_iphone_is_live__psr_1_start\",\"307\":\"sbl_iphone_is_live__psr_1_start\",\"308\":\"video:encoding:iphone_live_playback_mos_loss\",\"309\":\"video:sbl_iphone_is_live__smtbr\",\"310\":\"video:encoding:iphone_live_playback_mos_loss\",\"311\":\"sbl_iphone_is_live__psr_1_start\",\"312\":\"video:encoding:iphone_live_playback_mos_loss\",\"313\":\"video:encoding:iphone_live_playback_mos_loss\",\"314\":\"wilde_scroll_frame_drops_per_minute\",\"315\":\"is_live_watch_time_given_iphone\",\"316\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"317\":\"wilde_scroll_frame_drops_per_minute\",\"318\":\"sbl_iphone_is_live__psr_1_start\",\"319\":\"video:encoding:iphone_live_playback_mos_loss\",\"320\":\"video:sbl_iphone_is_live__smtbr\",\"321\":\"wilde_scroll_frame_drops_per_minute\",\"322\":\"video:encoding:iphone_live_playback_mos_loss\",\"323\":\"video:sbl_iphone_is_live__smtbr\",\"324\":\"video:sbl_iphone_is_live__smtbr\",\"325\":\"wilde_scroll_frame_drops_per_minute\",\"326\":\"is_live_watch_time_given_iphone\",\"327\":\"is_live_watch_time_given_iphone\",\"328\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"329\":\"sbl_iphone_is_live__psr_1_start\",\"330\":\"video:encoding:iphone_live_playback_mos_loss\",\"331\":\"is_live_watch_time_given_iphone\",\"332\":\"is_live_watch_time_given_iphone\",\"333\":\"sbl_iphone_is_live__psr_1_start\",\"334\":\"wilde_scroll_frame_drops_per_minute\",\"335\":\"video:sbl_iphone_is_live__smtbr\",\"336\":\"video:encoding:iphone_live_playback_mos_loss\",\"337\":\"video:sbl_iphone_is_live__smtbr\",\"338\":\"wilde_scroll_frame_drops_per_minute\",\"339\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"340\":\"is_live_watch_time_given_iphone\",\"341\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"342\":\"sbl_iphone_is_live__psr_1_start\",\"343\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"344\":\"video:encoding:iphone_live_playback_mos_loss\",\"345\":\"video:sbl_iphone_is_live__smtbr\",\"346\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"347\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"348\":\"wilde_scroll_frame_drops_per_minute\",\"349\":\"video:encoding:iphone_live_playback_mos_loss\",\"350\":\"is_live_watch_time_given_iphone\",\"351\":\"is_live_watch_time_given_iphone\",\"352\":\"wilde_scroll_frame_drops_per_minute\",\"353\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"354\":\"sbl_iphone_is_live__psr_1_start\",\"355\":\"wilde_scroll_frame_drops_per_minute\",\"356\":\"video:encoding:iphone_live_playback_mos_loss\",\"357\":\"sbl_iphone_is_live__psr_1_start\",\"358\":\"video:sbl_iphone_is_live__smtbr\",\"359\":\"wilde_scroll_frame_drops_per_minute\",\"360\":\"is_live_watch_time_given_iphone\",\"361\":\"sbl_iphone_is_live__psr_1_start\",\"362\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"363\":\"sbl_iphone_is_live__psr_1_start\",\"364\":\"video:encoding:iphone_live_playback_mos_loss\",\"365\":\"sbl_iphone_is_live__psr_1_start\",\"366\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"367\":\"video:sbl_iphone_is_live__smtbr\",\"368\":\"video:encoding:iphone_live_playback_mos_loss\",\"369\":\"wilde_scroll_frame_drops_per_minute\",\"370\":\"sbl_iphone_is_live__psr_1_start\",\"371\":\"video:encoding:iphone_live_playback_mos_loss\",\"372\":\"video:sbl_iphone_is_live__smtbr\",\"373\":\"wilde_scroll_frame_drops_per_minute\",\"374\":\"is_live_watch_time_given_iphone\",\"375\":\"video:encoding:iphone_live_playback_mos_loss\",\"376\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"377\":\"sbl_iphone_is_live__psr_1_start\",\"378\":\"video:encoding:iphone_live_playback_mos_loss\",\"379\":\"video:sbl_iphone_is_live__smtbr\",\"380\":\"wilde_scroll_frame_drops_per_minute\",\"381\":\"sbl_iphone_is_live__psr_1_start\",\"382\":\"video:encoding:iphone_live_playback_mos_loss\",\"383\":\"video:sbl_iphone_is_live__smtbr\",\"384\":\"is_live_watch_time_given_iphone\",\"385\":\"wilde_scroll_frame_drops_per_minute\",\"386\":\"is_live_watch_time_given_iphone\",\"387\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"388\":\"sbl_iphone_is_live__psr_1_start\",\"389\":\"video:sbl_iphone_is_live__smtbr\"},\"n\":{\"0\":1600977,\"1\":1600977,\"2\":1598231,\"3\":1599249,\"4\":1599226,\"5\":1597828,\"6\":1599249,\"7\":1599249,\"8\":1598206,\"9\":1600831,\"10\":1600831,\"11\":1599729,\"12\":1600831,\"13\":1599994,\"14\":1600831,\"15\":1600831,\"16\":1598968,\"17\":1587380,\"18\":1599994,\"19\":1597828,\"20\":1600831,\"21\":1597957,\"22\":1597957,\"23\":1597957,\"24\":1599224,\"25\":1597957,\"26\":1598206,\"27\":1597957,\"28\":1599729,\"29\":1587380,\"30\":1597957,\"31\":1600580,\"32\":1598820,\"33\":1600057,\"34\":1600580,\"35\":1585686,\"36\":1600580,\"37\":1600580,\"38\":1600580,\"39\":1600580,\"40\":1600634,\"41\":1587380,\"42\":1600634,\"43\":1598206,\"44\":1599729,\"45\":1599619,\"46\":1599224,\"47\":1598131,\"48\":1600634,\"49\":1597699,\"50\":1600634,\"51\":1600634,\"52\":1600634,\"53\":1587380,\"54\":1601210,\"55\":1601210,\"56\":1601210,\"57\":1599224,\"58\":1601210,\"59\":1601210,\"60\":1598131,\"61\":1601210,\"62\":1599729,\"63\":1597699,\"64\":1600526,\"65\":1599595,\"66\":1599978,\"67\":1599978,\"68\":1597801,\"69\":1599978,\"70\":1599978,\"71\":1599978,\"72\":1599978,\"73\":1600577,\"74\":1598753,\"75\":1598753,\"76\":1598753,\"77\":1587640,\"78\":1597699,\"79\":1599595,\"80\":1600526,\"81\":1597699,\"82\":1600526,\"83\":1597699,\"84\":1597699,\"85\":1601500,\"86\":1598131,\"87\":1601500,\"88\":1597623,\"89\":1587640,\"90\":1598206,\"91\":1601500,\"92\":1601500,\"93\":1601500,\"94\":1598753,\"95\":1601500,\"96\":1599307,\"97\":1599307,\"98\":1600526,\"99\":1598131,\"100\":1599307,\"101\":1598818,\"102\":1587640,\"103\":1599307,\"104\":1599307,\"105\":1597623,\"106\":1599307,\"107\":1599534,\"108\":1598753,\"109\":1599534,\"110\":1599534,\"111\":1599534,\"112\":1585686,\"113\":1599224,\"114\":1597623,\"115\":1587640,\"116\":1599534,\"117\":1599534,\"118\":1600577,\"119\":1598645,\"120\":1598645,\"121\":1597623,\"122\":1598645,\"123\":1597801,\"124\":1599224,\"125\":1598645,\"126\":1598645,\"127\":1597786,\"128\":1598131,\"129\":1598645,\"130\":1599836,\"131\":1599836,\"132\":1599836,\"133\":1599836,\"134\":1600577,\"135\":1599224,\"136\":1599836,\"137\":1597623,\"138\":1597801,\"139\":1600139,\"140\":1587640,\"141\":1599836,\"142\":1598131,\"143\":1601161,\"144\":1601161,\"145\":1601161,\"146\":1599953,\"147\":1601161,\"148\":1601161,\"149\":1601161,\"150\":1600512,\"151\":1600512,\"152\":1587640,\"153\":1600577,\"154\":1597801,\"155\":1601081,\"156\":1598820,\"157\":1585686,\"158\":1600512,\"159\":1600512,\"160\":1600512,\"161\":1600512,\"162\":1599619,\"163\":1599619,\"164\":1599226,\"165\":1599619,\"166\":1599619,\"167\":1599619,\"168\":1599953,\"169\":1601081,\"170\":1598820,\"171\":1601081,\"172\":1598820,\"173\":1601081,\"174\":1601081,\"175\":1601081,\"176\":1600182,\"177\":1600977,\"178\":1597786,\"179\":1599953,\"180\":1597044,\"181\":1603031,\"182\":1603031,\"183\":1600577,\"184\":1603031,\"185\":1603031,\"186\":1603031,\"187\":1598820,\"188\":1587022,\"189\":1603031,\"190\":1599953,\"191\":1600580,\"192\":1600580,\"193\":1597786,\"194\":1600580,\"195\":1600580,\"196\":1598968,\"197\":1597044,\"198\":1600580,\"199\":1600580,\"200\":1597801,\"201\":1599994,\"202\":1600291,\"203\":1600291,\"204\":1598206,\"205\":1600291,\"206\":1600291,\"207\":1600977,\"208\":1600291,\"209\":1598968,\"210\":1600291,\"211\":1585783,\"212\":1599595,\"213\":1587022,\"214\":1585783,\"215\":1597044,\"216\":1585783,\"217\":1585783,\"218\":1585783,\"219\":1599226,\"220\":1585783,\"221\":1600526,\"222\":1598968,\"223\":1598231,\"224\":1599953,\"225\":1587579,\"226\":1587022,\"227\":1587579,\"228\":1587579,\"229\":1587579,\"230\":1587579,\"231\":1587579,\"232\":1597044,\"233\":1590369,\"234\":1590369,\"235\":1599953,\"236\":1599226,\"237\":1598968,\"238\":1587022,\"239\":1597786,\"240\":1590369,\"241\":1590369,\"242\":1590369,\"243\":1590369,\"244\":1600139,\"245\":1600139,\"246\":1600526,\"247\":1600139,\"248\":1600139,\"249\":1597044,\"250\":1587022,\"251\":1597786,\"252\":1587022,\"253\":1598818,\"254\":1600673,\"255\":1600673,\"256\":1600673,\"257\":1600203,\"258\":1596355,\"259\":1599595,\"260\":1599226,\"261\":1600673,\"262\":1600182,\"263\":1599226,\"264\":1600673,\"265\":1600673,\"266\":1598776,\"267\":1598818,\"268\":1600452,\"269\":1598776,\"270\":1598776,\"271\":1598776,\"272\":1599595,\"273\":1598776,\"274\":1598776,\"275\":1600139,\"276\":1600203,\"277\":1600071,\"278\":1600071,\"279\":1598968,\"280\":1600182,\"281\":1600071,\"282\":1597623,\"283\":1600071,\"284\":1600071,\"285\":1599994,\"286\":1600071,\"287\":1585686,\"288\":12780096,\"289\":12780096,\"290\":1600452,\"291\":12780096,\"292\":1600203,\"293\":12780096,\"294\":12780096,\"295\":12780096,\"296\":1598818,\"297\":1600182,\"298\":1598820,\"299\":1585686,\"300\":1600977,\"301\":1600452,\"302\":1600182,\"303\":1600182,\"304\":1598884,\"305\":1598884,\"306\":1598884,\"307\":1600203,\"308\":1598884,\"309\":1598884,\"310\":1598818,\"311\":1585686,\"312\":1600452,\"313\":1599595,\"314\":1598884,\"315\":1597323,\"316\":1597323,\"317\":1600977,\"318\":1597323,\"319\":1597323,\"320\":1597323,\"321\":1597323,\"322\":1600203,\"323\":1600452,\"324\":1600577,\"325\":1600452,\"326\":1597828,\"327\":1597852,\"328\":1597852,\"329\":1599994,\"330\":1598753,\"331\":1587380,\"332\":1600057,\"333\":1597852,\"334\":1600203,\"335\":1598818,\"336\":1597852,\"337\":1597852,\"338\":1597852,\"339\":1597828,\"340\":1598660,\"341\":1598660,\"342\":1598660,\"343\":1587380,\"344\":1598660,\"345\":1598660,\"346\":1598231,\"347\":1600057,\"348\":1598660,\"349\":1599994,\"350\":1597743,\"351\":1600373,\"352\":1597801,\"353\":1600373,\"354\":1600373,\"355\":1599729,\"356\":1600373,\"357\":1598231,\"358\":1600373,\"359\":1600373,\"360\":1596355,\"361\":1600057,\"362\":1596355,\"363\":1596355,\"364\":1596355,\"365\":1597828,\"366\":1597743,\"367\":1597786,\"368\":1598231,\"369\":1596355,\"370\":1597743,\"371\":1597743,\"372\":1597743,\"373\":1597743,\"374\":1597032,\"375\":1600057,\"376\":1597032,\"377\":1598206,\"378\":1597828,\"379\":1598231,\"380\":1597044,\"381\":1597032,\"382\":1597032,\"383\":1597032,\"384\":1599729,\"385\":1597032,\"386\":1599249,\"387\":1599249,\"388\":1599249,\"389\":1600057},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1,\"60\":-1,\"61\":-1,\"62\":-1,\"63\":-1,\"64\":-1,\"65\":-1,\"66\":-1,\"67\":-1,\"68\":-1,\"69\":-1,\"70\":-1,\"71\":-1,\"72\":-1,\"73\":-1,\"74\":-1,\"75\":-1,\"76\":-1,\"77\":-1,\"78\":-1,\"79\":-1,\"80\":-1,\"81\":-1,\"82\":-1,\"83\":-1,\"84\":-1,\"85\":-1,\"86\":-1,\"87\":-1,\"88\":-1,\"89\":-1,\"90\":-1,\"91\":-1,\"92\":-1,\"93\":-1,\"94\":-1,\"95\":-1,\"96\":-1,\"97\":-1,\"98\":-1,\"99\":-1,\"100\":-1,\"101\":-1,\"102\":-1,\"103\":-1,\"104\":-1,\"105\":-1,\"106\":-1,\"107\":-1,\"108\":-1,\"109\":-1,\"110\":-1,\"111\":-1,\"112\":-1,\"113\":-1,\"114\":-1,\"115\":-1,\"116\":-1,\"117\":-1,\"118\":-1,\"119\":-1,\"120\":-1,\"121\":-1,\"122\":-1,\"123\":-1,\"124\":-1,\"125\":-1,\"126\":-1,\"127\":-1,\"128\":-1,\"129\":-1,\"130\":-1,\"131\":-1,\"132\":-1,\"133\":-1,\"134\":-1,\"135\":-1,\"136\":-1,\"137\":-1,\"138\":-1,\"139\":-1,\"140\":-1,\"141\":-1,\"142\":-1,\"143\":-1,\"144\":-1,\"145\":-1,\"146\":-1,\"147\":-1,\"148\":-1,\"149\":-1,\"150\":-1,\"151\":-1,\"152\":-1,\"153\":-1,\"154\":-1,\"155\":-1,\"156\":-1,\"157\":-1,\"158\":-1,\"159\":-1,\"160\":-1,\"161\":-1,\"162\":-1,\"163\":-1,\"164\":-1,\"165\":-1,\"166\":-1,\"167\":-1,\"168\":-1,\"169\":-1,\"170\":-1,\"171\":-1,\"172\":-1,\"173\":-1,\"174\":-1,\"175\":-1,\"176\":-1,\"177\":-1,\"178\":-1,\"179\":-1,\"180\":-1,\"181\":-1,\"182\":-1,\"183\":-1,\"184\":-1,\"185\":-1,\"186\":-1,\"187\":-1,\"188\":-1,\"189\":-1,\"190\":-1,\"191\":-1,\"192\":-1,\"193\":-1,\"194\":-1,\"195\":-1,\"196\":-1,\"197\":-1,\"198\":-1,\"199\":-1,\"200\":-1,\"201\":-1,\"202\":-1,\"203\":-1,\"204\":-1,\"205\":-1,\"206\":-1,\"207\":-1,\"208\":-1,\"209\":-1,\"210\":-1,\"211\":-1,\"212\":-1,\"213\":-1,\"214\":-1,\"215\":-1,\"216\":-1,\"217\":-1,\"218\":-1,\"219\":-1,\"220\":-1,\"221\":-1,\"222\":-1,\"223\":-1,\"224\":-1,\"225\":-1,\"226\":-1,\"227\":-1,\"228\":-1,\"229\":-1,\"230\":-1,\"231\":-1,\"232\":-1,\"233\":-1,\"234\":-1,\"235\":-1,\"236\":-1,\"237\":-1,\"238\":-1,\"239\":-1,\"240\":-1,\"241\":-1,\"242\":-1,\"243\":-1,\"244\":-1,\"245\":-1,\"246\":-1,\"247\":-1,\"248\":-1,\"249\":-1,\"250\":-1,\"251\":-1,\"252\":-1,\"253\":-1,\"254\":-1,\"255\":-1,\"256\":-1,\"257\":-1,\"258\":-1,\"259\":-1,\"260\":-1,\"261\":-1,\"262\":-1,\"263\":-1,\"264\":-1,\"265\":-1,\"266\":-1,\"267\":-1,\"268\":-1,\"269\":-1,\"270\":-1,\"271\":-1,\"272\":-1,\"273\":-1,\"274\":-1,\"275\":-1,\"276\":-1,\"277\":-1,\"278\":-1,\"279\":-1,\"280\":-1,\"281\":-1,\"282\":-1,\"283\":-1,\"284\":-1,\"285\":-1,\"286\":-1,\"287\":-1,\"288\":-1,\"289\":-1,\"290\":-1,\"291\":-1,\"292\":-1,\"293\":-1,\"294\":-1,\"295\":-1,\"296\":-1,\"297\":-1,\"298\":-1,\"299\":-1,\"300\":-1,\"301\":-1,\"302\":-1,\"303\":-1,\"304\":-1,\"305\":-1,\"306\":-1,\"307\":-1,\"308\":-1,\"309\":-1,\"310\":-1,\"311\":-1,\"312\":-1,\"313\":-1,\"314\":-1,\"315\":-1,\"316\":-1,\"317\":-1,\"318\":-1,\"319\":-1,\"320\":-1,\"321\":-1,\"322\":-1,\"323\":-1,\"324\":-1,\"325\":-1,\"326\":-1,\"327\":-1,\"328\":-1,\"329\":-1,\"330\":-1,\"331\":-1,\"332\":-1,\"333\":-1,\"334\":-1,\"335\":-1,\"336\":-1,\"337\":-1,\"338\":-1,\"339\":-1,\"340\":-1,\"341\":-1,\"342\":-1,\"343\":-1,\"344\":-1,\"345\":-1,\"346\":-1,\"347\":-1,\"348\":-1,\"349\":-1,\"350\":-1,\"351\":-1,\"352\":-1,\"353\":-1,\"354\":-1,\"355\":-1,\"356\":-1,\"357\":-1,\"358\":-1,\"359\":-1,\"360\":-1,\"361\":-1,\"362\":-1,\"363\":-1,\"364\":-1,\"365\":-1,\"366\":-1,\"367\":-1,\"368\":-1,\"369\":-1,\"370\":-1,\"371\":-1,\"372\":-1,\"373\":-1,\"374\":-1,\"375\":-1,\"376\":-1,\"377\":-1,\"378\":-1,\"379\":-1,\"380\":-1,\"381\":-1,\"382\":-1,\"383\":-1,\"384\":-1,\"385\":-1,\"386\":-1,\"387\":-1,\"388\":-1,\"389\":-1},\"sem\":{\"0\":0.6317990573,\"1\":0.0013160752,\"2\":253.7424586607,\"3\":0.0765276371,\"4\":0.0763210129,\"5\":3.2227907006,\"6\":3.2336616637,\"7\":253.3693566678,\"8\":0.0774844124,\"9\":0.6256174849,\"10\":0.0012011513,\"11\":0.001255106,\"12\":0.0002838784,\"13\":0.6246747407,\"14\":0.0753796133,\"15\":2.7149185401,\"16\":3.3575055579,\"17\":0.0002464528,\"18\":261.6306877756,\"19\":248.9795560671,\"20\":254.92059857,\"21\":0.6330783632,\"22\":0.001242836,\"23\":0.0002634728,\"24\":0.6285488442,\"25\":0.0784263576,\"26\":2.9799067127,\"27\":3.6191932815,\"28\":0.0002921748,\"29\":0.0896916105,\"30\":252.9525687781,\"31\":0.6167266784,\"32\":0.0777312339,\"33\":246.9814892811,\"34\":0.0012364203,\"35\":3.5953166389,\"36\":0.0002697161,\"37\":0.0795479397,\"38\":3.635009435,\"39\":246.9258314444,\"40\":0.621016094,\"41\":3.7563217245,\"42\":0.0012835359,\"43\":254.3517617543,\"44\":0.0779753461,\"45\":252.8932233487,\"46\":0.0012832882,\"47\":0.6234926066,\"48\":0.0002587932,\"49\":0.6330586702,\"50\":0.0774949562,\"51\":3.3979225658,\"52\":253.4336749661,\"53\":257.05991197,\"54\":0.6363047093,\"55\":0.0012968108,\"56\":0.0002572083,\"57\":0.0002603408,\"58\":0.0763108721,\"59\":3.493325341,\"60\":0.0012273573,\"61\":250.3408909269,\"62\":3.4857853511,\"63\":0.0013028591,\"64\":0.6374207936,\"65\":0.6255538037,\"66\":0.6232885773,\"67\":0.0012133069,\"68\":0.0773688703,\"69\":0.0002577173,\"70\":0.0780184539,\"71\":3.4730510835,\"72\":254.5771286583,\"73\":254.7235760505,\"74\":0.6195293677,\"75\":0.0012507417,\"76\":0.000274209,\"77\":0.632187316,\"78\":0.0002688443,\"79\":3.4295844418,\"80\":0.0013114672,\"81\":0.0754533415,\"82\":3.6000742649,\"83\":3.1757704621,\"84\":255.0986171462,\"85\":0.6270726726,\"86\":0.000261725,\"87\":0.0012585723,\"88\":0.0002526315,\"89\":0.001318368,\"90\":0.0012276087,\"91\":0.0002719623,\"92\":0.0778566246,\"93\":3.2366786228,\"94\":3.4755205558,\"95\":255.5390526578,\"96\":0.6279970164,\"97\":0.0012257525,\"98\":251.3784893094,\"99\":0.0776952132,\"100\":0.0002863952,\"101\":251.2152175762,\"102\":0.0002787761,\"103\":0.0763994236,\"104\":3.2628184284,\"105\":0.0778551242,\"106\":253.2757347133,\"107\":0.6303512439,\"108\":250.9142279094,\"109\":0.0013380088,\"110\":0.0002448514,\"111\":0.0853619231,\"112\":0.0790273526,\"113\":0.0762515016,\"114\":0.6278679458,\"115\":0.0767993756,\"116\":3.675426766,\"117\":252.0620137368,\"118\":0.6356168465,\"119\":0.6250457164,\"120\":0.0012469915,\"121\":3.4517285401,\"122\":0.0002627634,\"123\":0.6265701684,\"124\":3.3758092655,\"125\":0.0770682672,\"126\":3.2684663673,\"127\":255.1444684283,\"128\":3.3863119124,\"129\":256.3947932927,\"130\":0.62754454,\"131\":0.0012363805,\"132\":0.0002984224,\"133\":0.0762548055,\"134\":0.0012595812,\"135\":253.8789903543,\"136\":3.1440459162,\"137\":255.0570226145,\"138\":0.0012127517,\"139\":3.3022136684,\"140\":2.9669818864,\"141\":254.9382241336,\"142\":248.2431211503,\"143\":0.625657482,\"144\":0.0012777884,\"145\":0.0002841416,\"146\":0.6274004769,\"147\":0.0815859211,\"148\":3.2945339006,\"149\":254.45251381,\"150\":0.6272113177,\"151\":0.001260613,\"152\":254.8729053485,\"153\":0.0002823643,\"154\":0.0002784071,\"155\":0.6362324886,\"156\":0.6307844011,\"157\":252.7383531502,\"158\":0.0002677695,\"159\":0.0760606072,\"160\":3.2520269132,\"161\":253.1685400367,\"162\":0.6232098022,\"163\":0.0013049828,\"164\":3.1609847881,\"165\":0.0002706498,\"166\":0.0780939018,\"167\":3.419853903,\"168\":0.0012413054,\"169\":0.00122998,\"170\":0.0012453901,\"171\":0.000280494,\"172\":3.4272199518,\"173\":0.0767305008,\"174\":3.3194115351,\"175\":251.889438847,\"176\":0.6289099126,\"177\":0.0763315352,\"178\":0.6330370714,\"179\":0.0002723042,\"180\":0.626480613,\"181\":0.6306575161,\"182\":0.0012912005,\"183\":0.0780520093,\"184\":0.0002601343,\"185\":0.0758761539,\"186\":3.2443389043,\"187\":253.3641796739,\"188\":0.6265380043,\"189\":249.105232426,\"190\":0.0759921249,\"191\":0.6362685901,\"192\":0.0012279052,\"193\":0.0012029672,\"194\":0.000261684,\"195\":0.0766904123,\"196\":0.6336425371,\"197\":0.0012414443,\"198\":3.3059625594,\"199\":253.0471988496,\"200\":3.4212272651,\"201\":0.0013070548,\"202\":0.6235465448,\"203\":0.0012901238,\"204\":0.6291178227,\"205\":0.0002726989,\"206\":0.0792514933,\"207\":0.0002900478,\"208\":3.4689687016,\"209\":0.0013182007,\"210\":258.7362732524,\"211\":0.6324235656,\"212\":252.6909839209,\"213\":0.0013232951,\"214\":0.0012647776,\"215\":0.000273628,\"216\":0.0002884997,\"217\":0.0767091319,\"218\":3.1349459876,\"219\":0.6272455707,\"220\":251.0738128954,\"221\":0.0002763404,\"222\":0.0002815282,\"223\":0.625522943,\"224\":2.8860805297,\"225\":0.633919388,\"226\":0.0002757041,\"227\":0.0011360566,\"228\":0.0002692669,\"229\":0.0777220417,\"230\":3.317553458,\"231\":253.0913076007,\"232\":0.0770234955,\"233\":0.6246150448,\"234\":0.0012065979,\"235\":253.8876054739,\"236\":0.00127737,\"237\":0.0766821203,\"238\":0.0772165431,\"239\":0.0002643824,\"240\":0.0002560819,\"241\":0.078154499,\"242\":3.546045267,\"243\":253.6401730739,\"244\":0.6271844,\"245\":0.00122204,\"246\":0.0799963949,\"247\":0.0002794639,\"248\":0.0760813136,\"249\":3.2879592274,\"250\":3.0297604432,\"251\":0.0768925327,\"252\":253.6355964346,\"253\":0.6327399647,\"254\":0.6385456504,\"255\":0.0012262556,\"256\":0.0002789106,\"257\":3.0976106395,\"258\":3.1460683812,\"259\":0.0012350175,\"260\":248.7009684559,\"261\":0.0767952448,\"262\":0.001258266,\"263\":0.000266396,\"264\":3.2601526635,\"265\":255.6876835431,\"266\":0.6311514595,\"267\":0.0012725501,\"268\":0.6314322115,\"269\":0.0012686104,\"270\":0.0002724719,\"271\":0.0767118968,\"272\":0.0002769412,\"273\":3.3049846269,\"274\":247.5129853164,\"275\":252.6824010611,\"276\":0.630273546,\"277\":0.6287040378,\"278\":0.0012446121,\"279\":254.9886348719,\"280\":0.0002733758,\"281\":0.0002754742,\"282\":0.0012937086,\"283\":0.0758788194,\"284\":3.1085334848,\"285\":3.0135427218,\"286\":254.4430450384,\"287\":0.627598164,\"288\":0.2222027939,\"289\":0.0004470251,\"290\":0.0013026855,\"291\":0.0000969754,\"292\":0.0012048285,\"293\":0.0273424895,\"294\":1.2204164623,\"295\":89.5043001688,\"296\":0.0002693637,\"297\":0.0763248862,\"298\":0.000294783,\"299\":0.0012794314,\"300\":2.8025957354,\"301\":0.0002963182,\"302\":3.3741882913,\"303\":254.6402908723,\"304\":0.6196587931,\"305\":0.0013216667,\"306\":0.0002768763,\"307\":0.000292372,\"308\":0.075582386,\"309\":3.1789809616,\"310\":0.07583398,\"311\":0.0002646729,\"312\":0.0775230614,\"313\":0.079488601,\"314\":254.1573389694,\"315\":0.6158397422,\"316\":0.0012120651,\"317\":252.9367087513,\"318\":0.000269412,\"319\":0.0799606095,\"320\":3.6235739114,\"321\":256.9484908434,\"322\":0.0769396738,\"323\":3.3353850551,\"324\":3.2729536382,\"325\":250.2434360176,\"326\":0.6267857717,\"327\":0.6389593636,\"328\":0.0013005573,\"329\":0.000288715,\"330\":0.081355635,\"331\":0.6235705302,\"332\":0.6283732244,\"333\":0.0002583009,\"334\":251.1669606249,\"335\":3.2827579333,\"336\":0.0764599168,\"337\":3.4414452778,\"338\":254.8695670599,\"339\":0.0012298543,\"340\":0.6325236755,\"341\":0.0012555073,\"342\":0.0002806843,\"343\":0.0013073614,\"344\":0.0778252875,\"345\":3.4745145338,\"346\":0.0012175693,\"347\":0.0012876361,\"348\":251.0032639815,\"349\":0.075626813,\"350\":0.6285500973,\"351\":0.6301862961,\"352\":254.1545478598,\"353\":0.0012383061,\"354\":0.0002589152,\"355\":254.2079398148,\"356\":0.0771230812,\"357\":0.000270003,\"358\":3.5545831132,\"359\":252.7565587478,\"360\":0.6301825574,\"361\":0.0002661077,\"362\":0.0012883796,\"363\":0.0002760602,\"364\":0.0764034919,\"365\":0.0002640426,\"366\":0.0012579328,\"367\":3.4392195683,\"368\":0.0771836755,\"369\":249.3043397869,\"370\":0.0002701242,\"371\":0.0833332315,\"372\":3.5155043457,\"373\":255.8636145177,\"374\":0.6361170252,\"375\":0.0758914036,\"376\":0.0012823321,\"377\":0.0002680169,\"378\":0.0784037661,\"379\":3.4084890952,\"380\":254.5231410102,\"381\":0.000290657,\"382\":0.0775762591,\"383\":3.3441064236,\"384\":0.6334756777,\"385\":257.0271844491,\"386\":0.6253426267,\"387\":0.0012228987,\"388\":0.0002711764,\"389\":3.0528018155},\"start_time\":{\"0\":1553990400000,\"1\":1553990400000,\"2\":1553990400000,\"3\":1553990400000,\"4\":1553990400000,\"5\":1553990400000,\"6\":1553990400000,\"7\":1553990400000,\"8\":1553990400000,\"9\":1553990400000,\"10\":1553990400000,\"11\":1553990400000,\"12\":1553990400000,\"13\":1553990400000,\"14\":1553990400000,\"15\":1553990400000,\"16\":1553990400000,\"17\":1553990400000,\"18\":1553990400000,\"19\":1553990400000,\"20\":1553990400000,\"21\":1553990400000,\"22\":1553990400000,\"23\":1553990400000,\"24\":1553990400000,\"25\":1553990400000,\"26\":1553990400000,\"27\":1553990400000,\"28\":1553990400000,\"29\":1553990400000,\"30\":1553990400000,\"31\":1553990400000,\"32\":1553990400000,\"33\":1553990400000,\"34\":1553990400000,\"35\":1553990400000,\"36\":1553990400000,\"37\":1553990400000,\"38\":1553990400000,\"39\":1553990400000,\"40\":1553990400000,\"41\":1553990400000,\"42\":1553990400000,\"43\":1553990400000,\"44\":1553990400000,\"45\":1553990400000,\"46\":1553990400000,\"47\":1553990400000,\"48\":1553990400000,\"49\":1553990400000,\"50\":1553990400000,\"51\":1553990400000,\"52\":1553990400000,\"53\":1553990400000,\"54\":1553990400000,\"55\":1553990400000,\"56\":1553990400000,\"57\":1553990400000,\"58\":1553990400000,\"59\":1553990400000,\"60\":1553990400000,\"61\":1553990400000,\"62\":1553990400000,\"63\":1553990400000,\"64\":1553990400000,\"65\":1553990400000,\"66\":1553990400000,\"67\":1553990400000,\"68\":1553990400000,\"69\":1553990400000,\"70\":1553990400000,\"71\":1553990400000,\"72\":1553990400000,\"73\":1553990400000,\"74\":1553990400000,\"75\":1553990400000,\"76\":1553990400000,\"77\":1553990400000,\"78\":1553990400000,\"79\":1553990400000,\"80\":1553990400000,\"81\":1553990400000,\"82\":1553990400000,\"83\":1553990400000,\"84\":1553990400000,\"85\":1553990400000,\"86\":1553990400000,\"87\":1553990400000,\"88\":1553990400000,\"89\":1553990400000,\"90\":1553990400000,\"91\":1553990400000,\"92\":1553990400000,\"93\":1553990400000,\"94\":1553990400000,\"95\":1553990400000,\"96\":1553990400000,\"97\":1553990400000,\"98\":1553990400000,\"99\":1553990400000,\"100\":1553990400000,\"101\":1553990400000,\"102\":1553990400000,\"103\":1553990400000,\"104\":1553990400000,\"105\":1553990400000,\"106\":1553990400000,\"107\":1553990400000,\"108\":1553990400000,\"109\":1553990400000,\"110\":1553990400000,\"111\":1553990400000,\"112\":1553990400000,\"113\":1553990400000,\"114\":1553990400000,\"115\":1553990400000,\"116\":1553990400000,\"117\":1553990400000,\"118\":1553990400000,\"119\":1553990400000,\"120\":1553990400000,\"121\":1553990400000,\"122\":1553990400000,\"123\":1553990400000,\"124\":1553990400000,\"125\":1553990400000,\"126\":1553990400000,\"127\":1553990400000,\"128\":1553990400000,\"129\":1553990400000,\"130\":1553990400000,\"131\":1553990400000,\"132\":1553990400000,\"133\":1553990400000,\"134\":1553990400000,\"135\":1553990400000,\"136\":1553990400000,\"137\":1553990400000,\"138\":1553990400000,\"139\":1553990400000,\"140\":1553990400000,\"141\":1553990400000,\"142\":1553990400000,\"143\":1553990400000,\"144\":1553990400000,\"145\":1553990400000,\"146\":1553990400000,\"147\":1553990400000,\"148\":1553990400000,\"149\":1553990400000,\"150\":1553990400000,\"151\":1553990400000,\"152\":1553990400000,\"153\":1553990400000,\"154\":1553990400000,\"155\":1553990400000,\"156\":1553990400000,\"157\":1553990400000,\"158\":1553990400000,\"159\":1553990400000,\"160\":1553990400000,\"161\":1553990400000,\"162\":1553990400000,\"163\":1553990400000,\"164\":1553990400000,\"165\":1553990400000,\"166\":1553990400000,\"167\":1553990400000,\"168\":1553990400000,\"169\":1553990400000,\"170\":1553990400000,\"171\":1553990400000,\"172\":1553990400000,\"173\":1553990400000,\"174\":1553990400000,\"175\":1553990400000,\"176\":1553990400000,\"177\":1553990400000,\"178\":1553990400000,\"179\":1553990400000,\"180\":1553990400000,\"181\":1553990400000,\"182\":1553990400000,\"183\":1553990400000,\"184\":1553990400000,\"185\":1553990400000,\"186\":1553990400000,\"187\":1553990400000,\"188\":1553990400000,\"189\":1553990400000,\"190\":1553990400000,\"191\":1553990400000,\"192\":1553990400000,\"193\":1553990400000,\"194\":1553990400000,\"195\":1553990400000,\"196\":1553990400000,\"197\":1553990400000,\"198\":1553990400000,\"199\":1553990400000,\"200\":1553990400000,\"201\":1553990400000,\"202\":1553990400000,\"203\":1553990400000,\"204\":1553990400000,\"205\":1553990400000,\"206\":1553990400000,\"207\":1553990400000,\"208\":1553990400000,\"209\":1553990400000,\"210\":1553990400000,\"211\":1553990400000,\"212\":1553990400000,\"213\":1553990400000,\"214\":1553990400000,\"215\":1553990400000,\"216\":1553990400000,\"217\":1553990400000,\"218\":1553990400000,\"219\":1553990400000,\"220\":1553990400000,\"221\":1553990400000,\"222\":1553990400000,\"223\":1553990400000,\"224\":1553990400000,\"225\":1553990400000,\"226\":1553990400000,\"227\":1553990400000,\"228\":1553990400000,\"229\":1553990400000,\"230\":1553990400000,\"231\":1553990400000,\"232\":1553990400000,\"233\":1553990400000,\"234\":1553990400000,\"235\":1553990400000,\"236\":1553990400000,\"237\":1553990400000,\"238\":1553990400000,\"239\":1553990400000,\"240\":1553990400000,\"241\":1553990400000,\"242\":1553990400000,\"243\":1553990400000,\"244\":1553990400000,\"245\":1553990400000,\"246\":1553990400000,\"247\":1553990400000,\"248\":1553990400000,\"249\":1553990400000,\"250\":1553990400000,\"251\":1553990400000,\"252\":1553990400000,\"253\":1553990400000,\"254\":1553990400000,\"255\":1553990400000,\"256\":1553990400000,\"257\":1553990400000,\"258\":1553990400000,\"259\":1553990400000,\"260\":1553990400000,\"261\":1553990400000,\"262\":1553990400000,\"263\":1553990400000,\"264\":1553990400000,\"265\":1553990400000,\"266\":1553990400000,\"267\":1553990400000,\"268\":1553990400000,\"269\":1553990400000,\"270\":1553990400000,\"271\":1553990400000,\"272\":1553990400000,\"273\":1553990400000,\"274\":1553990400000,\"275\":1553990400000,\"276\":1553990400000,\"277\":1553990400000,\"278\":1553990400000,\"279\":1553990400000,\"280\":1553990400000,\"281\":1553990400000,\"282\":1553990400000,\"283\":1553990400000,\"284\":1553990400000,\"285\":1553990400000,\"286\":1553990400000,\"287\":1553990400000,\"288\":1553990400000,\"289\":1553990400000,\"290\":1553990400000,\"291\":1553990400000,\"292\":1553990400000,\"293\":1553990400000,\"294\":1553990400000,\"295\":1553990400000,\"296\":1553990400000,\"297\":1553990400000,\"298\":1553990400000,\"299\":1553990400000,\"300\":1553990400000,\"301\":1553990400000,\"302\":1553990400000,\"303\":1553990400000,\"304\":1553990400000,\"305\":1553990400000,\"306\":1553990400000,\"307\":1553990400000,\"308\":1553990400000,\"309\":1553990400000,\"310\":1553990400000,\"311\":1553990400000,\"312\":1553990400000,\"313\":1553990400000,\"314\":1553990400000,\"315\":1553990400000,\"316\":1553990400000,\"317\":1553990400000,\"318\":1553990400000,\"319\":1553990400000,\"320\":1553990400000,\"321\":1553990400000,\"322\":1553990400000,\"323\":1553990400000,\"324\":1553990400000,\"325\":1553990400000,\"326\":1553990400000,\"327\":1553990400000,\"328\":1553990400000,\"329\":1553990400000,\"330\":1553990400000,\"331\":1553990400000,\"332\":1553990400000,\"333\":1553990400000,\"334\":1553990400000,\"335\":1553990400000,\"336\":1553990400000,\"337\":1553990400000,\"338\":1553990400000,\"339\":1553990400000,\"340\":1553990400000,\"341\":1553990400000,\"342\":1553990400000,\"343\":1553990400000,\"344\":1553990400000,\"345\":1553990400000,\"346\":1553990400000,\"347\":1553990400000,\"348\":1553990400000,\"349\":1553990400000,\"350\":1553990400000,\"351\":1553990400000,\"352\":1553990400000,\"353\":1553990400000,\"354\":1553990400000,\"355\":1553990400000,\"356\":1553990400000,\"357\":1553990400000,\"358\":1553990400000,\"359\":1553990400000,\"360\":1553990400000,\"361\":1553990400000,\"362\":1553990400000,\"363\":1553990400000,\"364\":1553990400000,\"365\":1553990400000,\"366\":1553990400000,\"367\":1553990400000,\"368\":1553990400000,\"369\":1553990400000,\"370\":1553990400000,\"371\":1553990400000,\"372\":1553990400000,\"373\":1553990400000,\"374\":1553990400000,\"375\":1553990400000,\"376\":1553990400000,\"377\":1553990400000,\"378\":1553990400000,\"379\":1553990400000,\"380\":1553990400000,\"381\":1553990400000,\"382\":1553990400000,\"383\":1553990400000,\"384\":1553990400000,\"385\":1553990400000,\"386\":1553990400000,\"387\":1553990400000,\"388\":1553990400000,\"389\":1553990400000}}"},"description":null}]]},"1":{"__type":"OrderedDict","value":[[1556078905288,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_22\",\"1\":\"0_22\",\"2\":\"1_4\",\"3\":\"1_4\",\"4\":\"1_2\",\"5\":\"1_4\",\"6\":\"0_35\",\"7\":\"status_quo\",\"8\":\"1_1\",\"9\":\"status_quo\",\"10\":\"status_quo\",\"11\":\"status_quo\",\"12\":\"1_3\",\"13\":\"status_quo\",\"14\":\"0_22\",\"15\":\"0_25\",\"16\":\"1_2\",\"17\":\"0_25\",\"18\":\"0_25\",\"19\":\"0_25\",\"20\":\"0_25\",\"21\":\"0_35\",\"22\":\"0_35\",\"23\":\"1_3\",\"24\":\"0_35\",\"25\":\"0_59\",\"26\":\"0_59\",\"27\":\"0_59\",\"28\":\"0_59\",\"29\":\"1_0\",\"30\":\"1_0\",\"31\":\"1_0\",\"32\":\"1_0\",\"33\":\"1_0\",\"34\":\"1_1\",\"35\":\"1_1\",\"36\":\"1_1\",\"37\":\"1_1\",\"38\":\"0_22\",\"39\":\"1_2\",\"40\":\"1_2\",\"41\":\"1_2\",\"42\":\"1_3\",\"43\":\"0_35\",\"44\":\"1_3\",\"45\":\"1_3\",\"46\":\"0_22\",\"47\":\"1_4\",\"48\":\"0_59\",\"49\":\"1_4\"},\"trial_index\":{\"0\":1,\"1\":1,\"2\":1,\"3\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1,\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"19\":1,\"20\":1,\"21\":1,\"22\":1,\"23\":1,\"24\":1,\"25\":1,\"26\":1,\"27\":1,\"28\":1,\"29\":1,\"30\":1,\"31\":1,\"32\":1,\"33\":1,\"34\":1,\"35\":1,\"36\":1,\"37\":1,\"38\":1,\"39\":1,\"40\":1,\"41\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"47\":1,\"48\":1,\"49\":1},\"end_time\":{\"0\":1554336000000,\"1\":1554336000000,\"2\":1554336000000,\"3\":1554336000000,\"4\":1554336000000,\"5\":1554336000000,\"6\":1554336000000,\"7\":1554336000000,\"8\":1554336000000,\"9\":1554336000000,\"10\":1554336000000,\"11\":1554336000000,\"12\":1554336000000,\"13\":1554336000000,\"14\":1554336000000,\"15\":1554336000000,\"16\":1554336000000,\"17\":1554336000000,\"18\":1554336000000,\"19\":1554336000000,\"20\":1554336000000,\"21\":1554336000000,\"22\":1554336000000,\"23\":1554336000000,\"24\":1554336000000,\"25\":1554336000000,\"26\":1554336000000,\"27\":1554336000000,\"28\":1554336000000,\"29\":1554336000000,\"30\":1554336000000,\"31\":1554336000000,\"32\":1554336000000,\"33\":1554336000000,\"34\":1554336000000,\"35\":1554336000000,\"36\":1554336000000,\"37\":1554336000000,\"38\":1554336000000,\"39\":1554336000000,\"40\":1554336000000,\"41\":1554336000000,\"42\":1554336000000,\"43\":1554336000000,\"44\":1554336000000,\"45\":1554336000000,\"46\":1554336000000,\"47\":1554336000000,\"48\":1554336000000,\"49\":1554336000000},\"frac_nonnull\":{\"0\":0.3304347826,\"1\":1.0,\"2\":1.0,\"3\":1.0,\"4\":1.0,\"5\":1.0,\"6\":1.0,\"7\":0.3734177215,\"8\":1.0,\"9\":1.0,\"10\":1.0,\"11\":1.0,\"12\":1.0,\"13\":1.0,\"14\":1.0,\"15\":0.36,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":0.3608247423,\"22\":1.0,\"23\":1.0,\"24\":1.0,\"25\":0.3796296296,\"26\":1.0,\"27\":1.0,\"28\":1.0,\"29\":0.3793969849,\"30\":1.0,\"31\":1.0,\"32\":1.0,\"33\":1.0,\"34\":0.3292682927,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":0.3466666667,\"40\":1.0,\"41\":1.0,\"42\":0.3717277487,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":1.0,\"47\":0.3770053476,\"48\":1.0,\"49\":1.0},\"mean\":{\"0\":18.3826086957,\"1\":0.9240506329,\"2\":11.1001588399,\"3\":1145.3548387097,\"4\":0.9407665505,\"5\":51928.7153541098,\"6\":18.4529990701,\"7\":99.046835443,\"8\":0.9622377622,\"9\":0.947225573,\"10\":27.3083950985,\"11\":539.6344827586,\"12\":24.8054607433,\"13\":39717.327652652,\"14\":18.7419289955,\"15\":154.52,\"16\":17.3503326586,\"17\":0.9006410256,\"18\":31.0102455007,\"19\":302.9803921569,\"20\":12047.0679712968,\"21\":122.3298969072,\"22\":1318.4444444444,\"23\":865.0285714286,\"24\":14158.4064116542,\"25\":116.8148148148,\"26\":0.9338521401,\"27\":20.2710877144,\"28\":742.1176470588,\"29\":50.540201005,\"30\":0.9480701754,\"31\":15.34214851,\"32\":394.4117647059,\"33\":70435.1026905562,\"34\":74.1219512195,\"35\":20.8657322921,\"36\":759.75,\"37\":19885.1273133705,\"38\":422.8,\"39\":65.136,\"40\":478.9411764706,\"41\":17116.0241126394,\"42\":79.2565445026,\"43\":0.9654320988,\"44\":0.9192200557,\"45\":52798.0980829464,\"46\":78873.9018880681,\"47\":94.935828877,\"48\":33496.8022229248,\"49\":0.9515151515},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"sbl_iphone_is_live__psr_1_start\",\"2\":\"video:encoding:iphone_live_playback_mos_loss\",\"3\":\"video:sbl_iphone_is_live__smtbr\",\"4\":\"sbl_iphone_is_live__psr_1_start\",\"5\":\"wilde_scroll_frame_drops_per_minute\",\"6\":\"video:encoding:iphone_live_playback_mos_loss\",\"7\":\"is_live_watch_time_given_iphone\",\"8\":\"sbl_iphone_is_live__psr_1_start\",\"9\":\"sbl_iphone_is_live__psr_1_start\",\"10\":\"video:encoding:iphone_live_playback_mos_loss\",\"11\":\"video:sbl_iphone_is_live__smtbr\",\"12\":\"video:encoding:iphone_live_playback_mos_loss\",\"13\":\"wilde_scroll_frame_drops_per_minute\",\"14\":\"video:encoding:iphone_live_playback_mos_loss\",\"15\":\"is_live_watch_time_given_iphone\",\"16\":\"video:encoding:iphone_live_playback_mos_loss\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"video:encoding:iphone_live_playback_mos_loss\",\"19\":\"video:sbl_iphone_is_live__smtbr\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"is_live_watch_time_given_iphone\",\"22\":\"video:sbl_iphone_is_live__smtbr\",\"23\":\"video:sbl_iphone_is_live__smtbr\",\"24\":\"wilde_scroll_frame_drops_per_minute\",\"25\":\"is_live_watch_time_given_iphone\",\"26\":\"sbl_iphone_is_live__psr_1_start\",\"27\":\"video:encoding:iphone_live_playback_mos_loss\",\"28\":\"video:sbl_iphone_is_live__smtbr\",\"29\":\"is_live_watch_time_given_iphone\",\"30\":\"sbl_iphone_is_live__psr_1_start\",\"31\":\"video:encoding:iphone_live_playback_mos_loss\",\"32\":\"video:sbl_iphone_is_live__smtbr\",\"33\":\"wilde_scroll_frame_drops_per_minute\",\"34\":\"is_live_watch_time_given_iphone\",\"35\":\"video:encoding:iphone_live_playback_mos_loss\",\"36\":\"video:sbl_iphone_is_live__smtbr\",\"37\":\"wilde_scroll_frame_drops_per_minute\",\"38\":\"video:sbl_iphone_is_live__smtbr\",\"39\":\"is_live_watch_time_given_iphone\",\"40\":\"video:sbl_iphone_is_live__smtbr\",\"41\":\"wilde_scroll_frame_drops_per_minute\",\"42\":\"is_live_watch_time_given_iphone\",\"43\":\"sbl_iphone_is_live__psr_1_start\",\"44\":\"sbl_iphone_is_live__psr_1_start\",\"45\":\"wilde_scroll_frame_drops_per_minute\",\"46\":\"wilde_scroll_frame_drops_per_minute\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"wilde_scroll_frame_drops_per_minute\",\"49\":\"sbl_iphone_is_live__psr_1_start\"},\"n\":{\"0\":115,\"1\":115,\"2\":374,\"3\":374,\"4\":375,\"5\":374,\"6\":97,\"7\":790,\"8\":410,\"9\":790,\"10\":790,\"11\":790,\"12\":382,\"13\":790,\"14\":115,\"15\":100,\"16\":375,\"17\":100,\"18\":100,\"19\":100,\"20\":100,\"21\":97,\"22\":97,\"23\":382,\"24\":97,\"25\":108,\"26\":108,\"27\":108,\"28\":108,\"29\":398,\"30\":398,\"31\":398,\"32\":398,\"33\":398,\"34\":410,\"35\":410,\"36\":410,\"37\":410,\"38\":115,\"39\":375,\"40\":375,\"41\":375,\"42\":382,\"43\":97,\"44\":382,\"45\":382,\"46\":115,\"47\":374,\"48\":108,\"49\":374},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1},\"sem\":{\"0\":7.6143966438,\"1\":0.023612101,\"2\":3.7387832266,\"3\":528.3577098709,\"4\":0.0113307967,\"5\":22101.2264906174,\"6\":2.9227717958,\"7\":24.0978452365,\"8\":0.0067278309,\"9\":0.005689872,\"10\":2.518821678,\"11\":77.256782728,\"12\":8.5748789626,\"13\":8779.5822257026,\"14\":2.4319625077,\"15\":70.3874565272,\"16\":6.6823649385,\"17\":0.0191492075,\"18\":4.792160379,\"19\":71.4036828669,\"20\":3363.5742421581,\"21\":77.3488240115,\"22\":884.0613529532,\"23\":205.6404808942,\"24\":6314.1268238277,\"25\":43.0568022762,\"26\":0.0235496486,\"27\":4.5985864345,\"28\":195.281824095,\"29\":15.0971200453,\"30\":0.0086663679,\"31\":2.9006027113,\"32\":119.4160205664,\"33\":33166.7741218912,\"34\":23.6306563344,\"35\":3.8351089642,\"36\":226.0686875097,\"37\":5486.154492961,\"38\":278.7129878945,\"39\":21.0994886463,\"40\":161.8504954384,\"41\":4881.267866131,\"42\":23.1504111153,\"43\":0.0126440933,\"44\":0.0242924193,\"45\":16671.3973219923,\"46\":21860.9913685882,\"47\":30.9113897687,\"48\":13879.4417420248,\"49\":0.0095014003},\"start_time\":{\"0\":1554249600000,\"1\":1554249600000,\"2\":1554249600000,\"3\":1554249600000,\"4\":1554249600000,\"5\":1554249600000,\"6\":1554249600000,\"7\":1554249600000,\"8\":1554249600000,\"9\":1554249600000,\"10\":1554249600000,\"11\":1554249600000,\"12\":1554249600000,\"13\":1554249600000,\"14\":1554249600000,\"15\":1554249600000,\"16\":1554249600000,\"17\":1554249600000,\"18\":1554249600000,\"19\":1554249600000,\"20\":1554249600000,\"21\":1554249600000,\"22\":1554249600000,\"23\":1554249600000,\"24\":1554249600000,\"25\":1554249600000,\"26\":1554249600000,\"27\":1554249600000,\"28\":1554249600000,\"29\":1554249600000,\"30\":1554249600000,\"31\":1554249600000,\"32\":1554249600000,\"33\":1554249600000,\"34\":1554249600000,\"35\":1554249600000,\"36\":1554249600000,\"37\":1554249600000,\"38\":1554249600000,\"39\":1554249600000,\"40\":1554249600000,\"41\":1554249600000,\"42\":1554249600000,\"43\":1554249600000,\"44\":1554249600000,\"45\":1554249600000,\"46\":1554249600000,\"47\":1554249600000,\"48\":1554249600000,\"49\":1554249600000}}"},"description":null}],[1556078905303,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_22\",\"1\":\"0_22\",\"2\":\"1_3\",\"3\":\"1_3\",\"4\":\"1_1\",\"5\":\"1_3\",\"6\":\"0_35\",\"7\":\"1_3\",\"8\":\"1_0\",\"9\":\"1_3\",\"10\":\"1_3\",\"11\":\"1_4\",\"12\":\"1_2\",\"13\":\"1_4\",\"14\":\"0_22\",\"15\":\"0_22\",\"16\":\"1_1\",\"17\":\"1_4\",\"18\":\"1_4\",\"19\":\"1_4\",\"20\":\"1_4\",\"21\":\"0_25\",\"22\":\"0_35\",\"23\":\"1_2\",\"24\":\"status_quo\",\"25\":\"status_quo\",\"26\":\"status_quo\",\"27\":\"status_quo\",\"28\":\"0_59\",\"29\":\"0_59\",\"30\":\"status_quo\",\"31\":\"status_quo\",\"32\":\"0_25\",\"33\":\"0_25\",\"34\":\"1_0\",\"35\":\"1_0\",\"36\":\"0_25\",\"37\":\"0_25\",\"38\":\"0_35\",\"39\":\"0_35\",\"40\":\"1_1\",\"41\":\"0_35\",\"42\":\"0_35\",\"43\":\"0_59\",\"44\":\"0_59\",\"45\":\"1_2\",\"46\":\"0_59\",\"47\":\"1_0\",\"48\":\"1_0\",\"49\":\"1_0\",\"50\":\"0_22\",\"51\":\"1_1\",\"52\":\"1_1\",\"53\":\"1_1\",\"54\":\"0_25\",\"55\":\"1_2\",\"56\":\"0_22\",\"57\":\"1_2\",\"58\":\"0_59\",\"59\":\"1_2\"},\"trial_index\":{\"0\":1,\"1\":1,\"2\":1,\"3\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1,\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"19\":1,\"20\":1,\"21\":1,\"22\":1,\"23\":1,\"24\":1,\"25\":1,\"26\":1,\"27\":1,\"28\":1,\"29\":1,\"30\":1,\"31\":1,\"32\":1,\"33\":1,\"34\":1,\"35\":1,\"36\":1,\"37\":1,\"38\":1,\"39\":1,\"40\":1,\"41\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"47\":1,\"48\":1,\"49\":1,\"50\":1,\"51\":1,\"52\":1,\"53\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"58\":1,\"59\":1},\"end_time\":{\"0\":1554422400000,\"1\":1554422400000,\"2\":1554422400000,\"3\":1554422400000,\"4\":1554422400000,\"5\":1554422400000,\"6\":1554422400000,\"7\":1554422400000,\"8\":1554422400000,\"9\":1554422400000,\"10\":1554422400000,\"11\":1554422400000,\"12\":1554422400000,\"13\":1554422400000,\"14\":1554422400000,\"15\":1554422400000,\"16\":1554422400000,\"17\":1554422400000,\"18\":1554422400000,\"19\":1554422400000,\"20\":1554422400000,\"21\":1554422400000,\"22\":1554422400000,\"23\":1554422400000,\"24\":1554422400000,\"25\":1554422400000,\"26\":1554422400000,\"27\":1554422400000,\"28\":1554422400000,\"29\":1554422400000,\"30\":1554422400000,\"31\":1554422400000,\"32\":1554422400000,\"33\":1554422400000,\"34\":1554422400000,\"35\":1554422400000,\"36\":1554422400000,\"37\":1554422400000,\"38\":1554422400000,\"39\":1554422400000,\"40\":1554422400000,\"41\":1554422400000,\"42\":1554422400000,\"43\":1554422400000,\"44\":1554422400000,\"45\":1554422400000,\"46\":1554422400000,\"47\":1554422400000,\"48\":1554422400000,\"49\":1554422400000,\"50\":1554422400000,\"51\":1554422400000,\"52\":1554422400000,\"53\":1554422400000,\"54\":1554422400000,\"55\":1554422400000,\"56\":1554422400000,\"57\":1554422400000,\"58\":1554422400000,\"59\":1554422400000},\"frac_nonnull\":{\"0\":0.3359519806,\"1\":0.0100754031,\"2\":0.33587924,\"3\":0.0101693135,\"4\":0.010065547,\"5\":1.0,\"6\":0.3359256663,\"7\":1.0,\"8\":1.0,\"9\":1.0,\"10\":1.0,\"11\":0.3360080974,\"12\":0.0100617053,\"13\":0.0101145605,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":1.0,\"22\":0.0100274088,\"23\":1.0,\"24\":0.3357879805,\"25\":0.0100874023,\"26\":1.0,\"27\":1.0,\"28\":0.3359922733,\"29\":1.0,\"30\":1.0,\"31\":1.0,\"32\":0.335529786,\"33\":0.0100837101,\"34\":0.0101580068,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":1.0,\"41\":1.0,\"42\":1.0,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":1.0,\"47\":0.3357591396,\"48\":1.0,\"49\":1.0,\"50\":1.0,\"51\":0.3358162038,\"52\":1.0,\"53\":1.0,\"54\":1.0,\"55\":0.3357780895,\"56\":1.0,\"57\":1.0,\"58\":0.0101857242,\"59\":1.0},\"mean\":{\"0\":73.8490497912,\"1\":0.0395746002,\"2\":73.7163170994,\"3\":0.0400841733,\"4\":0.0399349094,\"5\":0.9337243921,\"6\":74.1158805483,\"7\":22.5333598816,\"8\":0.9342093343,\"9\":607.8012117735,\"10\":37306.2448075371,\"11\":73.8548479185,\"12\":0.0387377787,\"13\":0.039402907,\"14\":0.9341253134,\"15\":37541.510750113,\"16\":0.9341012751,\"17\":0.9343170274,\"18\":22.7236841549,\"19\":612.5115088319,\"20\":37453.7986767275,\"21\":607.7000350728,\"22\":0.039057634,\"23\":0.9338761835,\"24\":74.0209845942,\"25\":0.0394352568,\"26\":0.933763894,\"27\":22.5101367044,\"28\":73.1802814333,\"29\":0.9341824444,\"30\":606.3293588519,\"31\":37339.4449841197,\"32\":74.004243316,\"33\":0.040198776,\"34\":0.0399782642,\"35\":22.6808878091,\"36\":0.9333171905,\"37\":22.5344108868,\"38\":0.9339123198,\"39\":22.4424186541,\"40\":22.6045777213,\"41\":610.3772236987,\"42\":36990.0760880729,\"43\":22.7703428112,\"44\":608.1943519321,\"45\":22.6334302183,\"46\":37252.6017938087,\"47\":74.0518529404,\"48\":611.7212418434,\"49\":37497.9314738985,\"50\":22.6612905513,\"51\":73.7730038896,\"52\":608.8126187084,\"53\":37411.8084913019,\"54\":37583.2733964863,\"55\":73.9887454788,\"56\":614.071184051,\"57\":608.8828044048,\"58\":0.0393217324,\"59\":37340.3243662069},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"is_live_watch_time_given_iphone\",\"3\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"4\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"5\":\"sbl_iphone_is_live__psr_1_start\",\"6\":\"is_live_watch_time_given_iphone\",\"7\":\"video:encoding:iphone_live_playback_mos_loss\",\"8\":\"sbl_iphone_is_live__psr_1_start\",\"9\":\"video:sbl_iphone_is_live__smtbr\",\"10\":\"wilde_scroll_frame_drops_per_minute\",\"11\":\"is_live_watch_time_given_iphone\",\"12\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"13\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"14\":\"sbl_iphone_is_live__psr_1_start\",\"15\":\"wilde_scroll_frame_drops_per_minute\",\"16\":\"sbl_iphone_is_live__psr_1_start\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"video:encoding:iphone_live_playback_mos_loss\",\"19\":\"video:sbl_iphone_is_live__smtbr\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"video:sbl_iphone_is_live__smtbr\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"26\":\"sbl_iphone_is_live__psr_1_start\",\"27\":\"video:encoding:iphone_live_playback_mos_loss\",\"28\":\"is_live_watch_time_given_iphone\",\"29\":\"sbl_iphone_is_live__psr_1_start\",\"30\":\"video:sbl_iphone_is_live__smtbr\",\"31\":\"wilde_scroll_frame_drops_per_minute\",\"32\":\"is_live_watch_time_given_iphone\",\"33\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:encoding:iphone_live_playback_mos_loss\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"sbl_iphone_is_live__psr_1_start\",\"39\":\"video:encoding:iphone_live_playback_mos_loss\",\"40\":\"video:encoding:iphone_live_playback_mos_loss\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"wilde_scroll_frame_drops_per_minute\",\"43\":\"video:encoding:iphone_live_playback_mos_loss\",\"44\":\"video:sbl_iphone_is_live__smtbr\",\"45\":\"video:encoding:iphone_live_playback_mos_loss\",\"46\":\"wilde_scroll_frame_drops_per_minute\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"video:sbl_iphone_is_live__smtbr\",\"49\":\"wilde_scroll_frame_drops_per_minute\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"is_live_watch_time_given_iphone\",\"52\":\"video:sbl_iphone_is_live__smtbr\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"wilde_scroll_frame_drops_per_minute\",\"55\":\"is_live_watch_time_given_iphone\",\"56\":\"video:sbl_iphone_is_live__smtbr\",\"57\":\"video:sbl_iphone_is_live__smtbr\",\"58\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"59\":\"wilde_scroll_frame_drops_per_minute\"},\"n\":{\"0\":3279174,\"1\":3279174,\"2\":13134810,\"3\":13134810,\"4\":13147820,\"5\":13134810,\"6\":3278514,\"7\":13134810,\"8\":13146969,\"9\":13134810,\"10\":13134810,\"11\":13136112,\"12\":13136143,\"13\":13136112,\"14\":3279174,\"15\":3279174,\"16\":13147820,\"17\":13136112,\"18\":13136112,\"19\":13136112,\"20\":13136112,\"21\":3277861,\"22\":3278514,\"23\":13136143,\"24\":26280899,\"25\":26280899,\"26\":26280899,\"27\":26280899,\"28\":3279001,\"29\":3279001,\"30\":26280899,\"31\":26280899,\"32\":3277861,\"33\":3277861,\"34\":13146969,\"35\":13146969,\"36\":3277861,\"37\":3277861,\"38\":3278514,\"39\":3278514,\"40\":13147820,\"41\":3278514,\"42\":3278514,\"43\":3279001,\"44\":3279001,\"45\":13136143,\"46\":3279001,\"47\":13146969,\"48\":13146969,\"49\":13146969,\"50\":3279174,\"51\":13147820,\"52\":13147820,\"53\":13147820,\"54\":3277861,\"55\":13136143,\"56\":3279174,\"57\":13136143,\"58\":3279001,\"59\":13136143},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1},\"sem\":{\"0\":0.3287346741,\"1\":0.0006729243,\"2\":0.1641446716,\"3\":0.000342542,\"4\":0.0003369562,\"5\":0.000111774,\"6\":0.3299846277,\"7\":0.0314701445,\"8\":0.000108028,\"9\":1.4494954127,\"10\":98.5487947019,\"11\":0.1641425793,\"12\":0.0003285447,\"13\":0.0003325016,\"14\":0.0002208663,\"15\":199.5152979883,\"16\":0.0001104009,\"17\":0.0001078824,\"18\":0.0314029138,\"19\":1.4575770368,\"20\":99.4053194749,\"21\":2.8884970067,\"22\":0.0006527361,\"23\":0.000106309,\"24\":0.1162712337,\"25\":0.0002353783,\"26\":0.0000785772,\"27\":0.0221315509,\"28\":0.3260732308,\"29\":0.0002121053,\"30\":1.0208675102,\"31\":70.014380362,\"32\":0.3295030483,\"33\":0.0006883162,\"34\":0.0003371195,\"35\":0.0313362361,\"36\":0.0002361857,\"37\":0.0626787742,\"38\":0.0002091436,\"39\":0.0633342441,\"40\":0.0316687986,\"41\":2.8961295633,\"42\":195.8748078364,\"43\":0.0635609486,\"44\":2.881845056,\"45\":0.0314309395,\"46\":195.7245872038,\"47\":0.1642406191,\"48\":1.4542715917,\"49\":99.7503037858,\"50\":0.0634754543,\"51\":0.1639330184,\"52\":1.4472184215,\"53\":98.7676287605,\"54\":200.5857727307,\"55\":0.1643771871,\"56\":2.9231672373,\"57\":1.4442422981,\"58\":0.0006663262,\"59\":99.5048896981},\"start_time\":{\"0\":1554249600000,\"1\":1554249600000,\"2\":1554249600000,\"3\":1554249600000,\"4\":1554249600000,\"5\":1554249600000,\"6\":1554249600000,\"7\":1554249600000,\"8\":1554249600000,\"9\":1554249600000,\"10\":1554249600000,\"11\":1554249600000,\"12\":1554249600000,\"13\":1554249600000,\"14\":1554249600000,\"15\":1554249600000,\"16\":1554249600000,\"17\":1554249600000,\"18\":1554249600000,\"19\":1554249600000,\"20\":1554249600000,\"21\":1554249600000,\"22\":1554249600000,\"23\":1554249600000,\"24\":1554249600000,\"25\":1554249600000,\"26\":1554249600000,\"27\":1554249600000,\"28\":1554249600000,\"29\":1554249600000,\"30\":1554249600000,\"31\":1554249600000,\"32\":1554249600000,\"33\":1554249600000,\"34\":1554249600000,\"35\":1554249600000,\"36\":1554249600000,\"37\":1554249600000,\"38\":1554249600000,\"39\":1554249600000,\"40\":1554249600000,\"41\":1554249600000,\"42\":1554249600000,\"43\":1554249600000,\"44\":1554249600000,\"45\":1554249600000,\"46\":1554249600000,\"47\":1554249600000,\"48\":1554249600000,\"49\":1554249600000,\"50\":1554249600000,\"51\":1554249600000,\"52\":1554249600000,\"53\":1554249600000,\"54\":1554249600000,\"55\":1554249600000,\"56\":1554249600000,\"57\":1554249600000,\"58\":1554249600000,\"59\":1554249600000}}"},"description":null}],[1556078905316,{"__type":"Data","df":{"__type":"DataFrame","value":"{\"arm_name\":{\"0\":\"0_22\",\"1\":\"0_22\",\"2\":\"1_3\",\"3\":\"1_3\",\"4\":\"1_1\",\"5\":\"1_3\",\"6\":\"0_35\",\"7\":\"1_3\",\"8\":\"1_0\",\"9\":\"1_3\",\"10\":\"1_3\",\"11\":\"1_4\",\"12\":\"1_2\",\"13\":\"1_4\",\"14\":\"0_22\",\"15\":\"0_22\",\"16\":\"1_1\",\"17\":\"1_4\",\"18\":\"1_4\",\"19\":\"1_4\",\"20\":\"1_4\",\"21\":\"0_25\",\"22\":\"0_35\",\"23\":\"1_2\",\"24\":\"status_quo\",\"25\":\"status_quo\",\"26\":\"status_quo\",\"27\":\"status_quo\",\"28\":\"0_59\",\"29\":\"0_59\",\"30\":\"status_quo\",\"31\":\"status_quo\",\"32\":\"0_25\",\"33\":\"0_25\",\"34\":\"1_0\",\"35\":\"1_0\",\"36\":\"0_25\",\"37\":\"0_25\",\"38\":\"0_35\",\"39\":\"0_35\",\"40\":\"1_1\",\"41\":\"0_35\",\"42\":\"0_35\",\"43\":\"0_59\",\"44\":\"0_59\",\"45\":\"1_2\",\"46\":\"0_59\",\"47\":\"1_0\",\"48\":\"1_0\",\"49\":\"1_0\",\"50\":\"0_22\",\"51\":\"1_1\",\"52\":\"1_1\",\"53\":\"1_1\",\"54\":\"0_25\",\"55\":\"1_2\",\"56\":\"0_22\",\"57\":\"1_2\",\"58\":\"0_59\",\"59\":\"1_2\"},\"trial_index\":{\"0\":1,\"1\":1,\"2\":1,\"3\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1,\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"19\":1,\"20\":1,\"21\":1,\"22\":1,\"23\":1,\"24\":1,\"25\":1,\"26\":1,\"27\":1,\"28\":1,\"29\":1,\"30\":1,\"31\":1,\"32\":1,\"33\":1,\"34\":1,\"35\":1,\"36\":1,\"37\":1,\"38\":1,\"39\":1,\"40\":1,\"41\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"47\":1,\"48\":1,\"49\":1,\"50\":1,\"51\":1,\"52\":1,\"53\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"58\":1,\"59\":1},\"end_time\":{\"0\":1554595200000,\"1\":1554595200000,\"2\":1554595200000,\"3\":1554595200000,\"4\":1554595200000,\"5\":1554595200000,\"6\":1554595200000,\"7\":1554595200000,\"8\":1554595200000,\"9\":1554595200000,\"10\":1554595200000,\"11\":1554595200000,\"12\":1554595200000,\"13\":1554595200000,\"14\":1554595200000,\"15\":1554595200000,\"16\":1554595200000,\"17\":1554595200000,\"18\":1554595200000,\"19\":1554595200000,\"20\":1554595200000,\"21\":1554595200000,\"22\":1554595200000,\"23\":1554595200000,\"24\":1554595200000,\"25\":1554595200000,\"26\":1554595200000,\"27\":1554595200000,\"28\":1554595200000,\"29\":1554595200000,\"30\":1554595200000,\"31\":1554595200000,\"32\":1554595200000,\"33\":1554595200000,\"34\":1554595200000,\"35\":1554595200000,\"36\":1554595200000,\"37\":1554595200000,\"38\":1554595200000,\"39\":1554595200000,\"40\":1554595200000,\"41\":1554595200000,\"42\":1554595200000,\"43\":1554595200000,\"44\":1554595200000,\"45\":1554595200000,\"46\":1554595200000,\"47\":1554595200000,\"48\":1554595200000,\"49\":1554595200000,\"50\":1554595200000,\"51\":1554595200000,\"52\":1554595200000,\"53\":1554595200000,\"54\":1554595200000,\"55\":1554595200000,\"56\":1554595200000,\"57\":1554595200000,\"58\":1554595200000,\"59\":1554595200000},\"frac_nonnull\":{\"0\":0.4417603654,\"1\":0.0121402022,\"2\":0.4417391901,\"3\":0.0122199392,\"4\":0.0121342308,\"5\":1.0,\"6\":0.4415914082,\"7\":1.0,\"8\":1.0,\"9\":1.0,\"10\":1.0,\"11\":0.4418676554,\"12\":0.0120965715,\"13\":0.0121739276,\"14\":1.0,\"15\":1.0,\"16\":1.0,\"17\":1.0,\"18\":1.0,\"19\":1.0,\"20\":1.0,\"21\":1.0,\"22\":0.0120408946,\"23\":1.0,\"24\":0.441589599,\"25\":0.0121634103,\"26\":1.0,\"27\":1.0,\"28\":0.441871651,\"29\":1.0,\"30\":1.0,\"31\":1.0,\"32\":0.4413894961,\"33\":0.012152388,\"34\":0.0121956755,\"35\":1.0,\"36\":1.0,\"37\":1.0,\"38\":1.0,\"39\":1.0,\"40\":1.0,\"41\":1.0,\"42\":1.0,\"43\":1.0,\"44\":1.0,\"45\":1.0,\"46\":1.0,\"47\":0.4416284683,\"48\":1.0,\"49\":1.0,\"50\":1.0,\"51\":0.4416105859,\"52\":1.0,\"53\":1.0,\"54\":1.0,\"55\":0.4416425293,\"56\":1.0,\"57\":1.0,\"58\":0.0122686878,\"59\":1.0},\"mean\":{\"0\":145.1528116824,\"1\":0.0509273357,\"2\":145.0491246294,\"3\":0.0516081874,\"4\":0.0516154463,\"5\":0.9373911199,\"6\":145.8843460323,\"7\":22.6710675543,\"8\":0.938127077,\"9\":561.8599254585,\"10\":37210.8405464161,\"11\":145.5688446973,\"12\":0.050096178,\"13\":0.050850853,\"14\":0.937991492,\"15\":37351.0931890173,\"16\":0.9379236054,\"17\":0.9380805085,\"18\":22.9070303767,\"19\":568.546120622,\"20\":37183.2884367717,\"21\":563.6030692645,\"22\":0.0504938951,\"23\":0.937568918,\"24\":145.5605032429,\"25\":0.0509666146,\"26\":0.9374120113,\"27\":22.5921285466,\"28\":144.4885245092,\"29\":0.938124089,\"30\":560.1558298797,\"31\":37175.6710662625,\"32\":145.3468711694,\"33\":0.0519083745,\"34\":0.0516493463,\"35\":22.8254422973,\"36\":0.9372137139,\"37\":22.6855686466,\"38\":0.937534063,\"39\":22.6625440215,\"40\":22.7494038564,\"41\":565.4322041646,\"42\":36937.0524087734,\"43\":22.9532672948,\"44\":566.3308272312,\"45\":22.8070294574,\"46\":37142.4427221455,\"47\":145.5538935803,\"48\":568.2034766986,\"49\":37306.6961043705,\"50\":22.8009878131,\"51\":145.1274951344,\"52\":564.3544946658,\"53\":37252.093785465,\"54\":37134.5439659089,\"55\":145.744176598,\"56\":569.1716372463,\"57\":564.47191512,\"58\":0.0509499086,\"59\":37180.3113022166},\"metric_name\":{\"0\":\"is_live_watch_time_given_iphone\",\"1\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"2\":\"is_live_watch_time_given_iphone\",\"3\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"4\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"5\":\"sbl_iphone_is_live__psr_1_start\",\"6\":\"is_live_watch_time_given_iphone\",\"7\":\"video:encoding:iphone_live_playback_mos_loss\",\"8\":\"sbl_iphone_is_live__psr_1_start\",\"9\":\"video:sbl_iphone_is_live__smtbr\",\"10\":\"wilde_scroll_frame_drops_per_minute\",\"11\":\"is_live_watch_time_given_iphone\",\"12\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"13\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"14\":\"sbl_iphone_is_live__psr_1_start\",\"15\":\"wilde_scroll_frame_drops_per_minute\",\"16\":\"sbl_iphone_is_live__psr_1_start\",\"17\":\"sbl_iphone_is_live__psr_1_start\",\"18\":\"video:encoding:iphone_live_playback_mos_loss\",\"19\":\"video:sbl_iphone_is_live__smtbr\",\"20\":\"wilde_scroll_frame_drops_per_minute\",\"21\":\"video:sbl_iphone_is_live__smtbr\",\"22\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"23\":\"sbl_iphone_is_live__psr_1_start\",\"24\":\"is_live_watch_time_given_iphone\",\"25\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"26\":\"sbl_iphone_is_live__psr_1_start\",\"27\":\"video:encoding:iphone_live_playback_mos_loss\",\"28\":\"is_live_watch_time_given_iphone\",\"29\":\"sbl_iphone_is_live__psr_1_start\",\"30\":\"video:sbl_iphone_is_live__smtbr\",\"31\":\"wilde_scroll_frame_drops_per_minute\",\"32\":\"is_live_watch_time_given_iphone\",\"33\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"34\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"35\":\"video:encoding:iphone_live_playback_mos_loss\",\"36\":\"sbl_iphone_is_live__psr_1_start\",\"37\":\"video:encoding:iphone_live_playback_mos_loss\",\"38\":\"sbl_iphone_is_live__psr_1_start\",\"39\":\"video:encoding:iphone_live_playback_mos_loss\",\"40\":\"video:encoding:iphone_live_playback_mos_loss\",\"41\":\"video:sbl_iphone_is_live__smtbr\",\"42\":\"wilde_scroll_frame_drops_per_minute\",\"43\":\"video:encoding:iphone_live_playback_mos_loss\",\"44\":\"video:sbl_iphone_is_live__smtbr\",\"45\":\"video:encoding:iphone_live_playback_mos_loss\",\"46\":\"wilde_scroll_frame_drops_per_minute\",\"47\":\"is_live_watch_time_given_iphone\",\"48\":\"video:sbl_iphone_is_live__smtbr\",\"49\":\"wilde_scroll_frame_drops_per_minute\",\"50\":\"video:encoding:iphone_live_playback_mos_loss\",\"51\":\"is_live_watch_time_given_iphone\",\"52\":\"video:sbl_iphone_is_live__smtbr\",\"53\":\"wilde_scroll_frame_drops_per_minute\",\"54\":\"wilde_scroll_frame_drops_per_minute\",\"55\":\"is_live_watch_time_given_iphone\",\"56\":\"video:sbl_iphone_is_live__smtbr\",\"57\":\"video:sbl_iphone_is_live__smtbr\",\"58\":\"performance:foreground_app_death:ios:all_fads_by_exception\",\"59\":\"wilde_scroll_frame_drops_per_minute\"},\"n\":{\"0\":3605706,\"1\":3605706,\"2\":14440170,\"3\":14440170,\"4\":14455634,\"5\":14440170,\"6\":3603802,\"7\":14440170,\"8\":14453484,\"9\":14440170,\"10\":14440170,\"11\":14441272,\"12\":14443018,\"13\":14441272,\"14\":3605706,\"15\":3605706,\"16\":14455634,\"17\":14441272,\"18\":14441272,\"19\":14441272,\"20\":14441272,\"21\":3603407,\"22\":3603802,\"23\":14443018,\"24\":28891815,\"25\":28891815,\"26\":28891815,\"27\":28891815,\"28\":3605031,\"29\":3605031,\"30\":28891815,\"31\":28891815,\"32\":3603407,\"33\":3603407,\"34\":14453484,\"35\":14453484,\"36\":3603407,\"37\":3603407,\"38\":3603802,\"39\":3603802,\"40\":14455634,\"41\":3603802,\"42\":3603802,\"43\":3605031,\"44\":3605031,\"45\":14443018,\"46\":3605031,\"47\":14453484,\"48\":14453484,\"49\":14453484,\"50\":3605706,\"51\":14455634,\"52\":14455634,\"53\":14455634,\"54\":3603407,\"55\":14443018,\"56\":3605706,\"57\":14443018,\"58\":3605031,\"59\":14443018},\"random_split\":{\"0\":-1,\"1\":-1,\"2\":-1,\"3\":-1,\"4\":-1,\"5\":-1,\"6\":-1,\"7\":-1,\"8\":-1,\"9\":-1,\"10\":-1,\"11\":-1,\"12\":-1,\"13\":-1,\"14\":-1,\"15\":-1,\"16\":-1,\"17\":-1,\"18\":-1,\"19\":-1,\"20\":-1,\"21\":-1,\"22\":-1,\"23\":-1,\"24\":-1,\"25\":-1,\"26\":-1,\"27\":-1,\"28\":-1,\"29\":-1,\"30\":-1,\"31\":-1,\"32\":-1,\"33\":-1,\"34\":-1,\"35\":-1,\"36\":-1,\"37\":-1,\"38\":-1,\"39\":-1,\"40\":-1,\"41\":-1,\"42\":-1,\"43\":-1,\"44\":-1,\"45\":-1,\"46\":-1,\"47\":-1,\"48\":-1,\"49\":-1,\"50\":-1,\"51\":-1,\"52\":-1,\"53\":-1,\"54\":-1,\"55\":-1,\"56\":-1,\"57\":-1,\"58\":-1,\"59\":-1},\"sem\":{\"0\":0.5522326723,\"1\":0.0008205924,\"2\":0.2754643557,\"3\":0.0004174499,\"4\":0.0004142322,\"5\":0.0000934187,\"6\":0.5536942407,\"7\":0.0239291504,\"8\":0.0000899117,\"9\":1.0032205854,\"10\":80.6581330182,\"11\":0.2760774732,\"12\":0.0004043822,\"13\":0.000408969,\"14\":0.0001846662,\"15\":161.3262179174,\"16\":0.000093144,\"17\":0.0000909971,\"18\":0.0238407585,\"19\":1.0130549657,\"20\":80.3925581473,\"21\":2.0236902763,\"22\":0.0008024614,\"23\":0.0000912139,\"24\":0.1952650996,\"25\":0.0002899054,\"26\":0.0000663178,\"27\":0.0168000268,\"28\":0.5479736003,\"29\":0.0001790632,\"30\":0.7059923877,\"31\":57.0038557644,\"32\":0.5522522672,\"33\":0.0008474374,\"34\":0.0004143167,\"35\":0.0239743403,\"36\":0.0001920637,\"37\":0.0476577306,\"38\":0.0001776924,\"39\":0.0481889592,\"40\":0.0239727568,\"41\":2.0161456094,\"42\":158.5242332191,\"43\":0.0480834468,\"44\":2.003077117,\"45\":0.0238411891,\"46\":159.6334943604,\"47\":0.2753827993,\"48\":1.0123357842,\"49\":80.9419247578,\"50\":0.0481458475,\"51\":0.2750202398,\"52\":1.0070202077,\"53\":80.7478880097,\"54\":162.096639186,\"55\":0.2761737148,\"56\":2.0290951678,\"57\":1.0023388639,\"58\":0.0008157563,\"59\":80.6562480943},\"start_time\":{\"0\":1554249600000,\"1\":1554249600000,\"2\":1554249600000,\"3\":1554249600000,\"4\":1554249600000,\"5\":1554249600000,\"6\":1554249600000,\"7\":1554249600000,\"8\":1554249600000,\"9\":1554249600000,\"10\":1554249600000,\"11\":1554249600000,\"12\":1554249600000,\"13\":1554249600000,\"14\":1554249600000,\"15\":1554249600000,\"16\":1554249600000,\"17\":1554249600000,\"18\":1554249600000,\"19\":1554249600000,\"20\":1554249600000,\"21\":1554249600000,\"22\":1554249600000,\"23\":1554249600000,\"24\":1554249600000,\"25\":1554249600000,\"26\":1554249600000,\"27\":1554249600000,\"28\":1554249600000,\"29\":1554249600000,\"30\":1554249600000,\"31\":1554249600000,\"32\":1554249600000,\"33\":1554249600000,\"34\":1554249600000,\"35\":1554249600000,\"36\":1554249600000,\"37\":1554249600000,\"38\":1554249600000,\"39\":1554249600000,\"40\":1554249600000,\"41\":1554249600000,\"42\":1554249600000,\"43\":1554249600000,\"44\":1554249600000,\"45\":1554249600000,\"46\":1554249600000,\"47\":1554249600000,\"48\":1554249600000,\"49\":1554249600000,\"50\":1554249600000,\"51\":1554249600000,\"52\":1554249600000,\"53\":1554249600000,\"54\":1554249600000,\"55\":1554249600000,\"56\":1554249600000,\"57\":1554249600000,\"58\":1554249600000,\"59\":1554249600000}}"},"description":null}]]}}} diff --git a/tutorials/human_in_the_loop/human_in_the_loop.ipynb b/tutorials/human_in_the_loop/human_in_the_loop.ipynb index f9a221b4ffa..99902d844d0 100644 --- a/tutorials/human_in_the_loop/human_in_the_loop.ipynb +++ b/tutorials/human_in_the_loop/human_in_the_loop.ipynb @@ -1,628 +1,571 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "30b21773-7e2c-41bf-990f-a6c2aa89be06", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "# Ask-tell Optimization in a Human-in-the-loop Setting\n", + "\n", + "Some optimization experiments, like the one described in LINK, can be conducted in a completely automated manner.\n", + "Other experiments may require a human in the loop, for instance a scientist manually conducting and evaluating each trial in a lab.\n", + "In this tutorial we demonstrate this ask-tell optimization in a human-in-the-loop setting by imagining the task of maximizing the strength of a 3D printed part using compression testing (i.e., crushing the part) where different print settings will have to be manually tried and evaluated.\n", + "\n", + "\n", + "### Background\n", + "\n", + "In 3D printing, several parameters can significantly affect the mechanical properties of the printed object:\n", + "\n", + "- **Infill Density**: The percentage of material used inside the object. Higher infill density generally increases strength but also weight and material usage.\n", + "- **Layer Height**: The thickness of each layer of material. Smaller layer heights can improve surface finish and detail but increase print time.\n", + "- **Infill Type**: The pattern used to fill the interior of the object. Different patterns (e.g., honeycomb, gyroid, lines, rectilinear) offer various balances of strength, speed, and material efficiency.\n", + "\n", + "- **Strength Measurement**: In this tutorial, we assume the strength of the 3D printed part is measured using compression testing, which evaluates how the object performs under compressive stress.\n", + "\n", + "### Learning Objectives\n", + "- Understand black box optimization concepts\n", + "- Define an optimization problem using Ax\n", + "- Configure and run an experiment using Ax's `Client`\n", + "- Analyze the results of the optimization\n", + "\n", + "### Prerequisites\n", + "- Familiarity with Python and basic programming concepts\n", + "- Understanding of adaptive experimentation and Bayesian optimization" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "language": "markdown", + "originalKey": "8f38bebe-cf19-42e9-a73f-064df271299a", + "showInput": true + }, + "source": [ + "## Step 1: Import Necessary Modules" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739301999671, + "executionStopTime": 1739302002547, + "isAgentGenerated": false, + "language": "python", + "originalKey": "5e8f7986-eb55-4dae-b63e-329760017aab", + "outputsInitialized": true, + "requestMsgId": "5e8f7986-eb55-4dae-b63e-329760017aab", + "serverExecutionDuration": 2591.1049650749 + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "from ax.preview.api.client import Client\n", + "from ax.preview.api.configs import ExperimentConfig, RangeParameterConfig, ChoiceParameterConfig, ParameterType, GenerationStrategyConfig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "a766f271-0d97-4c01-96dc-64e92b6cd713", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 2: Initialize Client\n", + "\n", + "Create an instance of the `Client` to manage the state of your experiment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739302212796, + "executionStopTime": 1739302213094, + "isAgentGenerated": false, + "language": "python", + "originalKey": "9a08d007-be86-42ec-8f32-f4102548c2e0", + "outputsInitialized": true, + "requestMsgId": "9a08d007-be86-42ec-8f32-f4102548c2e0", + "serverExecutionDuration": 1.4741730410606 + }, + "outputs": [], + "source": [ + "client = Client(random_seed=42)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "ff991a0a-6522-4aa6-a7ef-d8a494a207bb", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 3: Configure Experiment\n", + "\n", + "Define the parameters for the 3D printing optimization problem.\n", + "The infill density and layer height can take on any value within their respective bounds so we will configure both using `RangeParameterConfig`s.\n", + "On the other hand, infill type be either have one of four distinct values: \"honeycomb\", \"gyroid\", \"lines\", or \"rectilinear\".\n", + "We will use a `ChoiceParameterConfig` to represent it in the optimization." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739302215052, + "executionStopTime": 1739302216000, + "isAgentGenerated": false, + "language": "python", + "originalKey": "62ead57f-d835-4d67-a095-f64a818a97fe", + "outputsInitialized": true, + "requestMsgId": "62ead57f-d835-4d67-a095-f64a818a97fe", + "serverExecutionDuration": 2.0144580630586 + }, + "outputs": [], + "source": [ + "infill_density = RangeParameterConfig(name=\"infill_density\", parameter_type=ParameterType.FLOAT, bounds=(0, 100))\n", + "layer_height = RangeParameterConfig(name=\"layer_height\", parameter_type=ParameterType.FLOAT, bounds=(0.1, 0.4))\n", + "infill_type = ChoiceParameterConfig(name=\"infill_type\", parameter_type=ParameterType.STRING, values=[\"honeycomb\", \"gyroid\", \"lines\", \"rectilinear\"])\n", + "\n", + "experiment_config = ExperimentConfig(\n", + " name=\"3d_print_strength_experiment\",\n", + " parameters=[infill_density, layer_height, infill_type],\n", + " # The following arguments are optional\n", + " description=\"Maximize strength of 3D printed parts\",\n", + " owner=\"developer\",\n", + ")\n", + "\n", + "client.configure_experiment(experiment_config=experiment_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "d259ac8b-55c4-410f-bc8a-f690b877a7e2", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 4: Configure Optimization\n", + "We want to maximize the compressive strength of our part, so we will set the objective to `compressive_strength`.\n", + "However, we know that modifying the infill density, layer height, and infill type will affect the weight of the part as well.\n", + "We'll include a requirement that the part must not weigh more than 10 grams by setting an outcome constraint when we call `configure_experiment`.\n", + "\n", + "The following code will tell the `Client` that we intend to maximize compressive strength while keeping the weight less than 10 grams." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739302224108, + "executionStopTime": 1739302224462, + "isAgentGenerated": false, + "language": "python", + "originalKey": "76e7739a-148b-495f-a3a7-6e7fa9f5007d", + "outputsInitialized": true, + "requestMsgId": "76e7739a-148b-495f-a3a7-6e7fa9f5007d", + "serverExecutionDuration": 32.510571996681 + }, + "outputs": [], + "source": [ + "client.configure_optimization(objective=\"compressive_strength\", outcome_constraints=[\"weight <= 10\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "3882f4bd-c7c3-4fff-9754-a9c97b27c5a0", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 5: Run Trials\n", + "\n", + "Now the `Client` has been configured we can begin conducting the experiment.\n", + "Use `attach_trial` to attach any existing data, use `get_next_trials` to generate parameter suggestions, and use `complete_trial` to report manually observed results." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "ec740d5d-c42e-44d6-bc3b-1659df2aeb9c", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "### Attach Preexisting Trials\n", + "\n", + "Sometimes in our optimization experiments we may already have some previously collected data from manual \"trials\" conducted before the Ax experiment began.\n", + "This can be incredibly useful!\n", + "If we attach this data as custom trials, Ax will be able to use the data points in its optimization algorithm and improve performance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739302378450, + "executionStopTime": 1739302378753, + "isAgentGenerated": false, + "language": "python", + "originalKey": "a46ec55d-4848-4ea2-8adf-5cc0eabee74f", + "outputsInitialized": true, + "requestMsgId": "a46ec55d-4848-4ea2-8adf-5cc0eabee74f", + "serverExecutionDuration": 78.725646948442 + }, + "outputs": [], + "source": [ + "# Pairs of previously evaluated parameterizations and associated metric readings\n", + "preexisting_trials = [\n", + " (\n", + " {\"infill_density\": 10.43, \"layer_height\": 0.3, \"infill_type\": \"gyroid\"},\n", + " {\"compressive_strength\": 1.74, \"weight\": 0.52},\n", + " ),\n", + " (\n", + " {\"infill_density\": 55.54, \"layer_height\": 0.12, \"infill_type\": \"lines\"},\n", + " {\"compressive_strength\": 4.63, \"weight\": 2.31},\n", + " ),\n", + " (\n", + " {\"infill_density\": 99.43, \"layer_height\": 0.35, \"infill_type\": \"rectilinear\"},\n", + " {\"compressive_strength\": 5.68, \"weight\": 2.84},\n", + " ),\n", + " (\n", + " {\"infill_density\": 41.44, \"layer_height\": 0.21, \"infill_type\": \"rectilinear\"},\n", + " {\"compressive_strength\": 3.95, \"weight\": 1.97},\n", + " ),\n", + " (\n", + " {\"infill_density\": 27.23, \"layer_height\": 0.37, \"infill_type\": \"honeycomb\"},\n", + " {\"compressive_strength\": 7.36, \"weight\": 3.31},\n", + " ),\n", + " (\n", + " {\"infill_density\": 33.57, \"layer_height\": 0.24, \"infill_type\": \"honeycomb\"},\n", + " {\"compressive_strength\": 13.99, \"weight\": 6.29},\n", + " ),\n", + "]\n", + "\n", + "for parameters, data in preexisting_trials:\n", + " # Attach the parameterization to the Client as a trial and immediately complete it with the preexisting data\n", + " trial_index = client.attach_trial(parameters=parameters)\n", + " client.complete_trial(trial_index=trial_index, raw_data=data)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "b0d142bb-ec8f-40ea-91c7-4dcaff78e017", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "### Ask for trials\n", + "\n", + "Now, let's have Ax suggest which trials to evaluate so that we can find the optimal configuration more efficiently.\n", + "We'll do this by calling `get_next_trials`.\n", + "We'll make use of Ax's support for parallelism, i.e. suggesting more than one trial at a time -- this can allow us to conduct our experiment much faster!\n", + "If our lab had three identical 3D printers, we could ask Ax for a batch of three trials and evaluate three different infill density, layer height, and infill types at once.\n", + "\n", + "Note that there will always be a tradeoff between \"parallelism\" and optimization performance since the quality of a suggested trial is often proportional to the amount of data Ax has access to, see LINK for a more detailed explanation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739303219138, + "executionStopTime": 1739303228549, + "isAgentGenerated": false, + "language": "python", + "originalKey": "ca30046b-8991-48dd-9054-f77a69ca3818", + "outputsInitialized": true, + "requestMsgId": "ca30046b-8991-48dd-9054-f77a69ca3818", + "serverExecutionDuration": 9018.6875869986 + }, + "outputs": [], + "source": [ + "trials = client.get_next_trials(maximum_trials=3)\n", + "trials" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "befe8927-94f8-49ad-960c-bac135191cc7", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "### Tell Ax the results\n", + "\n", + "In a real-world scenerio we would print parts using the three suggested parameterizations and measure the compressive strength and weight manually, though in this tutorial we will simulate by calling a function.\n", + "Once the data is collected we will tell Ax the result by calling `complete_trial`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739303299312, + "executionStopTime": 1739303299558, + "isAgentGenerated": false, + "language": "python", + "originalKey": "c5608094-e4f6-444e-9feb-3f21b3ee0d5c", + "outputsInitialized": true, + "requestMsgId": "c5608094-e4f6-444e-9feb-3f21b3ee0d5c", + "serverExecutionDuration": 31.877135974355 + }, + "outputs": [], + "source": [ + "def evaluate(\n", + " infill_density: float, layer_height: float, infill_type: str\n", + ") -> dict[str, float]:\n", + " strength_map = {\"lines\": 1, \"rectilinear\": 2, \"gyroid\": 5, \"honeycomb\": 10}\n", + " weight_map = {\"lines\": 1, \"rectilinear\": 2, \"gyroid\": 3, \"honeycomb\": 9}\n", + "\n", + " return {\n", + " \"compressive_strength\": (\n", + " infill_density / layer_height * strength_map[infill_type]\n", + " )\n", + " / 100,\n", + " \"weight\": (infill_density / layer_height * weight_map[infill_type]) / 200,\n", + " }\n", + "\n", + "\n", + "for trial_index, parameters in trials.items():\n", + " client.complete_trial(trial_index=trial_index, raw_data=evaluate(**parameters))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "customInput": null, + "language": "markdown", + "originalKey": "4cdda4f1-a7aa-4ee9-af0a-c1b59d605d21", + "showInput": true + }, + "source": [ + "We'll repeat this process a number of times.\n", + "Typically experimentation will continue until a satisfactory combination has been found, experimentation resources (in this example our 3D printing filliment) have been exhausted, or we feel we have spent enough time on optimization." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "executionStartTime": 1739304312859, + "executionStopTime": 1739304423646, + "language": "python", + "originalKey": "326411ea-a32d-4adf-af57-90dcb2068210", + "outputsInitialized": true, + "requestMsgId": "326411ea-a32d-4adf-af57-90dcb2068210", + "serverExecutionDuration": 110571.35569898, + "showInput": true + }, + "outputs": [], + "source": [ + "# Ask Ax for the next trials\n", + "trials = client.get_next_trials(maximum_trials=3)\n", + "trials" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "customInput": null, + "executionStartTime": 1739304518872, + "executionStopTime": 1739304519200, + "language": "python", + "originalKey": "350e994b-04af-40ce-a06c-49b0ac50cfeb", + "outputsInitialized": true, + "requestMsgId": "350e994b-04af-40ce-a06c-49b0ac50cfeb", + "serverExecutionDuration": 33.687502960674, + "showInput": true + }, + "outputs": [], + "source": [ + "# Tell Ax the result of those trials\n", + "for trial_index, parameters in trials.items():\n", + " client.complete_trial(trial_index=trial_index, raw_data=evaluate(**parameters))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "customInput": null, + "language": "python", + "originalKey": "7ec66975-ce39-4b23-b34b-c28433915204", + "showInput": true + }, + "outputs": [], + "source": [ + "# Ask Ax for the next trials\n", + "trials = client.get_next_trials(maximum_trials=3)\n", + "trials" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "customInput": null, + "language": "python", + "originalKey": "18489525-1f14-4285-806e-f3218743975f", + "showInput": true + }, + "outputs": [], + "source": [ + "# Tell Ax the result of those trials\n", + "for trial_index, parameters in trials.items():\n", + " client.complete_trial(trial_index=trial_index, raw_data=evaluate(**parameters))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "b65f8045-23b4-49f1-ae7a-b7c3e936bfc9", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 6: Analyze Results\n", + "\n", + "At any time during the experiment you may analyze the results of the experiment.\n", + "Most commonly this means extracting the parameterization from the best performing trial you conducted.\n", + "The best trial will have the optimal objective value **without violating any outcome constraints**." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "isAgentGenerated": false, + "language": "python", + "originalKey": "06b6978f-53f6-45fa-8383-b9c19ec33a82", + "outputsInitialized": false + }, + "outputs": [], + "source": [ + "best_parameters, prediction, index, name = client.get_best_parameterization()\n", + "print(\"Best Parameters:\", best_parameters)\n", + "print(\"Prediction (mean, variance):\", prediction)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "8c64d2d0-394c-49db-8594-0b50b45524ff", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Step 7: Compute Analyses\n", + "\n", + "Ax can also produce a number of analyses to help interpret the results of the experiment via `client.compute_analyses`.\n", + "Users can manually select which analyses to run, or can allow Ax to select which would be most relevant.\n", + "In this case Ax selects the following:\n", + "* **Parrellel Coordinates Plot** shows which parameterizations were evaluated and what metric values were observed -- this is useful for getting a high level overview of how thoroughly the search space was explored and which regions tend to produce which outcomes\n", + "* **Scatter Plot** shows both metric values for each trial -- this is useful for understanding the tradeoffs between competing metrics, like compressive strength and weight.\n", + "* **Interaction Analysis Plot** shows which parameters have the largest affect on the function and plots the most important parameters as 1 or 2 dimensional surfaces\n", + "* **Summary** lists all trials generated along with their parameterizations, observations, and miscellaneous metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "executionStartTime": 1739304525265, + "executionStopTime": 1739304526128, + "isAgentGenerated": false, + "language": "python", + "originalKey": "c5572f5c-7efe-4945-88b2-73229813ee7c", + "outputsInitialized": true, + "requestMsgId": "c5572f5c-7efe-4945-88b2-73229813ee7c", + "serverExecutionDuration": 554.08962001093 + }, + "outputs": [], + "source": [ + "client.compute_analyses()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "isAgentGenerated": false, + "language": "markdown", + "originalKey": "a255016e-650c-4e96-a931-136ac4f79fef", + "outputsInitialized": false, + "showInput": true + }, + "source": [ + "## Conclusion\n", + "\n", + "This tutorial demonstrates how to use Ax's `Client` for optimizing the strength of 3D printed parts in a human-in-the-loop setting. By iteratively collecting data and refining parameters, you can effectively apply black box optimization to real-world experiments." + ] } - }, - "source": [ - "# Using Ax for Human-in-the-loop Experimentation¶" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "While Ax can be used in as a fully automated service, generating and deploying candidates Ax can be also used in a trial-by-trial fashion, allowing for human oversight. \n", - "\n", - "Typically, human intervention in Ax is necessary when there are clear tradeoffs between multiple metrics of interest. Condensing multiple outcomes of interest into a single scalar quantity can be really challenging. Instead, it can be useful to specify an objective and constraints, and tweak these based on the information from the experiment. \n", - "\n", - "To facilitate this, Ax provides the following key features:\n", - "\n", - "1. Constrained optimization\n", - "2. Interfaces for easily modifying optimization goals\n", - "3. Utilities for visualizing and deploying new trials composed of multiple optimizations. \n", - "\n", - "\n", - "In this tutorial, we'll demonstrate how Ax enables users to explore these tradeoffs. With an understanding of the tradeoffs present in our data, we'll then make use of the constrained optimization utilities to generate candidates from multiple different optimization objectives, and create a conglomerate batch, with all of these candidates in together in one trial. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Experiment Setup\n", - "\n", - "For this tutorial, we will assume our experiment has already been created." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "from ax import (\n", - " Data,\n", - " Metric,\n", - " OptimizationConfig,\n", - " Objective,\n", - " OutcomeConstraint,\n", - " ComparisonOp,\n", - " json_load,\n", - ")\n", - "from ax.modelbridge.cross_validation import cross_validate\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.plot.diagnostic import tile_cross_validation\n", - "from ax.plot.scatter import plot_multiple_metrics, tile_fitted\n", - "from ax.utils.notebook.plotting import render, init_notebook_plotting\n", - "\n", - "import pandas as pd\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NOTE: The path below assumes the tutorial is being run either from the root directory of the Ax package or from the `human_in_the_loop` directory that this tutorial lives in. This is needed since the jupyter notebooks may change active directory during runtime, making it tricky to find the file in a consistent way." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "curr_dir = os.getcwd()\n", - "if \"human_in_the_loop\" not in curr_dir:\n", - " curr_dir = os.path.join(curr_dir, \"tutorials\", \"human_in_the_loop\")\n", - "experiment = json_load.load_experiment(os.path.join(curr_dir, \"hitl_exp.json\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Initial Sobol Trial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Bayesian Optimization experiments almost always begin with a set of random points. In this experiment, these points were chosen via a Sobol sequence, accessible via the `Adapter` factory.\n", - "\n", - "A collection of points run and analyzed together form a `BatchTrial`. A `Trial` object provides metadata pertaining to the deployment of these points, including details such as when they were deployed, and the current status of their experiment. \n", - "\n", - "Here, we see an initial experiment has finished running (COMPLETED status)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.trials[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.trials[0].time_created" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Number of arms in first experiment, including status_quo\n", - "len(experiment.trials[0].arms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Sample arm configuration\n", - "experiment.trials[0].arms[0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Experiment Analysis\n", - "\n", - "**Optimization Config**\n", - "\n", - "An important construct for analyzing an experiment is an OptimizationConfig. An OptimizationConfig contains an objective, and outcome constraints. Experiment's can have a default OptimizationConfig, but models can also take an OptimizationConfig as input independent of the default.\n", - "\n", - "**Objective:** A metric to optimize, along with a direction to optimize (default: maximize)\n", - "\n", - "**Outcome Constraint:** A metric to constrain, along with a constraint direction (<= or >=), as well as a bound. \n", - "\n", - "Let's start with a simple OptimizationConfig. By default, our objective metric will be maximized, but can be minimized by setting the `minimize` flag. Our outcome constraint will, by default, be evaluated as a relative percentage change. This percentage change is computed relative to the experiment's status quo arm. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.status_quo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "objective_metric = Metric(name=\"metric_1\")\n", - "constraint_metric = Metric(name=\"metric_2\")\n", - "\n", - "experiment.optimization_config = OptimizationConfig(\n", - " objective=Objective(objective_metric, minimize=False),\n", - " outcome_constraints=[\n", - " OutcomeConstraint(metric=constraint_metric, op=ComparisonOp.LEQ, bound=5),\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Data**\n", - "\n", - "Another critical piece of analysis is data itself! Ax data follows a standard format, shown below. This format is imposed upon the underlying data structure, which is a Pandas DataFrame. \n", - "\n", - "A key set of fields are required for all data, for use with Ax models. \n", - "\n", - "It's a good idea to double check our data before fitting models -- let's make sure all of our expected metrics and arms are present." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = Data(pd.read_json(os.path.join(curr_dir, \"hitl_data.json\")))\n", - "data.df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data.df[\"arm_name\"].unique()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data.df[\"metric_name\"].unique()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Search Space** \n", - "\n", - "The final component necessary for human-in-the-loop optimization is a SearchSpace. A SearchSpace defines the feasible region for our parameters, as well as their types.\n", - "\n", - "Here, we have both parameters and a set of constraints on those parameters. \n", - "\n", - "Without a SearchSpace, our models are unable to generate new candidates. By default, the models will read the search space off of the experiment, when they are told to generate candidates. SearchSpaces can also be specified by the user at this time. Sometimes, the first round of an experiment is too restrictive--perhaps the experimenter was too cautious when defining their initial ranges for exploration! In this case, it can be useful to generate candidates from new, expanded search spaces, beyond that specified in the experiment. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.search_space.parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.search_space.parameter_constraints" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Model Fit\n", - "\n", - "Fitting a Modular BoTorch Model will allow us to predict new candidates based on our first Sobol batch. \n", - "Here, we make use of the default settings for `BOTORCH_MODULAR` defined in the Adapter registry (uses BoTorch's `SingleTaskGP` and `qLogNoisyExpectedImprovement` by default for single objective optimization)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gp = Generators.BOTORCH_MODULAR(\n", - " search_space=experiment.search_space,\n", - " experiment=experiment,\n", - " data=data,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can validate the model fits using cross validation, shown below for each metric of interest. Here, our model fits leave something to be desired--the tail ends of each metric are hard to model. In this situation, there are three potential actions to take: \n", - "\n", - "1. Increase the amount of traffic in this experiment, to reduce the measurement noise.\n", - "2. Increase the number of points run in the random batch, to assist the GP in covering the space.\n", - "3. Reduce the number of parameters tuned at one time. \n", - "\n", - "However, away from the tail effects, the fits do show a strong correlations, so we will proceed with candidate generation. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cv_result = cross_validate(gp)\n", - "render(tile_cross_validation(cv_result))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The parameters from the initial batch have a wide range of effects on the metrics of interest, as shown from the outcomes from our fitted GP model. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(tile_fitted(gp, rel=True))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "METRIC_X_AXIS = \"metric_1\"\n", - "METRIC_Y_AXIS = \"metric_2\"\n", - "\n", - "render(\n", - " plot_multiple_metrics(\n", - " gp,\n", - " metric_x=METRIC_X_AXIS,\n", - " metric_y=METRIC_Y_AXIS,\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Candidate Generation\n", - "\n", - "With our fitted GPEI model, we can optimize EI (Expected Improvement) based on any optimization config.\n", - "We can start with our initial optimization config, and aim to simply maximize the playback smoothness, without worrying about the constraint on quality. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "unconstrained = gp.gen(\n", - " n=3,\n", - " optimization_config=OptimizationConfig(\n", - " objective=Objective(objective_metric, minimize=False),\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's plot the tradeoffs again, but with our new arms. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(\n", - " plot_multiple_metrics(\n", - " gp,\n", - " metric_x=METRIC_X_AXIS,\n", - " metric_y=METRIC_Y_AXIS,\n", - " generator_runs_dict={\n", - " \"unconstrained\": unconstrained,\n", - " },\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Change Objectives" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With our unconstrained optimization, we generate some candidates which are pretty promising with respect to our objective! However, there is a clear regression in our constraint metric, above our initial 5% desired constraint. Let's add that constraint back in. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "constraint_5 = OutcomeConstraint(metric=constraint_metric, op=ComparisonOp.LEQ, bound=5)\n", - "constraint_5_results = gp.gen(\n", - " n=3,\n", - " optimization_config=OptimizationConfig(\n", - " objective=Objective(objective_metric, minimize=False), outcome_constraints=[constraint_5]\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This yields a *GeneratorRun*, which contains points according to our specified optimization config, along with metadata about how the points were generated. Let's plot the tradeoffs in these new points. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ax.plot.scatter import plot_multiple_metrics\n", - "\n", - "render(\n", - " plot_multiple_metrics(\n", - " gp,\n", - " metric_x=METRIC_X_AXIS,\n", - " metric_y=METRIC_Y_AXIS,\n", - " generator_runs_dict={\"constraint_5\": constraint_5_results},\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is important to note that the treatment of constraints in GP EI is probabilistic. The acquisition function weights our objective by the probability that each constraint is feasible. Thus, we may allow points with a very small probability of violating the constraint to be generated, as long as the chance of the points increasing our objective is high enough. \n", - "\n", - "You can see above that the point estimate for each point is significantly below a 5% increase in the constraint metric, but that there is uncertainty in our prediction, and the tail probabilities do include probabilities of small regressions beyond 5%. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "constraint_1 = OutcomeConstraint(metric=constraint_metric, op=ComparisonOp.LEQ, bound=1)\n", - "constraint_1_results = gp.gen(\n", - " n=3,\n", - " optimization_config=OptimizationConfig(\n", - " objective=Objective(objective_metric, minimize=False),\n", - " outcome_constraints=[constraint_1],\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "render(\n", - " plot_multiple_metrics(\n", - " gp,\n", - " metric_x=METRIC_X_AXIS,\n", - " metric_y=METRIC_Y_AXIS,\n", - " generator_runs_dict={\n", - " \"constraint_1\": constraint_1_results,\n", - " },\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, let's view all three sets of candidates together. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "render(\n", - " plot_multiple_metrics(\n", - " gp,\n", - " metric_x=METRIC_X_AXIS,\n", - " metric_y=METRIC_Y_AXIS,\n", - " generator_runs_dict={\n", - " \"unconstrained\": unconstrained,\n", - " \"loose_constraint\": constraint_5_results,\n", - " \"tight_constraint\": constraint_1_results,\n", - " },\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating a New Trial\n", - "\n", - "Having done the analysis and candidate generation for three different optimization configs, we can easily create a new `BatchTrial` which combines the candidates from these three different optimizations. Each set of candidates looks promising -- the point estimates are higher along both metric values than in the previous batch. However, there is still a good bit of uncertainty in our predictions. It is hard to choose between the different constraint settings without reducing this noise, so we choose to run a new trial with all three constraint settings. However, we're generally convinced that the tight constraint is too conservative. We'd still like to reduce our uncertainty in that region, but we'll only take one arm from that set." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# We can add entire generator runs, when constructing a new trial.\n", - "trial = (\n", - " experiment.new_batch_trial()\n", - " .add_generator_run(unconstrained)\n", - " .add_generator_run(constraint_5_results)\n", - ")\n", - "\n", - "# Or, we can hand-pick arms.\n", - "trial.add_arm(constraint_1_results.arms[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The arms are combined into a single trial, along with the `status_quo` arm. Their generator can be accessed from the trial as well. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.trials[1].arms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The original `GeneratorRuns` can be accessed from within the trial as well. This is useful for later analyses, allowing introspection of the `OptimizationConfig` used for generation (as well as other information, e.g. `SearchSpace` used for generation)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.trials[1]._generator_run_structs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, we can see the unconstrained set-up used for our first set of candidates. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "experiment.trials[1]._generator_run_structs[0].generator_run.optimization_config" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + ], + "metadata": { + "fileHeader": "", + "fileUid": "2ee3b48f-213b-4325-a33c-488fe0f4f900", + "isAdHoc": false, + "kernelspec": { + "display_name": "python3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + }, + "operator_data": [] + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/tutorials/modular_botax/modular_botax.ipynb b/tutorials/modular_botax/modular_botax.ipynb deleted file mode 100644 index a9014bc8898..00000000000 --- a/tutorials/modular_botax/modular_botax.ipynb +++ /dev/null @@ -1,1471 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "dc0b0d48", - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eda150e5", - "metadata": { - "collapsed": false, - "customOutput": null, - "executionStartTime": 1730916291451, - "executionStopTime": 1730916298337, - "id": "about-preview", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "cca773d8-5e94-4b5a-ae54-22295be8936a" - }, - "originalKey": "f4e8ae18-2aa3-4943-a15a-29851889445c", - "outputsInitialized": true, - "requestMsgId": "f4e8ae18-2aa3-4943-a15a-29851889445c", - "serverExecutionDuration": 4531.2523420434 - }, - "outputs": [], - "source": [ - "from typing import Any, Dict, Optional, Tuple, Type\n", - "\n", - "from ax.modelbridge.registry import Generators\n", - "\n", - "# Ax data tranformation layer\n", - "from ax.models.torch.botorch_modular.acquisition import Acquisition\n", - "\n", - "# Ax wrappers for BoTorch components\n", - "from ax.models.torch.botorch_modular.model import BoTorchGenerator\n", - "from ax.models.torch.botorch_modular.surrogate import Surrogate, SurrogateSpec\n", - "from ax.models.torch.botorch_modular.utils import ModelConfig\n", - "\n", - "# Experiment examination utilities\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "\n", - "# Test Ax objects\n", - "from ax.utils.testing.core_stubs import (\n", - " get_branin_data,\n", - " get_branin_data_multi_objective,\n", - " get_branin_experiment,\n", - " get_branin_experiment_with_multi_objective,\n", - ")\n", - "from botorch.acquisition.logei import (\n", - " qLogExpectedImprovement,\n", - " qLogNoisyExpectedImprovement,\n", - ")\n", - "from botorch.models.gp_regression import SingleTaskGP\n", - "\n", - "# BoTorch components\n", - "from botorch.models.model import Model\n", - "from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood" - ] - }, - { - "cell_type": "markdown", - "id": "d6f55f44", - "metadata": { - "id": "northern-affairs", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "58ea5ebf-ff3a-40b4-8be3-1b85c99d1c4a" - }, - "originalKey": "c9a665ca-497e-4d7c-bbb5-1b9f8d1d311c", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "# Setup and Usage of BoTorch Models in Ax\n", - "\n", - "Ax provides a set of flexible wrapper abstractions to mix-and-match BoTorch components like `Model` and `AcquisitionFunction` and combine them into a single `Generator` object in Ax. The wrapper abstractions: `Surrogate`, `Acquisition`, and `BoTorchGenerator` – are located in `ax/models/torch/botorch_modular` directory and aim to encapsulate boilerplate code that interfaces between Ax and BoTorch. This functionality is in beta-release and still evolving.\n", - "\n", - "This tutorial walks through setting up a custom combination of BoTorch components in Ax in following steps:\n", - "\n", - "1. **Quick-start example of `BoTorchGenerator` use**\n", - "1. **`BoTorchGenerator` = `Surrogate` + `Acquisition` (overview)**\n", - " 1. Example with minimal options that uses the defaults\n", - " 2. Example showing all possible options\n", - " 3. Surrogate and Acquisition Q&A\n", - "2. **I know which Botorch Model and AcquisitionFunction I'd like to combine in Ax. How do set this up?**\n", - " 1. Making a `Surrogate` from BoTorch `Model`\n", - " 2. Using an arbitrary BoTorch `AcquisitionFunction` in Ax\n", - "3. **Using `Generators.BOTORCH_MODULAR`** (convenience wrapper that enables storage and resumability)\n", - "4. **Utilizing `BoTorchGenerator` in generation strategies** (abstraction that allows to chain models together and use them in Ax Service API etc.)\n", - " 1. Specifying `pending_observations` to avoid the model re-suggesting points that are part of `RUNNING` or `ABANDONED` trials.\n", - "5. **Customizing a `Surrogate` or `Acquisition`** (for cases where existing subcomponent classes are not sufficient)" - ] - }, - { - "cell_type": "markdown", - "id": "835d6cf9", - "metadata": { - "id": "pending-support", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "c06d1b5c-067d-4618-977e-c8269a98bd0a" - }, - "originalKey": "4706d02e-6b3f-4161-9e08-f5a31328b1d1", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 1. Quick-start example\n", - "\n", - "Here we set up a `BoTorchGenerator` with `SingleTaskGP` with `qLogNoisyExpectedImprovement`, one of the most popular combinations in Ax:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6a2d738c", - "metadata": { - "collapsed": false, - "customOutput": null, - "executionStartTime": 1730916294801, - "executionStopTime": 1730916298389, - "id": "parental-sending", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "72934cf2-4ecf-483a-93bd-4df88b19a7b8" - }, - "originalKey": "20f25ded-5aae-47ee-955e-a2d5a2a1fe09", - "outputsInitialized": true, - "requestMsgId": "20f25ded-5aae-47ee-955e-a2d5a2a1fe09", - "serverExecutionDuration": 22.605526028201 - }, - "outputs": [], - "source": [ - "experiment = get_branin_experiment(with_trial=True)\n", - "data = get_branin_data(trials=[experiment.trials[0]])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b60e1c29", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916295849, - "executionStopTime": 1730916299900, - "id": "rough-somerset", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "e571212c-7872-4ebc-b646-8dad8d4266fd" - }, - "originalKey": "c0806cce-a1d3-41b8-96fc-678aa3c9dd92", - "outputsInitialized": true, - "requestMsgId": "c0806cce-a1d3-41b8-96fc-678aa3c9dd92", - "serverExecutionDuration": 852.73489891551 - }, - "outputs": [], - "source": [ - "# `Generators` automatically selects a model + model bridge combination.\n", - "# For `BOTORCH_MODULAR`, it will select `BoTorchModel` and `TorchModelBridge`.\n", - "adapter_with_GPEI = Generators.BOTORCH_MODULAR(\n", - " experiment=experiment,\n", - " data=data,\n", - " surrogate_spec=SurrogateSpec(\n", - " model_configs=[ModelConfig(botorch_model_class=SingleTaskGP)]\n", - " ), # Optional, will use default if unspecified\n", - " botorch_acqf_class=qLogNoisyExpectedImprovement, # Optional, will use default if unspecified\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "154ef580", - "metadata": { - "id": "hairy-wiring", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "fba91372-7aa6-456d-a22b-78ab30c26cd8" - }, - "originalKey": "46f5c2c7-400d-4d8d-b0b9-a241657b173f", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "Now we can use this model to generate candidates (`gen`), predict outcome at a point (`predict`), or evaluate acquisition function value at a given point (`evaluate_acquisition_function`)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "72dee941", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916299852, - "executionStopTime": 1730916300305, - "id": "consecutive-summary", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "59582fc6-8089-4320-864e-d98ee271d4f7" - }, - "originalKey": "f64e9d2e-bfd4-47da-8292-dbe7e70cbe1f", - "outputsInitialized": true, - "requestMsgId": "f64e9d2e-bfd4-47da-8292-dbe7e70cbe1f", - "serverExecutionDuration": 233.20194100961 - }, - "outputs": [], - "source": [ - "generator_run = adapter_with_GPEI.gen(n=1)\n", - "generator_run.arms[0]" - ] - }, - { - "cell_type": "markdown", - "id": "b0096e71", - "metadata": { - "id": "diverse-richards", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "8cfe0fa9-8cce-4718-ba43-e8a63744d626" - }, - "originalKey": "804bac30-db07-4444-98a2-7a5f05007495", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "-----\n", - "Before you read the rest of this tutorial:\n", - "\n", - "- We use ['Generator'](https://ax.dev/docs/glossary.html#model) to refer to an optimization setup capable of producing candidate points for optimization (and often capable of being fit to data, with exception for quasi-random generators). See [Generators documentation page](https://ax.dev/docs/models.html) for more information.\n", - "- Learn about `Adapter` in Ax, as users should rarely be interacting with a `Generator` object directly (more about Adapter, a data transformation layer in Ax, [here](https://ax.dev/docs/models.html#deeper-dive-organization-of-the-modeling-stack))." - ] - }, - { - "cell_type": "markdown", - "id": "e3fc3685", - "metadata": { - "id": "grand-committee", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "7037fd14-bcfe-44f9-b915-c23915d2bda9" - }, - "originalKey": "31b54ce5-2590-4617-b10c-d24ed3cce51d", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 2. BoTorchGenerator = Surrogate + Acquisition\n", - "\n", - "A `BoTorchGenerator` in Ax consists of two main subcomponents: a surrogate model and an acquisition function. A surrogate model is represented as an instance of Ax’s `Surrogate` class, which is a wrapper around BoTorch's `Model` class. The Surrogate is defined by a `SurrogateSpec`. The acquisition function is represented as an instance of Ax’s `Acquisition` class, a wrapper around BoTorch's `AcquisitionFunction` class." - ] - }, - { - "cell_type": "markdown", - "id": "2a3f2ed1", - "metadata": { - "id": "thousand-blanket", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "08b12c6c-14da-4342-95bd-f607a131ce9d" - }, - "originalKey": "4a4e006e-07fa-4d63-8b9a-31b67075e40e", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "### 2A. Example that uses defaults and requires no options\n", - "\n", - "`BoTorchGenerator` does not always require surrogate and acquisition specification. If instantiated without one or both components specified, defaults are selected based on properties of experiment and data (see Appendix 2 for auto-selection logic)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "65469897", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916302730, - "executionStopTime": 1730916304031, - "id": "changing-xerox", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "b1bca702-07b2-4818-b2b9-2107268c383c" - }, - "originalKey": "fa86552a-0b80-4040-a0c4-61a0de37bdc1", - "outputsInitialized": true, - "requestMsgId": "fa86552a-0b80-4040-a0c4-61a0de37bdc1", - "serverExecutionDuration": 1.7747740494087 - }, - "outputs": [], - "source": [ - "# The surrogate is not specified, so it will be auto-selected\n", - "# during `model.fit`.\n", - "GPEI_model = BoTorchGenerator(botorch_acqf_class=qLogExpectedImprovement)\n", - "\n", - "# The acquisition class is not specified, so it will be\n", - "# auto-selected during `model.gen` or `model.evaluate_acquisition`\n", - "GPEI_model = BoTorchGenerator(\n", - " surrogate_spec=SurrogateSpec(\n", - " model_configs=[ModelConfig(botorch_model_class=SingleTaskGP)]\n", - " )\n", - ")\n", - "\n", - "# Both the surrogate and acquisition class will be auto-selected.\n", - "GPEI_model = BoTorchGenerator()" - ] - }, - { - "cell_type": "markdown", - "id": "5b63129f", - "metadata": { - "id": "lovely-mechanics", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "5cec0f06-ae2c-47d3-bd95-441c45762e38" - }, - "originalKey": "7b9fae38-fe5d-4e5b-8b5f-2953c1ef09d2", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "### 2B. Example with all the options\n", - "Below are the full set of configurable settings of a `BoTorchGenerator` with their descriptions:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "06f04d49", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916305930, - "executionStopTime": 1730916306168, - "id": "twenty-greek", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "25b13c48-edb0-4b3f-ba34-4f4a4176162a" - }, - "originalKey": "8d824e37-b087-4bab-9b16-4354e9509df7", - "outputsInitialized": true, - "requestMsgId": "8d824e37-b087-4bab-9b16-4354e9509df7", - "serverExecutionDuration": 2.6916969800368 - }, - "outputs": [], - "source": [ - "model = BoTorchGenerator(\n", - " # Optional `Surrogate` specification to use instead of default\n", - " surrogate_spec=SurrogateSpec(\n", - " model_configs=[\n", - " ModelConfig(\n", - " # BoTorch `Model` type\n", - " botorch_model_class=SingleTaskGP,\n", - " # Optional, MLL class with which to optimize model parameters\n", - " mll_class=ExactMarginalLogLikelihood,\n", - " # Optional, dictionary of keyword arguments to underlying\n", - " # BoTorch `Model` constructor\n", - " model_options={},\n", - " )\n", - " ]\n", - " ),\n", - " # Optional BoTorch `AcquisitionFunction` to use instead of default\n", - " botorch_acqf_class=qLogExpectedImprovement,\n", - " # Optional dict of keyword arguments, passed to the input\n", - " # constructor for the given BoTorch `AcquisitionFunction`\n", - " acquisition_options={},\n", - " # Optional Ax `Acquisition` subclass (if the given BoTorch\n", - " # `AcquisitionFunction` requires one, which is rare)\n", - " acquisition_class=None,\n", - " # Less common model settings shown with default values, refer\n", - " # to `BoTorchModel` documentation for detail\n", - " refit_on_cv=False,\n", - " warm_start_refit=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "91771a7f", - "metadata": { - "id": "fourth-material", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "db0feafe-8af9-40a3-9f67-72c7d1fd808e" - }, - "originalKey": "7140bb19-09b4-4abe-951d-53902ae07833", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 2C. `Surrogate` and `Acquisition` Q&A\n", - "\n", - "**Why is the `surrogate` argument expected to be an instance, but `botorch_acqf_class` –– a class?** Because a BoTorch `AcquisitionFunction` object (and therefore its Ax wrapper, `Acquisition`) is ephemeral: it is constructed, immediately used, and destroyed during `BoTorchGenerator.gen`, so there is no reason to keep around an `Acquisition` instance. A `Surrogate`, on another hand, is kept in memory as long as its parent `BoTorchGenerator` is.\n", - "\n", - "**How to know when to use specify acquisition_class (and thereby a non-default Acquisition type) instead of just passing in botorch_acqf_class?** In short, custom `Acquisition` subclasses are needed when a given `AcquisitionFunction` in BoTorch needs some non-standard subcomponents or inputs (e.g. a custom BoTorch `MCAcquisitionObjective`). \n", - "\n", - "**Please post any other questions you have to our dedicated issue on Github: https://github.com/facebook/Ax/issues/363.** This functionality is in beta-release and your feedback will be of great help to us!" - ] - }, - { - "cell_type": "markdown", - "id": "f801bfce", - "metadata": { - "id": "violent-course", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "86018ee5-f7b8-41ae-8e2d-460fe5f0c15b" - }, - "originalKey": "71f92895-874d-4fc7-ae87-a5519b18d1a0", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 3. I know which Botorch `Model` and `AcquisitionFunction` I'd like to combine in Ax. How do set this up?" - ] - }, - { - "cell_type": "markdown", - "id": "1a08a274", - "metadata": { - "id": "unlike-football", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "b29a846d-d7bc-4143-8318-10170c9b4298", - "showInput": false - }, - "originalKey": "4af8afa2-5056-46be-b7b9-428127e668cc", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "### 3a. Making a `Surrogate` from BoTorch `Model`:\n", - "Most models should work with base `Surrogate` in Ax, except for BoTorch `ModelListGP`. `ModelListGP` is a special case because its purpose is to combine multiple sub-models into a single `Model` in BoTorch. It is most commonly used for multi-objective and constrained optimization. Whether or not `ModelListGP` is used is determined automatically based on the `Model` class and the data being used via the `ax.models.torch.botorch_modular.utils.use_model_list` function.\n", - "\n", - "If your `Model` is not a `ModelListGP`, the steps to set it up as a `Surrogate` are:\n", - "1. Implement a [`construct_inputs` class method](https://github.com/pytorch/botorch/blob/main/botorch/models/model.py#L143). The purpose of this method is to produce arguments to a particular model from a standardized set of inputs passed to BoTorch `Model`-s from [`Surrogate.construct`](https://github.com/facebook/Ax/blob/main/ax/models/torch/botorch_modular/surrogate.py#L148) in Ax. It should accept training data in form of a `SupervisedDataset` container and optionally other keyword arguments and produce a dictionary of arguments to `__init__` of the `Model`. See [`SingleTaskMultiFidelityGP.construct_inputs`](https://github.com/pytorch/botorch/blob/5b3172f3daa22f6ea2f6f4d1d0a378a9518dcd8d/botorch/models/gp_regression_fidelity.py#L131) for an example.\n", - "2. Pass any additional needed keyword arguments for the `Model` constructor (that cannot be constructed from the training data and other arguments to `construct_inputs`) via the `model_options` argument to `ModelConfig` in `SurrogateSpec`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0eaa0481", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916308518, - "executionStopTime": 1730916308769, - "id": "dynamic-university", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "6c2ea955-c7a4-42ff-a4d7-f787113d4d53" - }, - "originalKey": "746fc2a3-0e0e-4ab4-84d9-32434eb1fc34", - "outputsInitialized": true, - "requestMsgId": "746fc2a3-0e0e-4ab4-84d9-32434eb1fc34", - "serverExecutionDuration": 2.4644429795444 - }, - "outputs": [], - "source": [ - "from botorch.models.model import Model\n", - "from botorch.utils.datasets import SupervisedDataset\n", - "\n", - "\n", - "class MyModelClass(Model):\n", - "\n", - " ... # Implementation of `MyModelClass`\n", - "\n", - " @classmethod\n", - " def construct_inputs(\n", - " cls, training_data: SupervisedDataset, **kwargs\n", - " ) -> Dict[str, Any]:\n", - " fidelity_features = kwargs.get(\"fidelity_features\")\n", - " if fidelity_features is None:\n", - " raise ValueError(f\"Fidelity features required for {cls.__name__}.\")\n", - "\n", - " return {\n", - " **super().construct_inputs(training_data=training_data, **kwargs),\n", - " \"fidelity_features\": fidelity_features,\n", - " }\n", - "\n", - "\n", - "surrogate_spec = SurrogateSpec(\n", - " model_configs=[\n", - " ModelConfig(\n", - " botorch_model_class=MyModelClass, # Must implement `construct_inputs`\n", - " # Optional dict of additional keyword arguments to `MyModelClass`\n", - " model_options={},\n", - " )\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "bd78ae03", - "metadata": { - "id": "otherwise-context", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "b9072296-956d-4add-b1f6-e7e0415ba65c" - }, - "originalKey": "5a27fd2c-4c4c-41fe-a634-f6d0ec4f1666", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "NOTE: if you run into a case where base `Surrogate` does not work with your BoTorch `Model`, please let us know in this Github issue: https://github.com/facebook/Ax/issues/363, so we can find the right solution and augment this tutorial." - ] - }, - { - "cell_type": "markdown", - "id": "415c682c", - "metadata": { - "id": "northern-invite", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "335cabdf-2bf6-48e8-ba0c-1404a8ef47f9" - }, - "originalKey": "df06d02b-95cb-4d34-aac6-773231f1a129", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "### 3B. Using an arbitrary BoTorch `AcquisitionFunction` in Ax" - ] - }, - { - "cell_type": "markdown", - "id": "3d04c34c", - "metadata": { - "id": "surrounded-denial", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "e3f0c788-2131-4116-9518-4ae7daeb991f", - "showInput": false - }, - "originalKey": "d4861847-b757-4fcd-9f35-ba258080812c", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "Steps to set up any `AcquisitionFunction` in Ax are:\n", - "1. Define an input constructor function. The purpose of this method is to produce arguments to a acquisition function from a standardized set of inputs passed to BoTorch `AcquisitionFunction`-s from `Acquisition.__init__` in Ax. For example, see [`construct_inputs_qEHVI`](https://github.com/pytorch/botorch/blob/main/botorch/acquisition/input_constructors.py#L477), which creates a fairly complex set of arguments needed by `qExpectedHypervolumeImprovement` –– a popular multi-objective optimization acquisition function offered in Ax and BoTorch. For more examples, see this collection in BoTorch: [botorch/acquisition/input_constructors.py](https://github.com/pytorch/botorch/blob/main/botorch/acquisition/input_constructors.py) \n", - " 1. Note that the new input constructor needs to be decorated with `@acqf_input_constructor(AcquisitionFunctionClass)` to register it.\n", - "3. Specify the BoTorch `AcquisitionFunction` class as `botorch_acqf_class` to `BoTorchGenerator`\n", - "4. (Optional) Pass any additional keyword arguments to acquisition function constructor or to the optimizer function via `acquisition_options` argument to `BoTorchGenerator`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "602ec648", - "metadata": { - "collapsed": false, - "customOutput": null, - "executionStartTime": 1730916310518, - "executionStopTime": 1730916310772, - "id": "interested-search", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "6967ce3e-929b-4d9a-8cd1-72bf94f0be3a" - }, - "originalKey": "f188f40b-64ba-4b0c-b216-f3dea8c7465e", - "outputsInitialized": true, - "requestMsgId": "f188f40b-64ba-4b0c-b216-f3dea8c7465e", - "serverExecutionDuration": 4.9752569757402 - }, - "outputs": [], - "source": [ - "from ax.models.torch.botorch_modular.optimizer_argparse import optimizer_argparse\n", - "from botorch.acquisition.acquisition import AcquisitionFunction\n", - "from botorch.acquisition.input_constructors import acqf_input_constructor, MaybeDict\n", - "from botorch.utils.datasets import SupervisedDataset\n", - "from torch import Tensor\n", - "\n", - "\n", - "class MyAcquisitionFunctionClass(AcquisitionFunction):\n", - " ... # Actual contents of the acquisition function class.\n", - "\n", - "\n", - "# 1. Add input constructor\n", - "@acqf_input_constructor(MyAcquisitionFunctionClass)\n", - "def construct_inputs_my_acqf(\n", - " model: Model,\n", - " training_data: MaybeDict[SupervisedDataset],\n", - " objective_thresholds: Tensor,\n", - " **kwargs: Any,\n", - ") -> Dict[str, Any]:\n", - " pass\n", - "\n", - "\n", - "\n", - "# 2-3. Specifying `botorch_acqf_class` and `acquisition_options`\n", - "BoTorchGenerator(\n", - " botorch_acqf_class=MyAcquisitionFunctionClass,\n", - " acquisition_options={\n", - " \"alpha\": 10**-6,\n", - " # The sub-dict by the key \"optimizer_options\" can be passed\n", - " # to propagate options to `optimize_acqf`, used in\n", - " # `Acquisition.optimize`, to add/override the default\n", - " # optimizer options registered above.\n", - " \"optimizer_options\": {\"sequential\": False},\n", - " },\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "508948ac", - "metadata": { - "id": "metallic-imaging", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "29256ab1-f214-4604-a423-4c7b4b36baa0" - }, - "originalKey": "b057722d-b8ca-47dd-b2c8-1ff4a71c4863", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "See section 2A for combining the resulting `Surrogate` instance and `Acquisition` type into a `BoTorchGenerator`. You can also leverage `Generators.BOTORCH_MODULAR` for ease of use; more on it in section 4 below or in section 1 quick-start example." - ] - }, - { - "cell_type": "markdown", - "id": "8f840899", - "metadata": { - "id": "descending-australian", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "1d15082f-1df7-4cdb-958b-300483eb7808" - }, - "originalKey": "a7406f13-1468-487d-ac5e-7d2a45394850", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 4. Using `Generators.BOTORCH_MODULAR` \n", - "\n", - "To simplify the instantiation of an Ax `Adapter` and its undelying `Generator`, Ax provides a [`Generator` registry enum](https://github.com/facebook/Ax/blob/main/ax/modelbridge/registry.py#L355). When calling entries of that enum (e.g. `Generators.BOTORCH_MODULAR(experiment, data)`), the inputs are automatically distributed between a `Generator` and an `Adapter` for a given setup. A call to a `Model` enum member yields an `Adapter` with an underlying `Generator`, ready for use to generate candidates.\n", - "\n", - "Here we use `Generators.BOTORCH_MODULAR` to set up a model with all-default subcomponents:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a879268e", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916311983, - "executionStopTime": 1730916312395, - "id": "attached-border", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "385b2f30-fd86-4d88-8784-f238ea8a6abb" - }, - "originalKey": "052cf2e4-8de0-4ec3-a3f9-478194b10928", - "outputsInitialized": true, - "requestMsgId": "052cf2e4-8de0-4ec3-a3f9-478194b10928", - "serverExecutionDuration": 202.78578903526 - }, - "outputs": [], - "source": [ - "adapter_with_GPEI = Generators.BOTORCH_MODULAR(\n", - " experiment=experiment,\n", - " data=data,\n", - ")\n", - "adapter_with_GPEI.gen(1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "666089a4", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916312432, - "executionStopTime": 1730916312657, - "id": "powerful-gamma", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "89930a31-e058-434b-b587-181931e247b6" - }, - "originalKey": "b7f924fe-f3d9-4211-b402-421f4c90afe5", - "outputsInitialized": true, - "requestMsgId": "b7f924fe-f3d9-4211-b402-421f4c90afe5", - "serverExecutionDuration": 3.1334219966084 - }, - "outputs": [], - "source": [ - "adapter_with_GPEI.model.botorch_acqf_class" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0462b383", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916312847, - "executionStopTime": 1730916313093, - "id": "improved-replication", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "f9a9cb14-20c3-4e1d-93a3-6a35c281ae01" - }, - "originalKey": "942f1817-8d40-48f8-8725-90c25a079e4c", - "outputsInitialized": true, - "requestMsgId": "942f1817-8d40-48f8-8725-90c25a079e4c", - "serverExecutionDuration": 3.410067060031 - }, - "outputs": [], - "source": [ - "adapter_with_GPEI.model.surrogate.model.__class__" - ] - }, - { - "cell_type": "markdown", - "id": "20878dbc", - "metadata": { - "id": "connected-sheet", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "8b6a9ddc-d2d2-4cd5-a6a8-820113f78262" - }, - "originalKey": "f5c0adbd-00a6-428d-810f-1e7ed0954b08", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "We can use the same `Models.BOTORCH_MODULAR` to set up a model for multi-objective optimization:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6a440b4f", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916314009, - "executionStopTime": 1730916314736, - "id": "documentary-jurisdiction", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "8001de33-d9d9-4888-a5d1-7a59ebeccfd5" - }, - "originalKey": "9c64c497-f663-42a6-aa48-1f1f2ae2b80b", - "outputsInitialized": true, - "requestMsgId": "9c64c497-f663-42a6-aa48-1f1f2ae2b80b", - "serverExecutionDuration": 518.53136904538 - }, - "outputs": [], - "source": [ - "adapter_with_EHVI = Generators.BOTORCH_MODULAR(\n", - " experiment=get_branin_experiment_with_multi_objective(\n", - " has_objective_thresholds=True, with_batch=True\n", - " ),\n", - " data=get_branin_data_multi_objective(),\n", - ")\n", - "adapter_with_EHVI.gen(1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6e85102e", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916314586, - "executionStopTime": 1730916314842, - "id": "changed-maintenance", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "dcfdbecc-4a9a-49ac-ad55-0bc04b2ec566" - }, - "originalKey": "ab6e84ac-2a55-4f48-9ab7-06b8d9b58d1f", - "outputsInitialized": true, - "requestMsgId": "ab6e84ac-2a55-4f48-9ab7-06b8d9b58d1f", - "serverExecutionDuration": 3.3097150735557 - }, - "outputs": [], - "source": [ - "adapter_with_EHVI.model.botorch_acqf_class" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d0994478", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916315097, - "executionStopTime": 1730916315308, - "id": "operating-shelf", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "16727a51-337d-4715-bf51-9cb6637a950f" - }, - "originalKey": "1e980e3c-09f6-44c1-a79f-f59867de0c3e", - "outputsInitialized": true, - "requestMsgId": "1e980e3c-09f6-44c1-a79f-f59867de0c3e", - "serverExecutionDuration": 3.4662369871512 - }, - "outputs": [], - "source": [ - "adapter_with_EHVI.model.surrogate.model.__class__" - ] - }, - { - "cell_type": "markdown", - "id": "89e7d57d", - "metadata": { - "id": "fatal-butterfly", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "5c64eecc-5ce5-4907-bbcc-5b3cbf4358ae" - }, - "originalKey": "3ad7c4a7-fe19-44ad-938d-1be4f8b09bfb", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "Furthermore, the quick-start example at the top of this tutorial shows how to specify surrogate and acquisition subcomponents to `Generators.BOTORCH_MODULAR`. " - ] - }, - { - "cell_type": "markdown", - "id": "f9bc3db7", - "metadata": { - "id": "hearing-interface", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "a0163432-f0ca-4582-ad84-16c77c99f20b" - }, - "originalKey": "44adf1ce-6d3e-455d-b53c-32d3c42a843f", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 5. Utilizing `BoTorchGenerator` in generation strategies\n", - "\n", - "Generation strategy is a key concept in Ax, enabling use of Service API (a.k.a. `AxClient`) and many other higher-level abstractions. A `GenerationStrategy` allows to chain multiple models in Ax and thereby automate candidate generation. Refer to the \"Generation Strategy\" tutorial for more detail in generation strategies.\n", - "\n", - "An example generation stategy with the modular `BoTorchGenerator` would look like this:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8b7f0ffb", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916316730, - "executionStopTime": 1730916316968, - "id": "received-registration", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "f7eabbcf-607c-4bed-9a0e-6ac6e8b04350" - }, - "originalKey": "4ee172c8-0648-418b-9968-647e8e916507", - "outputsInitialized": true, - "requestMsgId": "4ee172c8-0648-418b-9968-647e8e916507", - "serverExecutionDuration": 2.2927720565349 - }, - "outputs": [], - "source": [ - "from ax.generation_strategy.generation_strategy import GenerationStep, GenerationStrategy\n", - "from ax.modelbridge.modelbridge_utils import get_pending_observation_features\n", - "\n", - "gs = GenerationStrategy(\n", - " steps=[\n", - " GenerationStep( # Initialization step\n", - " # Which model to use for this step\n", - " model=Generators.SOBOL,\n", - " # How many generator runs (each of which is then made a trial)\n", - " # to produce with this step\n", - " num_trials=5,\n", - " # How many trials generated from this step must be `COMPLETED`\n", - " # before the next one\n", - " min_trials_observed=5,\n", - " ),\n", - " GenerationStep( # BayesOpt step\n", - " model=Generators.BOTORCH_MODULAR,\n", - " # No limit on how many generator runs will be produced\n", - " num_trials=-1,\n", - " model_kwargs={ # Kwargs to pass to `BoTorchModel.__init__`\n", - " \"surrogate_spec\": SurrogateSpec(\n", - " model_configs=[ModelConfig(botorch_model_class=SingleTaskGP)]\n", - " ),\n", - " \"botorch_acqf_class\": qLogNoisyExpectedImprovement,\n", - " },\n", - " ),\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "157b623b", - "metadata": { - "id": "logical-windsor", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "212c4543-220e-4605-8f72-5f86cf52f722" - }, - "originalKey": "ba3783ee-3d88-4e44-ad07-77de3c50f84d", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "Set up an experiment and generate 10 trials in it, adding synthetic data to experiment after each one:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b75f3f73", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916317751, - "executionStopTime": 1730916318153, - "id": "viral-cheese", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "30cfcdd7-721d-4f89-b851-7a94140dfad6" - }, - "originalKey": "1b7d0cfc-f7cf-477d-b109-d34db9604938", - "outputsInitialized": true, - "requestMsgId": "1b7d0cfc-f7cf-477d-b109-d34db9604938", - "serverExecutionDuration": 3.9581339806318 - }, - "outputs": [], - "source": [ - "experiment = get_branin_experiment(minimize=True)\n", - "\n", - "assert len(experiment.trials) == 0\n", - "experiment.search_space" - ] - }, - { - "cell_type": "markdown", - "id": "ce37a384", - "metadata": { - "id": "incident-newspaper", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "2807d7ce-8a6b-423c-b5f5-32edba09c78e" - }, - "originalKey": "df2e90f5-4132-4d87-989b-e6d47c748ddc", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 5a. Specifying `pending_observations`\n", - "Note that it's important to **specify pending observations** to the call to `gen` to avoid getting the same points re-suggested. Without `pending_observations` argument, Ax models are not aware of points that should be excluded from generation. Points are considered \"pending\" when they belong to `STAGED`, `RUNNING`, or `ABANDONED` trials (with the latter included so model does not re-suggest points that are considered \"bad\" and should not be re-suggested).\n", - "\n", - "If the call to `get_pending_observation_features` becomes slow in your setup (since it performs data-fetching etc.), you can opt for `get_pending_observation_features_based_on_trial_status` (also from `ax.modelbridge.modelbridge_utils`), but note the limitations of that utility (detailed in its docstring)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4b5f671d", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916318830, - "executionStopTime": 1730916321328, - "id": "casual-spread", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "58aafd65-a366-4b66-a1b1-31b207037a2e" - }, - "originalKey": "fe7437c5-8834-46cc-94b2-91782d91ee96", - "outputsInitialized": true, - "requestMsgId": "fe7437c5-8834-46cc-94b2-91782d91ee96", - "serverExecutionDuration": 2274.8276960338 - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Completed trial #5, suggested by BoTorch.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Completed trial #6, suggested by BoTorch.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Completed trial #7, suggested by BoTorch.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Completed trial #8, suggested by BoTorch.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Completed trial #9, suggested by BoTorch.\n" - ] - } - ], - "source": [ - "for _ in range(10):\n", - " # Produce a new generator run and attach it to experiment as a trial\n", - " generator_run = gs.gen(\n", - " experiment=experiment,\n", - " n=1,\n", - " pending_observations=get_pending_observation_features(experiment=experiment),\n", - " )\n", - " trial = experiment.new_trial(generator_run)\n", - "\n", - " # Mark the trial as 'RUNNING' so we can mark it 'COMPLETED' later\n", - " trial.mark_running(no_runner_required=True)\n", - "\n", - " # Attach data for the new trial and mark it 'COMPLETED'\n", - " experiment.attach_data(get_branin_data(trials=[trial]))\n", - " trial.mark_completed()\n", - "\n", - " print(f\"Completed trial #{trial.index}, suggested by {generator_run._model_key}.\")" - ] - }, - { - "cell_type": "markdown", - "id": "e4720316", - "metadata": { - "id": "circular-vermont", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "9d3b86bf-b691-4315-8b8f-60504b37818c" - }, - "originalKey": "6a78ef13-fbaa-4cae-934b-d57f5807fe25", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "Now we examine the experiment and observe the trials that were added to it and produced by the generation strategy:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a69b4418", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916319576, - "executionStopTime": 1730916321368, - "id": "significant-particular", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "ca12913d-e3fd-4617-a247-e3432665bac1" - }, - "originalKey": "b3160bc0-d5d1-45fa-bf62-4b9dd5778cac", - "outputsInitialized": true, - "requestMsgId": "b3160bc0-d5d1-45fa-bf62-4b9dd5778cac", - "serverExecutionDuration": 35.789265064523 - }, - "outputs": [], - "source": [ - "exp_to_df(experiment)" - ] - }, - { - "cell_type": "markdown", - "id": "5c778f3a", - "metadata": { - "id": "obvious-transparency", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "c25da720-6d3d-4f16-b878-24f2d2755783" - }, - "originalKey": "633c66af-a89f-4f03-a88b-866767d0a52f", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## 6. Customizing a `Surrogate` or `Acquisition`\n", - "\n", - "We expect the base `Surrogate` and `Acquisition` classes to work with most BoTorch components, but there could be a case where you would need to subclass one of aforementioned abstractions to handle a given BoTorch component. If you run into a case like this, feel free to open an issue on our [Github issues page](https://github.com/facebook/Ax/issues) –– it would be very useful for us to know \n", - "\n", - "One such example would be a need for a custom `MCAcquisitionObjective` or posterior transform. To subclass `Acquisition` accordingly, one would override the `get_botorch_objective_and_transform` method:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84e98211", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916320585, - "executionStopTime": 1730916321384, - "id": "organizational-balance", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "e7f8e413-f01e-4f9d-82c1-4912097637af" - }, - "originalKey": "2949718a-8a4e-41e5-91ac-5b020eface47", - "outputsInitialized": true, - "requestMsgId": "2949718a-8a4e-41e5-91ac-5b020eface47", - "serverExecutionDuration": 2.2059100447223 - }, - "outputs": [], - "source": [ - "from botorch.acquisition.objective import MCAcquisitionObjective, PosteriorTransform\n", - "from botorch.acquisition.risk_measures import RiskMeasureMCObjective\n", - "\n", - "\n", - "class CustomObjectiveAcquisition(Acquisition):\n", - " def get_botorch_objective_and_transform(\n", - " self,\n", - " botorch_acqf_class: Type[AcquisitionFunction],\n", - " model: Model,\n", - " objective_weights: Tensor,\n", - " objective_thresholds: Optional[Tensor] = None,\n", - " outcome_constraints: Optional[Tuple[Tensor, Tensor]] = None,\n", - " X_observed: Optional[Tensor] = None,\n", - " risk_measure: Optional[RiskMeasureMCObjective] = None,\n", - " ) -> Tuple[Optional[MCAcquisitionObjective], Optional[PosteriorTransform]]:\n", - " ... # Produce the desired `MCAcquisitionObjective` and `PosteriorTransform` instead of the default" - ] - }, - { - "cell_type": "markdown", - "id": "13843a20", - "metadata": { - "id": "theoretical-horizon", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "7299f0fc-e19e-4383-99de-ef7a9a987fe9" - }, - "originalKey": "0ec8606d-9d5b-4bcb-ad7e-f54839ad6f9b", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "Then to use the new subclass in `BoTorchGenerator`, just specify `acquisition_class` argument along with `botorch_acqf_class` (to `BoTorchGenerator` directly or to `Generators.BOTORCH_MODULAR`, which just passes the relevant arguments to `BoTorchGenerator` under the hood, as discussed in section 4):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2fffef64", - "metadata": { - "collapsed": false, - "executionStartTime": 1730916321675, - "executionStopTime": 1730916321901, - "id": "approximate-rolling", - "isAgentGenerated": false, - "jupyter": { - "outputs_hidden": false - }, - "language": "python", - "metadata": { - "originalKey": "07fe169a-78de-437e-9857-7c99cc48eedc" - }, - "originalKey": "e231ea1e-c70d-48dc-b6c6-1611c5ea1b26", - "outputsInitialized": true, - "requestMsgId": "e231ea1e-c70d-48dc-b6c6-1611c5ea1b26", - "serverExecutionDuration": 12.351316981949 - }, - "outputs": [], - "source": [ - "Generators.BOTORCH_MODULAR(\n", - " experiment=experiment,\n", - " data=data,\n", - " acquisition_class=CustomObjectiveAcquisition,\n", - " botorch_acqf_class=MyAcquisitionFunctionClass,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "16b06c8e", - "metadata": { - "id": "representative-implement", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "608d5f0d-4528-4aa6-869d-db38fcbfb256" - }, - "originalKey": "cdcfb2bc-3016-4681-9fff-407f28321c3f", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "To use a custom `Surrogate` subclass, pass the `surrogate` argument of that type:\n", - "```\n", - "Generators.BOTORCH_MODULAR(\n", - " experiment=experiment, \n", - " data=data,\n", - " surrogate=CustomSurrogate(botorch_model_class=MyModelClass),\n", - ")\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "e47f94c4", - "metadata": { - "id": "framed-intermediate", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "64f1289e-73c7-4cc5-96ee-5091286a8361" - }, - "originalKey": "ff03d674-f584-403f-ba65-f1bab921845b", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "------" - ] - }, - { - "cell_type": "markdown", - "id": "44dc1fae", - "metadata": { - "id": "metropolitan-feedback", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "d1e37569-dd0d-4561-b890-2f0097a345e0" - }, - "originalKey": "f71fcfa1-fc59-4bfb-84d6-b94ea5298bfa", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## Appendix 1: Methods available on `BoTorchGenerator`\n", - "\n", - "Note that usually all these methods are used through `Adapter` –– a convertion and transformation layer that adapts Ax abstractions to inputs required by the given model.\n", - "\n", - "**Core methods on `BoTorchGenerator`:**\n", - "* `fit` selects a surrogate if needed and fits the surrogate model to data via `Surrogate.fit`,\n", - "* `predict` estimates metric values at a given point via `Surrogate.predict`,\n", - "* `gen` instantiates an acquisition function via `Acquisition.__init__` and optimizes it to generate candidates.\n", - "\n", - "**Other methods on `BoTorchGenerator`:**\n", - "* `update` updates surrogate model with training data and optionally reoptimizes model parameters via `Surrogate.update`,\n", - "* `cross_validate` re-fits the surrogate model to subset of training data and makes predictions for test data,\n", - "* `evaluate_acquisition_function` instantiates an acquisition function and evaluates it for a given point.\n", - "------\n" - ] - }, - { - "cell_type": "markdown", - "id": "720415a6", - "metadata": { - "id": "possible-transsexual", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "b02f928c-57d9-4b2a-b4fe-c6d28d368b12" - }, - "originalKey": "91cedde4-8911-441f-af05-eb124581cbbc", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## Appendix 2: Default surrogate models and acquisition functions\n", - "\n", - "By default, the chosen surrogate model will be:\n", - "* if fidelity parameters are present in search space: `SingleTaskMultiFidelityGP`,\n", - "* if task parameters are present: a set of `MultiTaskGP` wrapped in a `ModelListGP` and each modeling one task,\n", - "* `SingleTaskGP` otherwise.\n", - "\n", - "The chosen acquisition function will be:\n", - "* for multi-objective settings: `qLogExpectedHypervolumeImprovement`,\n", - "* for single-objective settings: `qLogNoisyExpectedImprovement`.\n", - "----" - ] - }, - { - "cell_type": "markdown", - "id": "45a8d6dc", - "metadata": { - "id": "continuous-strain", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "76ae9852-9d21-43d6-bf75-bb087a474dd6" - }, - "originalKey": "c8b0f933-8df6-479b-aa61-db75ca877624", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "## Appendix 3: Handling storage errors that arise from objects that don't have serialization logic in A\n", - "\n", - "Attempting to store a generator run produced via `Generators.BOTORCH_MODULAR` instance that included options without serization logic with will produce an error like: `\"Object passed to 'object_to_json' (of type ) is not registered with a corresponding encoder in ENCODER_REGISTRY.\"`" - ] - }, - { - "cell_type": "markdown", - "id": "7e0b9122", - "metadata": { - "id": "broadband-voice", - "isAgentGenerated": false, - "language": "markdown", - "metadata": { - "originalKey": "6487b68e-b808-4372-b6ba-ab02ce4826bc" - }, - "originalKey": "4d82f49a-3a8b-42f0-a4f5-5c079b793344", - "outputsInitialized": false, - "showInput": false - }, - "source": [ - "The two options for handling this error are:\n", - "1. disabling storage of `BoTorchGenerator`'s options by passing `no_model_options_storage=True` to `Generators.BOTORCH_MODULAR(...)` call –– this will prevent model options from being stored on the generator run, so a generator run can be saved but cannot be used to restore the model that produced it,\n", - "2. specifying serialization logic for a given object that needs to occur among the `Model` or `AcquisitionFunction` options. Tutorial for this is in the works, but in the meantime you can [post an issue on the Ax GitHub](https://github.com/facebook/Ax/issues) to get help with this." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a8ce55f4-74e6-4983-9013-1ec308a76b24", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/tutorials/multi_task/multi_task.ipynb b/tutorials/multi_task/multi_task.ipynb deleted file mode 100644 index 7a6c5269251..00000000000 --- a/tutorials/multi_task/multi_task.ipynb +++ /dev/null @@ -1,585 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "bbfd01ea-97cb-4830-ab6d-60236151a3cd", - "showInput": false - }, - "source": [ - "# Multi-task Bayesian Optimization\n", - "\n", - "This tutorial uses synthetic functions to illustrate Bayesian optimization using a multi-task Gaussian Process in Ax. A typical use case is optimizing an expensive-to-evaluate (online) system with supporting (offline) simulations of that system.\n", - "\n", - "Bayesian optimization with a multi-task kernel (Multi-task Bayesian optimization) is described by Swersky et al. (2013). Letham and Bakshy (2019) describe using multi-task Bayesian optimization to tune a ranking system with a mix of online and offline (simulator) experiments.\n", - "\n", - "This tutorial produces the results of Online Appendix 2 from [that paper](https://arxiv.org/pdf/1904.01049.pdf).\n", - "\n", - "The synthetic problem used here is to maximize the Hartmann 6 function, a classic optimization test problem in 6 dimensions. The objective is treated as unknown and are modeled with separate GPs. The objective is noisy.\n", - "\n", - "Throughout the optimization we can make nosiy observations directly of the objective (an online observation), and we can make noisy observations of a biased version of the objective (offline observations). Bias is simulated by passing the function values through a piecewise linear function. Offline observations are much less time-consuming than online observations, so we wish to use them to improve our ability to optimize the online objective." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "3ce827be-d20b-48d3-a6ff-291bd442c748" - }, - "outputs": [], - "source": [ - "import os\n", - "import time\n", - "\n", - "from copy import deepcopy\n", - "from typing import Optional\n", - "\n", - "import numpy as np\n", - "\n", - "import torch\n", - "\n", - "from ax.core.data import Data\n", - "from ax.core.experiment import Experiment\n", - "from ax.core.generator_run import GeneratorRun\n", - "from ax.core.multi_type_experiment import MultiTypeExperiment\n", - "from ax.core.objective import Objective\n", - "from ax.core.observation import ObservationFeatures, observations_from_data\n", - "from ax.core.optimization_config import OptimizationConfig\n", - "from ax.core.parameter import ParameterType, RangeParameter\n", - "from ax.core.search_space import SearchSpace\n", - "from ax.metrics.hartmann6 import Hartmann6Metric\n", - "from ax.modelbridge.factory import get_sobol\n", - "from ax.modelbridge.registry import Generators, MBM_X_trans, ST_MTGP_trans\n", - "from ax.modelbridge.torch import TorchAdapter\n", - "from ax.modelbridge.transforms.convert_metric_names import tconfig_from_mt_experiment\n", - "from ax.modelbridge.transforms.derelativize import Derelativize\n", - "from ax.modelbridge.transforms.convert_metric_names import ConvertMetricNames\n", - "from ax.modelbridge.transforms.trial_as_task import TrialAsTask\n", - "from ax.modelbridge.transforms.stratified_standardize_y import StratifiedStandardizeY\n", - "from ax.modelbridge.transforms.task_encode import TaskChoiceToIntTaskChoice\n", - "from ax.plot.diagnostic import interact_batch_comparison\n", - "from ax.runners.synthetic import SyntheticRunner\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "from pyre_extensions import assert_is_instance\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"\n", - "\n", - "# Transforms for pre-processing the data from a multi-type experiment to \n", - "# construct a multi-task GP model.\n", - "MT_MTGP_trans = MBM_X_trans + [\n", - " Derelativize,\n", - " ConvertMetricNames,\n", - " TrialAsTask,\n", - " StratifiedStandardizeY,\n", - " TaskChoiceToIntTaskChoice,\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "76100312-e604-46ed-a123-9b0296ced6ff", - "showInput": false - }, - "source": [ - "## 1. Define Metric classes\n", - "For this example, the online system is optimizing a Hartmann6 function. The Metric objects for these are directly imported above. We create analagous offline versions of this metrics which are identical but have a transform applied (a piecewise linear function). We construct Metric objects for each of them." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "2315ca64-74e5-4084-829e-e8a482c653e5" - }, - "outputs": [], - "source": [ - "# Create metric with artificial offline bias, for the objective\n", - "# by passing the true values through a piecewise linear function.\n", - "\n", - "\n", - "class OfflineHartmann6Metric(Hartmann6Metric):\n", - " def f(self, x: np.ndarray) -> float:\n", - " raw_res = super().f(x)\n", - " m = -0.35\n", - " if raw_res < m:\n", - " return (1.5 * (raw_res - m)) + m\n", - " else:\n", - " return (6.0 * (raw_res - m)) + m" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "b0e2089f-a7a3-4a8b-b8b3-ab6d75ca7f09", - "showInput": false - }, - "source": [ - "## 2. Create experiment\n", - "\n", - "A MultiTypeExperiment is used for managing online and offline trials together. It is constructed in several steps:\n", - "\n", - "1. Create the search space - This is done in the usual way.\n", - "2. Specify optimization config - Also done in the usual way.\n", - "3. Initialize Experiment - In addition to the search_space and optimization_config, specify that \"online\" is the default trial_type. This is the main trial type for which we're optimizing. Optimization metrics are defined to be for this type and new trials assume this trial type by default.\n", - "4. Establish offline trial_type - Register the \"offline\" trial type and specify how to deploy trials of this type.\n", - "5. Add offline metrics - Create the offline metrics and add them to the experiment. When adding the metrics, we need to specify the trial type (\"offline\") and online metric name it is associated with so the model can link them.\n", - "\n", - "Finally, because this is a synthetic benchmark problem where the true function values are known, we will also register metrics with the true (noiseless) function values for plotting below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "39504f84-793e-4dae-ae55-068f1b762706" - }, - "outputs": [], - "source": [ - "def get_experiment(include_true_metric=True):\n", - " noise_sd = 0.1 # Observations will have this much Normal noise added to them\n", - "\n", - " # 1. Create simple search space for [0,1]^d, d=6\n", - " param_names = [f\"x{i}\" for i in range(6)]\n", - " parameters = [\n", - " RangeParameter(\n", - " name=param_names[i],\n", - " parameter_type=ParameterType.FLOAT,\n", - " lower=0.0,\n", - " upper=1.0,\n", - " )\n", - " for i in range(6)\n", - " ]\n", - " search_space = SearchSpace(parameters=parameters)\n", - "\n", - " # 2. Specify optimization config\n", - " online_objective = Hartmann6Metric(\n", - " \"objective\", param_names=param_names, noise_sd=noise_sd\n", - " )\n", - " opt_config = OptimizationConfig(\n", - " objective=Objective(online_objective, minimize=True)\n", - " )\n", - "\n", - " # 3. Init experiment\n", - " exp = MultiTypeExperiment(\n", - " name=\"mt_exp\",\n", - " search_space=search_space,\n", - " default_trial_type=\"online\",\n", - " default_runner=SyntheticRunner(),\n", - " optimization_config=opt_config,\n", - " )\n", - "\n", - " # 4. Establish offline trial_type, and how those trials are deployed\n", - " exp.add_trial_type(\"offline\", SyntheticRunner())\n", - "\n", - " # 5. Add offline metrics that provide biased estimates of the online metrics\n", - " offline_objective = OfflineHartmann6Metric(\n", - " \"offline_objective\", param_names=param_names, noise_sd=noise_sd\n", - " )\n", - " # Associate each offline metric with corresponding online metric\n", - " exp.add_tracking_metric(\n", - " metric=offline_objective, trial_type=\"offline\", canonical_name=\"objective\"\n", - " )\n", - "\n", - " return exp" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "5a00218e-c27d-4d6f-bef0-3e562217533a", - "showInput": false - }, - "source": [ - "## 3. Vizualize the simulator bias\n", - "\n", - "These figures compare the online measurements to the offline measurements on a random set of points, for the objective metric. You can see the offline measurements are biased but highly correlated. This produces Fig. S3 from the paper." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "8260b668-91ef-404e-aa8c-4bf43f6a5660" - }, - "outputs": [], - "source": [ - "# Generate 50 points from a Sobol sequence\n", - "exp = get_experiment(include_true_metric=False)\n", - "s = get_sobol(exp.search_space, scramble=False)\n", - "gr = s.gen(50)\n", - "# Deploy them both online and offline\n", - "exp.new_batch_trial(trial_type=\"online\", generator_run=gr).run()\n", - "exp.new_batch_trial(trial_type=\"offline\", generator_run=gr).run()\n", - "# Fetch data\n", - "data = exp.fetch_data()\n", - "observations = observations_from_data(exp, data)\n", - "# Plot the arms in batch 0 (online) vs. batch 1 (offline)\n", - "render(interact_batch_comparison(observations, exp, 1, 0))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "69cf9e8e-361e-4546-871f-6bb8641d1b97" - }, - "source": [ - "## 4. The Bayesian optimization loop\n", - "\n", - "Here we construct a Bayesian optimization loop that interleaves online and offline batches. The loop defined here is described in Algorithm 1 of the paper. We compare multi-task Bayesian optimization to regular Bayesian optimization using only online observations.\n", - "\n", - "Here we measure performance over 3 repetitions of the loop. Each one takes 1-2 hours so the whole benchmark run will take several hours to complete." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "3d124563-8a1f-411e-9822-972568ce1970" - }, - "outputs": [], - "source": [ - "# Settings for the optimization benchmark.\n", - "\n", - "# Number of repeated experiments, each with independent observation noise.\n", - "# This should be changed to 50 to reproduce the results from the paper.\n", - "if SMOKE_TEST:\n", - " n_batches = 1\n", - " n_init_online = 2\n", - " n_init_offline = 2\n", - " n_opt_online = 2\n", - " n_opt_offline = 2\n", - "else:\n", - " n_batches = 3 # Number of optimized BO batches\n", - " n_init_online = 5 # Size of the quasirandom initialization run online\n", - " n_init_offline = 20 # Size of the quasirandom initialization run offline\n", - " n_opt_online = 5 # Batch size for BO selected points to be run online\n", - " n_opt_offline = 20 # Batch size for BO selected to be run offline" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "5447b3e7-b245-4fab-ad4a-165d7c63e09c" - }, - "source": [ - "#### 4a. Optimization with online observations only\n", - "For the online-only case, we run `n_init_online` sobol points followed by `n_batches` batches of `n_opt_online` points selected by the GP. This is a normal Bayesian optimization loop." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "040354c2-4313-46db-b40d-8adc8da6fafb" - }, - "outputs": [], - "source": [ - "# This function runs a Bayesian optimization loop, making online observations only.\n", - "def run_online_only_bo():\n", - " t1 = time.time()\n", - " ### Do BO with online only\n", - " ## Quasi-random initialization\n", - " exp_online = get_experiment()\n", - " m = get_sobol(exp_online.search_space, scramble=False)\n", - " gr = m.gen(n=n_init_online)\n", - " exp_online.new_batch_trial(trial_type=\"online\", generator_run=gr).run()\n", - " ## Do BO\n", - " for b in range(n_batches):\n", - " print(\"Online-only batch\", b, time.time() - t1)\n", - " # Fit the GP\n", - " m = Generators.BOTORCH_MODULAR(\n", - " experiment=exp_online,\n", - " data=exp_online.fetch_data(),\n", - " search_space=exp_online.search_space,\n", - " )\n", - " # Generate the new batch\n", - " gr = m.gen(\n", - " n=n_opt_online,\n", - " search_space=exp_online.search_space,\n", - " optimization_config=exp_online.optimization_config,\n", - " )\n", - " exp_online.new_batch_trial(trial_type=\"online\", generator_run=gr).run()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "c1837efe-9f41-4eb8-a415-309392724141" - }, - "source": [ - "#### 4b. Multi-task Bayesian optimization\n", - "Here we incorporate offline observations to accelerate the optimization, while using the same total number of online observations as in the loop above. The strategy here is that outlined in Algorithm 1 of the paper.\n", - "\n", - "1. Initialization - Run `n_init_online` Sobol points online, and `n_init_offline` Sobol points offline.\n", - "2. Fit model - Fit an MTGP to both online and offline observations.\n", - "3. Generate candidates - Generate `n_opt_offline` candidates using NEI.\n", - "4. Launch offline batch - Run the `n_opt_offline` candidates offline and observe their offline metrics.\n", - "5. Update model - Update the MTGP with the new offline observations.\n", - "6. Select points for online batch - Select the best (maximum utility) `n_opt_online` of the NEI candidates, after incorporating their offline observations, and run them online.\n", - "7. Update model and repeat - Update the model with the online observations, and repeat from step 3 for the next batch." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_MTGP(\n", - " experiment: Experiment,\n", - " data: Data,\n", - " search_space: Optional[SearchSpace] = None,\n", - " trial_index: Optional[int] = None,\n", - " device: torch.device = torch.device(\"cpu\"),\n", - " dtype: torch.dtype = torch.double,\n", - ") -> TorchAdapter:\n", - " \"\"\"Instantiates a Multi-task Gaussian Process (MTGP) model that generates\n", - " points with EI.\n", - "\n", - " If the input experiment is a MultiTypeExperiment then a\n", - " Multi-type Multi-task GP model will be instantiated.\n", - " Otherwise, the model will be a Single-type Multi-task GP.\n", - " \"\"\"\n", - "\n", - " if isinstance(experiment, MultiTypeExperiment):\n", - " trial_index_to_type = {\n", - " t.index: t.trial_type for t in experiment.trials.values()\n", - " }\n", - " transforms = MT_MTGP_trans\n", - " transform_configs = {\n", - " \"TrialAsTask\": {\"trial_level_map\": {\"trial_type\": trial_index_to_type}},\n", - " \"ConvertMetricNames\": tconfig_from_mt_experiment(experiment),\n", - " }\n", - " else:\n", - " # Set transforms for a Single-type MTGP model.\n", - " transforms = ST_MTGP_trans\n", - " transform_configs = None\n", - "\n", - " # Choose the status quo features for the experiment from the selected trial.\n", - " # If trial_index is None, we will look for a status quo from the last\n", - " # experiment trial to use as a status quo for the experiment.\n", - " if trial_index is None:\n", - " trial_index = len(experiment.trials) - 1\n", - " elif trial_index >= len(experiment.trials):\n", - " raise ValueError(\"trial_index is bigger than the number of experiment trials\")\n", - "\n", - " status_quo = experiment.trials[trial_index].status_quo\n", - " if status_quo is None:\n", - " status_quo_features = None\n", - " else:\n", - " status_quo_features = ObservationFeatures(\n", - " parameters=status_quo.parameters,\n", - " trial_index=trial_index, # pyre-ignore[6]\n", - " )\n", - "\n", - " \n", - " return assert_is_instance(\n", - " Generators.ST_MTGP(\n", - " experiment=experiment,\n", - " search_space=search_space or experiment.search_space,\n", - " data=data,\n", - " transforms=transforms,\n", - " transform_configs=transform_configs,\n", - " torch_dtype=dtype,\n", - " torch_device=device,\n", - " status_quo_features=status_quo_features,\n", - " ),\n", - " TorchAdapter,\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "37735b0e-e488-4927-a3da-a7d32d9f1ae0" - }, - "outputs": [], - "source": [ - "# Online batches are constructed by selecting the maximum utility points from the offline\n", - "# batch, after updating the model with the offline results. This function selects the max utility points according\n", - "# to the MTGP predictions.\n", - "def max_utility_from_GP(n, m, experiment, search_space, gr):\n", - " obsf = []\n", - " for arm in gr.arms:\n", - " params = deepcopy(arm.parameters)\n", - " params[\"trial_type\"] = \"online\"\n", - " obsf.append(ObservationFeatures(parameters=params))\n", - " # Make predictions\n", - " f, cov = m.predict(obsf)\n", - " # Compute expected utility\n", - " u = -np.array(f[\"objective\"])\n", - " best_arm_indx = np.flip(np.argsort(u))[:n]\n", - " gr_new = GeneratorRun(\n", - " arms=[gr.arms[i] for i in best_arm_indx],\n", - " weights=[1.0] * n,\n", - " )\n", - " return gr_new\n", - "\n", - "\n", - "# This function runs a multi-task Bayesian optimization loop, as outlined in Algorithm 1 and above.\n", - "def run_mtbo():\n", - " t1 = time.time()\n", - " online_trials = []\n", - " ## 1. Quasi-random initialization, online and offline\n", - " exp_multitask = get_experiment()\n", - " # Online points\n", - " m = get_sobol(exp_multitask.search_space, scramble=False)\n", - " gr = m.gen(\n", - " n=n_init_online,\n", - " )\n", - " tr = exp_multitask.new_batch_trial(trial_type=\"online\", generator_run=gr)\n", - " tr.run()\n", - " online_trials.append(tr.index)\n", - " # Offline points\n", - " m = get_sobol(exp_multitask.search_space, scramble=False)\n", - " gr = m.gen(\n", - " n=n_init_offline,\n", - " )\n", - " exp_multitask.new_batch_trial(trial_type=\"offline\", generator_run=gr).run()\n", - " ## Do BO\n", - " for b in range(n_batches):\n", - " print(\"Multi-task batch\", b, time.time() - t1)\n", - " # (2 / 7). Fit the MTGP\n", - " m = get_MTGP(\n", - " experiment=exp_multitask,\n", - " data=exp_multitask.fetch_data(),\n", - " search_space=exp_multitask.search_space,\n", - " )\n", - "\n", - " # 3. Finding the best points for the online task\n", - " gr = m.gen(\n", - " n=n_opt_offline,\n", - " optimization_config=exp_multitask.optimization_config,\n", - " fixed_features=ObservationFeatures(\n", - " parameters={}, trial_index=online_trials[-1]\n", - " ),\n", - " )\n", - "\n", - " # 4. But launch them offline\n", - " exp_multitask.new_batch_trial(trial_type=\"offline\", generator_run=gr).run()\n", - "\n", - " # 5. Update the model\n", - " m = get_MTGP(\n", - " experiment=exp_multitask,\n", - " data=exp_multitask.fetch_data(),\n", - " search_space=exp_multitask.search_space,\n", - " )\n", - "\n", - " # 6. Select max-utility points from the offline batch to generate an online batch\n", - " gr = max_utility_from_GP(\n", - " n=n_opt_online,\n", - " m=m,\n", - " experiment=exp_multitask,\n", - " search_space=exp_multitask.search_space,\n", - " gr=gr,\n", - " )\n", - " tr = exp_multitask.new_batch_trial(trial_type=\"online\", generator_run=gr)\n", - " tr.run()\n", - " online_trials.append(tr.index)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "6708d9ee-34be-4d85-91cc-ed2af5dd8026" - }, - "source": [ - "#### 4c. Run both loops\n", - "Run both Bayesian optimization loops and aggregate results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "f94a7537-61a6-4200-8e56-01de41aff6c9" - }, - "outputs": [], - "source": [ - "runners = {\n", - " \"GP, online only\": run_online_only_bo,\n", - " \"MTGP\": run_mtbo,\n", - "}\n", - "for k, r in runners.items():\n", - " r()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "1de5ae27-c925-4599-9425-332765a03416" - }, - "source": [ - "#### References\n", - "Benjamin Letham and Eytan Bakshy. Bayesian optimization for policy search via online-offline experimentation. _arXiv preprint arXiv:1603.09326_, 2019.\n", - "\n", - "Kevin Swersky, Jasper Snoek, and Ryan P Adams. Multi-task Bayesian optimization. In _Advances in Neural Information Processing Systems_ 26, NIPS, pages 2004–2012, 2013." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/multiobjective_optimization/multiobjective_optimization.ipynb b/tutorials/multiobjective_optimization/multiobjective_optimization.ipynb deleted file mode 100644 index 0f68ce287bd..00000000000 --- a/tutorials/multiobjective_optimization/multiobjective_optimization.ipynb +++ /dev/null @@ -1,1042 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "95e7a97a-bf78-48d4-a0c1-c0e8dfc4fed9", - "showInput": true - }, - "source": [ - "# Multi-Objective Optimization Ax API\n", - "### Using the Service API\n", - "For Multi-objective optimization (MOO) in the `AxClient`, objectives are specified through the `ObjectiveProperties` dataclass. An `ObjectiveProperties` requires a boolean `minimize`, and also accepts an optional floating point `threshold`. If a `threshold` is not specified, Ax will infer it through the use of heuristics. If the user knows the region of interest (because they have specs or prior knowledge), then specifying the thresholds is preferable to inferring it. But if the user would need to guess, inferring is preferable.\n", - "\n", - "\n", - "To learn more about how to choose a threshold, see [Set Objective Thresholds to focus candidate generation in a region of interest](/docs/tutorials/multiobjective_optimization/#set-objective-thresholds-to-focus-candidate-generation-in-a-region-of-interest). See the [Service API Tutorial](/docs/tutorials/gpei_hartmann_service) for more infomation on running experiments with the Service API." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "06bf2029-0ea4-40b4-aced-956f1411cb6e", - "showInput": true - }, - "outputs": [], - "source": [ - "import torch\n", - "from ax.plot.pareto_frontier import plot_pareto_frontier\n", - "from ax.plot.pareto_utils import compute_posterior_pareto_frontier\n", - "from ax.service.ax_client import AxClient\n", - "from ax.service.utils.instantiation import ObjectiveProperties\n", - "\n", - "# Plotting imports and initialization\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "from botorch.test_functions.multi_objective import BraninCurrin\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load our sample 2-objective problem\n", - "branin_currin = BraninCurrin(negate=True).to(\n", - " dtype=torch.double,\n", - " device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1628191188673, - "executionStopTime": 1628191188746, - "hidden_ranges": [], - "originalKey": "c687973d-1b09-4a8f-9108-1f74adf64d4d", - "requestMsgId": "ea523260-8896-48e4-a62f-3530d268b209", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client = AxClient()\n", - "ax_client.create_experiment(\n", - " name=\"moo_experiment\",\n", - " parameters=[\n", - " {\n", - " \"name\": f\"x{i+1}\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " }\n", - " for i in range(2)\n", - " ],\n", - " objectives={\n", - " # `threshold` arguments are optional\n", - " \"a\": ObjectiveProperties(minimize=False, threshold=branin_currin.ref_point[0]),\n", - " \"b\": ObjectiveProperties(minimize=False, threshold=branin_currin.ref_point[1]),\n", - " },\n", - " overwrite_existing_experiment=True,\n", - " is_test=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "70fd45e1-a2ce-4034-bb44-086507833472", - "showInput": true - }, - "source": [ - "### Create an Evaluation Function\n", - "In the case of MOO experiments, evaluation functions can be any arbitrary function that takes in a `dict` of parameter names mapped to values and returns a `dict` of objective names mapped to a `tuple` of mean and SEM values." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1628191201840, - "executionStopTime": 1628191201871, - "hidden_ranges": [], - "originalKey": "a0e4fa8d-ebc7-4dc6-b370-ed4a83e3208f", - "requestMsgId": "9cfd336d-c317-4d1c-a028-42d45903bac6", - "showInput": true - }, - "outputs": [], - "source": [ - "def evaluate(parameters):\n", - " evaluation = branin_currin(\n", - " torch.tensor([parameters.get(\"x1\"), parameters.get(\"x2\")])\n", - " )\n", - " # In our case, standard error is 0, since we are computing a synthetic function.\n", - " # Set standard error to None if the noise level is unknown.\n", - " return {\"a\": (evaluation[0].item(), 0.0), \"b\": (evaluation[1].item(), 0.0)}" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "4200cd7c-8e13-4cbf-b0c1-72b52d900aaf", - "showInput": true - }, - "source": [ - "### Run Optimization" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1628191208271, - "executionStopTime": 1628191238749, - "originalKey": "f91b1a1e-c78a-4262-a211-a13115c007c1", - "requestMsgId": "842a1cf8-97a3-43d6-83a3-f258ea96ae20", - "showInput": true - }, - "outputs": [], - "source": [ - "for i in range(25):\n", - " parameters, trial_index = ax_client.get_next_trial()\n", - " # Local evaluation here can be replaced with deployment to external system.\n", - " ax_client.complete_trial(trial_index=trial_index, raw_data=evaluate(parameters))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "customInput": null, - "hidden_ranges": [], - "originalKey": "e0a6feb4-8c38-42e4-9d7c-62b79307e043", - "showInput": false - }, - "source": [ - "### Plot Pareto Frontier" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "customInput": null, - "executionStartTime": 1628191262231, - "executionStopTime": 1628191270720, - "hidden_ranges": [], - "originalKey": "c2c2b222-6b68-4f1a-839f-16b50019ada4", - "requestMsgId": "563d345b-573c-4d93-a480-5db88a283250", - "showInput": true - }, - "outputs": [], - "source": [ - "objectives = ax_client.experiment.optimization_config.objective.objectives\n", - "frontier = compute_posterior_pareto_frontier(\n", - " experiment=ax_client.experiment,\n", - " data=ax_client.experiment.fetch_data(),\n", - " primary_objective=objectives[1].metric,\n", - " secondary_objective=objectives[0].metric,\n", - " absolute_metrics=[\"a\", \"b\"],\n", - " num_points=20,\n", - ")\n", - "render(plot_pareto_frontier(frontier, CI_level=0.90))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "f4f6ce29-4a0c-4ac5-84a7-f83a4de9112c", - "showInput": true - }, - "source": [ - "# Deep Dive\n", - "\n", - "In the rest of this tutorial, we will show two algorithms available in Ax for multi-objective optimization\n", - "and visualize how they compare to eachother and to quasirandom search.\n", - "\n", - "MOO covers the case where we care about multiple\n", - "outcomes in our experiment but we do not know before hand a specific weighting of those\n", - "objectives (covered by `ScalarizedObjective`) or a specific constraint on one objective \n", - "(covered by `OutcomeConstraint`s) that will produce the best result.\n", - "\n", - "The solution in this case is to find a whole Pareto frontier, a surface in outcome-space\n", - "containing points that can't be improved on in every outcome. This shows us the\n", - "tradeoffs between objectives that we can choose to make." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e04a24fa-dcfc-4430-960f-9c0e772fd754", - "showInput": true - }, - "source": [ - "### Problem Statement\n", - "\n", - "Optimize a list of M objective functions $ \\bigl(f^{(1)}( x),..., f^{(M)}( x) \\bigr)$ over a bounded search space $\\mathcal X \\subset \\mathbb R^d$.\n", - "\n", - "We assume $f^{(i)}$ are expensive-to-evaluate black-box functions with no known analytical expression, and no observed gradients. For instance, a machine learning model where we're interested in maximizing accuracy and minimizing inference time, with $\\mathcal X$ the set of possible configuration spaces" - ] - }, - { - "attachments": { - "pareto_front%20%281%29.png": { - "image/png": "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AACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAA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AAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAA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AAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIQTtQIAAAAAAAAAAAAAAAAAEE7UCgAAAAAAAAAAAAAAAABAOFErAAAAAAAAAAAAAAAAAADhRK0AAAAAAAAAAAAAAAAAAIRbrtdr7TUAAEA5y7JkOY4P0gAAAAAAAAAAAAAAsItJrQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFErQAAAAAAAAAAAAAAAAAAhBO1AgAAAAAAAAAAAAAAAAAQTtQKAAAAAAAAAAAAAAAAAEA4USsAAAAAAAAAAAAAAAAAAOFuay8Aune5XLIc53w+ZzkOAAAAjMT3bgDoi2c3AHQk14P75NkNAEX40g0AffHsBgD4ikmtAAAAAAAAAAAAAAAAAACEE7UCAAAAAAAAAAAAAAAAABBO1AoAAAAAAAAAAAAAAAAAQDhRKwAAAAAAAAAAAAAAAAAA4UStAAAAAAAAAAAAAAAAAACEE7UCAAAAAAAAAAAAAAAAABBO1AoAAAAAAAAAAAAAAAAAQDhRKwAAAAAAAAAAAAAAAAAA4UStAAAAAAAAAAAAAAAAAACEE7UCAAAAAAAA8A97d2zDQAgEQNBIbor+gy8LV+DAEvsvrJkCTmQHwQoAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAIDcWGs9fQYAALjPGGPLHBdpAAAAAAAAAAAAAAD4iZ9aAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAA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AAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiNtdbTZwAAgPuMMbbMcZEGAAAAAAAAAAAAAICf+KkVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAA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AAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyIlaAQAAAAAAAAAAAAAAAADIiVoBAAAAAAAAAAAAAAAAAMiJWgEAAAAAAAAAAAAAAAAAyC3btp19BwAAOM6yLLuc44c0AAAAAAAAAAAAAAD8iTe1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJATtQIAAAAAAAAAAAAAAAAAkBO1AgAAAAAAAAAAAAAAAACQE7UCAAAAAAAAAAAAAAAAAJB7nn0BmN4YY5dz1nXd5RwAAAD4Jp67AWAudjcATGSvxf2wuwHgEB66AWAudjcAwCve1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABATtQKAAAAAAAAAAAAAAAAAEBO1AoAAAAAAAAAAAAAAAAAQE7UCgAAAAAAAAAAAAAAAABAbtm27ew7AADAcZZl2eUcP6QBAAAAAAAAAAAAAOBPvKkVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAJ98IBgAAH+JJREFUAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAAAAAAAAAAAAAAAICcqBUAAAAAAAAAAAAAAAAAgJyoFQAAAAAAAAAAAAAAAACAnKgVAAAA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AAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAAAgJ2oFAAAAAAAAAAAAAAAAACAnagUAAAAAAAAAAAAAAAAAICdqBQAAAAAAAAAAAAAAAG77diwAAAAAMMjfehT7yiMA2EmtAAAAAAAAAAAAAAAAAADspFYAAAAAAAAAAAAAAAAAAHZSKwAAAAAAAAAAAAAAAAAAO6kVAAAAAAAAAAAAAAAAAICd1AoAAAAAAAAAAAAAAAAAwE5qBQAAAAAAAAAAAAAAAABgJ7UCAAAAAAAAAAAAAAAAALCTWgEAAAAAAAAAAAAAAAAA2EmtAAAAAAAAAAAAAAAAAADspFYAAAAAAAAAAAAAAAAAAHZSKwAAAAAAAAAAAAAAAAAAO6kVAAAAAAAAAAAAAAAAAICd1AoAAAAAAAAAAAAAAAAAwE5qBQAAAAAAAAAAAAAAAABgJ7UCAAAAAAAAAAAAAAAAALCTWgEAAAAAAAAAAAAAAAAA2EmtAAAAAAAAAAAAAAAAAADspFYAAAAAAAAAAAAAAAAAAHZSKwAAAAAAAAAAAAAAAAAAO6kVAAAAAAAAAAAAAAAAAICd1AoAAAAAAAAAAAAAAAAAwE5qBQAAAAAAAAAAAAAAAABgJ7UCAAAAAAAAAAAAAAAAALCTWgEAAAAAAAAAAAAAAAAA2EmtAAAAAAAAAAAAAAAAAADsAmIeM7La1XzAAAAAAElFTkSuQmCC" - } - }, - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "1842c5bf-4113-406b-b2c7-bc2535e9dd6c", - "showInput": false - }, - "source": [ - "### Pareto Optimality\n", - "\n", - "In a multi-objective optimization problem, there typically is no single best solution. Rather, the *goal* is to identify the set of Pareto optimal solutions such that any improvement in one objective means deteriorating another. Provided with the Pareto set, decision-makers can select an objective trade-off according to their preferences. In the plot below, the red dots are the Pareto optimal solutions (assuming both objectives are to be minimized).\n", - "![pareto front](attachment:pareto_front%20%281%29.png)" - ] - }, - { - "attachments": { - "hv_figure%20%281%29.png": { - "image/png": "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AAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg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rFQA4BXv6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgG47juPuOwAAAAAAAAAAAAAAAADAb+U9PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAKBD41sAABGaSURBVAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAAAAAAAAAA0On0AAAAAAAAAAAAAAAAAKDT6QEAAAAAAAAAAAAAAABAp9MDAAAAAAAAAAAAAAAAgE6nBwAAAAAAAAAAAAAAAACdTg8AAAAAAAAAAAAAAAAAOp0eAAAAAAAAAAAAAAAAAHQ6PQAAAAAAAAAAAAAAAADodHoAAAAAAAAA/9q7g9sKYSiKgkRKU/S/oCzSgjlfMU48U4DFXbzlEQAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA6HR6AAAAAAAAAAAAAAAAANDp9AAAAAAAAAAAAAAAAACg0+kBAAAAAAAAAAAAAAAAQKfTAwAAAAAAAAAAAAAAAIBOpwcAAAAAAAAAAAAAAAAAnU4PAAAAAAAAAAAAAAAAADqdHgAAAAAAAAAAAAAAAAB0Oj0AAAAAAAAAAAAAAAAA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" - } - }, - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "cefa89be-ef41-40d9-9458-d6faed3c6c91", - "showInput": false - }, - "source": [ - "### Evaluating the Quality of a Pareto Front (Hypervolume)\n", - "\n", - "Given a reference point $ r \\in \\mathbb R^M$, which we represent as a list of M `ObjectiveThreshold`s, one for each coordinate, the hypervolume (HV) of a Pareto set $\\mathcal P = \\{ f(x_i)\\}_{i=1}^{|\\mathcal P|}$ is the volume of the space dominated (superior in every one of our M objectives) by $\\mathcal P$ and bounded from above by a point $ r$. The reference point should be set to be slightly worse (10% is reasonable) than the worst value of each objective that a decision maker would tolerate. In the figure below, the grey area is the hypervolume in this 2-objective problem.\n", - "![hv_figure](attachment:hv_figure%20%281%29.png)" - ] - }, - { - "attachments": { - "objective_thresholds_comparison.png": { - "image/png": "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Hgw1OCBqOHupVwQIECBAgACByRUQ2J/csbfkBAgQIECAAAECJySQO02zXb16Nc6fP19lQsqIOqHB8LYECBAgQIAAAQIECBAgQIAAAQIERkBAYH8EBkkXCRAgQIAAAQIExk9ARtT4jaklIkCAAAECBAgQIECAAAECBAgQIHBUAk6MdFSy5kuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBA5BQGD/EBDNggABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIHJWAwP5RyZovAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4BAGB/UNANAsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHBUAgL7RyVrvgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4BAEBPYPAdEsCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAUQkI7B+VrPkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFDEBDYPwREsyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAkclILB/VLLmS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEDkGgeQjzMAsCBAgQIECAAAECBAgMtUCntxedXie2u9vlei/6/X7USo9rtXpMNdrlMhXteivq5b5GgAABAgQIECBAgAABAgQIECBAYNgEBPaHbUT0hwABAgQIECBAgACBQxfIgP7q7lrc33oQT3aexF4J7mcQv1lvxtnZM3Fm6nQstReiXYL8GgECBAgQIECAAAECBAgQIECAAIFhExDYH7YR0R8CBAgQIEDgyAT60Y9erxe7ve7TbN1aLVr1RgnsNY7sPc2YAIGTFeiW7/tubzcebj+KO5v3YqOzWbL2d6LX71UZ+1WG/mZEp9sp2fu1WIz5aDVa5bnM59cIECBAgAABAgQIECBAgAABAgQIDIeAwP5wjINeECBAgAABAscgkKW3t0vw7uFWZut2o1EC+svTc7HQmqkCesfQBW9BgMAxC3T6e7G+uxEPth/G3RLYzwN8+vv70O/Go53V2CnB/tnmTCnH36yy+DPIrxEgQIAAAQIECBAgQIAAAQIECBAYFgGB/WEZCf0gQIAAAQIEjkxgc28n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IECAAAECBAgQIECAAAECBAgQIECAwCQJCOxP0mhbVgIERkig5OLXmpHZ+1PlEqUwf5bcf1p0X+n9ERpIXSVAgAABAgQIECBAgAABAgQIECBAgAABAgQIvLWAwP5bE5oBAQIEjlJAMP8odc2bAAECBAgQIECAAAECBAgQIECAAAECBAgQIDAKAk7OPAqjpI8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMLECAvsTO/QWnAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRGQUBgfxRGSR8JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYGIFBPYndugtOAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiMgoDA/iiMkj4SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwMQKCOxP7NBbcAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYBQGB/VEYJX0kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYkVENif2KG34AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwCgIC+6MwSvpIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhMrILA/sUNvwQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgFAQE9kdhlPSRAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCZWQGB/YofeghMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAKAgI7I/CKOkjAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEysgMD+xA69BSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBURAQ2B+FUdJHAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJhYAYH9iR16C06AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECoyDQHIVOHkcf+/1+9Hq9ePLkSXz55Zfx6NGjWF9fj+np6VhYWIhr167FqVOnYmpqKmq12nF0yXsQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEQ2N/3Idjd3Y27d+/Gr3/96/jqq69idXU1ZmZm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gACBIRYQ2B/iwdE1AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAgsO8zQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEhlhAYH+IB0fXCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAwL7PAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGGIBgf0hHhxdI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECAvs+AwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYIgFBPaHeHB0jQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINBEQIECAAAECBCZFoNftRWd3LzaebEav2496ox4z89MxPdOOWq32HcPjra14tLkZq5tbsbm7G/1+P9rNZsy0W3F+YTFOz81GvUy//zXfvdgNAgQIECBAgAABAgQIECBAgAABAgQIECBwyAIC+4cManYECBAgQIDA8AlkYL7X68fudifWVzfi9o37sdfpRrME6lcunYrGykI0SuC+Vq9VQfz76+vxyZ07cf3e/bj3ZL167fz0VJxdmI+/uno15srrplqtaOw7GGD4llqPCBAgQIAAAQIECBAgQIAAAQIECBAgQGBcBAT2x2UkLQcBAgQIECDwUoHVB0/i7s2H8fnHN+KbL+7G43K/W7L3G41GLJ9diPNXTseP/837MX1mLu5ub8Snd+/Gp7fvxJOdndje7US/zHlzd6dk8G/GbmevCvb//OqVOLe48NL39AQBAgQIECBAgAABAgQIECBAgAABAgQIEDgsAYH9w5I0HwIECBAgQGDoBDJTv/wX9289io//vz/G7359PW58fjt2NneqLPx6rZTiX5iOc5dOR7NVSu1fW4qvehtx/cGD+OL+/arUfim4Xy3XZjWvfmyVQP/Gzm5cPrUcS7Mz0S4HByjJP3RDr0MECBAgQIAAAQIECBAgQIAAAQIECBAYKwGB/bEaTgtDgAABAgQI7BfI8vud3b24cf1O/OYffh9rj9ajW0rw1+v1cnk6ZWenEw/urMa//OqTaN5ciMdX2rHW3Y0M+u9vg+D91u5uPNxYjztra3Fmfi7Ozs9HU0n+/VRuEyBAgAABAgQIECBAgAABAgQIECBAgMAhCwjsHzKo2REg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" - } - }, - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "1819970e-9b48-4b57-b280-35bf2c4919d2", - "showInput": false - }, - "source": [ - "### Set Objective Thresholds to focus candidate generation in a region of interest\n", - "\n", - "The below plots show three different sets of points generated by the qNEHVI [1] algorithm with different objective thresholds (aka reference points). Note that here we use absolute thresholds, but thresholds can also be relative to a status_quo arm.\n", - "\n", - "The first plot shows the points without the `ObjectiveThreshold`s visible (they're set far below the origin of the graph).\n", - "\n", - "The second shows the points generated with (-18, -6) as thresholds. The regions violating the thresholds are greyed out. Only the white region in the upper right exceeds both threshold, points in this region dominate the intersection of these thresholds (this intersection is the reference point). Only points in this region contribute to the hypervolume objective. A few exploration points are not in the valid region, but almost all the rest of the points are.\n", - "\n", - "The third shows points generated with a very strict pair of thresholds, (-18, -2). Only the white region in the upper right exceeds both thresholds. Many points do not lie in the dominating region, but there are still more focused there than in the second examples.\n", - "![objective_thresholds_comparison.png](attachment:objective_thresholds_comparison.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "f2f39a8f-279f-49a1-b645-d51caed24d9c" - }, - "source": [ - "### Further Information\n", - "A deeper explanation of our the qNEHVI [1] and qNParEGO [2] algorithms this notebook explores can be found at \n", - "\n", - "[1] [S. Daulton, M. Balandat, and E. Bakshy. Parallel Bayesian Optimization of Multiple Noisy Objectives with Expected Hypervolume Improvement. Advances in Neural Information Processing Systems 34, 2021.](https://arxiv.org/abs/2105.08195)\n", - "\n", - "[2] [S. Daulton, M. Balandat, and E. Bakshy. Differentiable Expected Hypervolume Improvement for Parallel Multi-Objective Bayesian Optimization. Advances in Neural Information Processing Systems 33, 2020.](https://arxiv.org/abs/2006.05078)\n", - "\n", - "In addition, the underlying BoTorch implementation has a researcher-oriented tutorial at https://botorch.org/tutorials/multi_objective_bo." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "0ac396dd-8040-4f87-8abe-472127734aef" - }, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191302514, - "executionStopTime": 1628191302546, - "hidden_ranges": [], - "originalKey": "500597fc-a996-48f4-a8fe-defd429162b8", - "requestMsgId": "07dd11c9-cd20-4bfa-b2d9-9a7bf70b2e44" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "from ax.core.data import Data\n", - "from ax.core.experiment import Experiment\n", - "from ax.core.metric import Metric\n", - "from ax.core.objective import MultiObjective, Objective\n", - "from ax.core.optimization_config import (\n", - " MultiObjectiveOptimizationConfig,\n", - " ObjectiveThreshold,\n", - ")\n", - "\n", - "from ax.core.parameter import ParameterType, RangeParameter\n", - "from ax.core.search_space import SearchSpace\n", - "from ax.metrics.noisy_function import NoisyFunctionMetric\n", - "\n", - "# Analysis utilities, including a method to evaluate hypervolumes\n", - "from ax.modelbridge.modelbridge_utils import observed_hypervolume\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.runners.synthetic import SyntheticRunner\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "\n", - "# BoTorch acquisition class for ParEGO\n", - "from botorch.acquisition.multi_objective.parego import qLogNParEGO" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "0b43c263-41da-4aa8-99f3-4a2a7fc49e4b" - }, - "source": [ - "## Define experiment configurations" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "963a036d-a250-4e3c-9570-afe6f2192f9a" - }, - "source": [ - "### Search Space" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191313915, - "executionStopTime": 1628191313944, - "hidden_ranges": [], - "originalKey": "90637eb4-730f-4f3d-8712-875bf88d6c2d", - "requestMsgId": "fbb9db8e-5414-4add-ad10-0bd00583ebf5" - }, - "outputs": [], - "source": [ - "x1 = RangeParameter(name=\"x1\", lower=0, upper=1, parameter_type=ParameterType.FLOAT)\n", - "x2 = RangeParameter(name=\"x2\", lower=0, upper=1, parameter_type=ParameterType.FLOAT)\n", - "\n", - "search_space = SearchSpace(parameters=[x1, x2])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "ac3cf1fe-d39d-48bb-a31d-e3ee0d70418b", - "showInput": false - }, - "source": [ - "### MultiObjectiveOptimizationConfig\n", - "\n", - "To optimize multiple objective we must create a `MultiObjective` containing the metrics we'll optimize and `MultiObjectiveOptimizationConfig` (which contains `ObjectiveThreshold`s) instead of our more typical `Objective` and `OptimizationConfig`\n", - "\n", - "We define `NoisyFunctionMetric`s to wrap our synthetic Branin-Currin problem's outputs. Add noise to see how robust our different optimization algorithms are." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191319191, - "executionStopTime": 1628191319220, - "hidden_ranges": [], - "originalKey": "9fdb11b6-7845-4f06-90fd-527fee088d76", - "requestMsgId": "febe0d60-fe60-4d55-ba6f-724c8ce7601d" - }, - "outputs": [], - "source": [ - "class MetricA(NoisyFunctionMetric):\n", - " def f(self, x: np.ndarray) -> float:\n", - " return float(branin_currin(torch.tensor(x))[0])\n", - "\n", - "\n", - "class MetricB(NoisyFunctionMetric):\n", - " def f(self, x: np.ndarray) -> float:\n", - " return float(branin_currin(torch.tensor(x))[1])\n", - "\n", - "\n", - "metric_a = MetricA(\"a\", [\"x1\", \"x2\"], noise_sd=0.0, lower_is_better=False)\n", - "metric_b = MetricB(\"b\", [\"x1\", \"x2\"], noise_sd=0.0, lower_is_better=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191321755, - "executionStopTime": 1628191321791, - "hidden_ranges": [], - "originalKey": "27065b03-7234-49c1-b3ae-f6442ec4e3d6", - "requestMsgId": "d4010fca-5cbd-4a41-a779-cfa97ec15cc3" - }, - "outputs": [], - "source": [ - "mo = MultiObjective(\n", - " objectives=[Objective(metric=metric_a), Objective(metric=metric_b)],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1628191323464, - "executionStopTime": 1628191323491, - "originalKey": "c58b70de-06b5-4e03-8958-c3c55d4c295a", - "requestMsgId": "27e7efe5-d29e-4211-944e-41e6de065299" - }, - "outputs": [], - "source": [ - "objective_thresholds = [\n", - " ObjectiveThreshold(metric=metric, bound=val, relative=False)\n", - " for metric, val in zip(mo.metrics, branin_currin.ref_point)\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191325491, - "executionStopTime": 1628191325519, - "hidden_ranges": [], - "originalKey": "4b1ce9ba-e2e5-4a8a-9c15-5d01a2940a55", - "requestMsgId": "314ea591-0d2e-4fb5-b091-2aa2ea27f0eb" - }, - "outputs": [], - "source": [ - "optimization_config = MultiObjectiveOptimizationConfig(\n", - " objective=mo,\n", - " objective_thresholds=objective_thresholds,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "3b7b797c-2478-48d6-84ea-c62a886db31f", - "showInput": false - }, - "source": [ - "## Define experiment creation utilities\n", - "\n", - "These construct our experiment, then initialize with Sobol points before we fit a Gaussian Process model to those initial points." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1628191328765, - "executionStopTime": 1628191328792, - "originalKey": "a52ace6c-8144-446b-97d5-2f27879ca187", - "requestMsgId": "6a222fb5-231e-4476-86a6-c29ca5113332" - }, - "outputs": [], - "source": [ - "# Reasonable defaults for number of quasi-random initialization points and for subsequent model-generated trials.\n", - "N_INIT = 6\n", - "N_BATCH = 25" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191330913, - "executionStopTime": 1628191330991, - "hidden_ranges": [], - "originalKey": "9fd6ec68-4c53-4276-a98a-61431cdc05d5", - "requestMsgId": "8f659995-6b8f-4544-8392-03daaf8220b8" - }, - "outputs": [], - "source": [ - "def build_experiment():\n", - " experiment = Experiment(\n", - " name=\"pareto_experiment\",\n", - " search_space=search_space,\n", - " optimization_config=optimization_config,\n", - " runner=SyntheticRunner(),\n", - " )\n", - " return experiment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191334273, - "executionStopTime": 1628191334299, - "hidden_ranges": [], - "originalKey": "a8eef6a6-1d53-494a-907f-10ca35492a8c", - "requestMsgId": "b207dbd4-0a53-4efd-bbb9-9dee8835d60b" - }, - "outputs": [], - "source": [ - "## Initialize with Sobol samples\n", - "def initialize_experiment(experiment):\n", - " sobol = Generators.SOBOL(search_space=experiment.search_space, seed=1234)\n", - " for _ in range(N_INIT):\n", - " experiment.new_trial(sobol.gen(1)).run()\n", - " return experiment.fetch_data()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "0c918735-9fda-4c36-90b5-163443e66c72", - "showInput": false - }, - "source": [ - "# Sobol\n", - "We use quasirandom points as a fast baseline for evaluating the quality of our multi-objective optimization algorithms." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191356513, - "executionStopTime": 1628191356896, - "hidden_ranges": [], - "originalKey": "5ee13832-804a-413f-a6bc-1f8f96a817d8", - "requestMsgId": "5b40f1e6-45b9-40e4-8569-9d459e98ca57" - }, - "outputs": [], - "source": [ - "sobol_experiment = build_experiment()\n", - "sobol_data = initialize_experiment(sobol_experiment)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191362562, - "executionStopTime": 1628191408255, - "hidden_ranges": [], - "originalKey": "0c6a6d44-29db-43dd-982d-dc664d00b009", - "requestMsgId": "8aca7b5b-aab8-4a39-9a49-d7b1e0c714c5" - }, - "outputs": [], - "source": [ - "sobol_model = Generators.SOBOL(\n", - " experiment=sobol_experiment,\n", - " data=sobol_data,\n", - ")\n", - "sobol_hv_list = []\n", - "for i in range(N_BATCH):\n", - " generator_run = sobol_model.gen(1)\n", - " trial = sobol_experiment.new_trial(generator_run=generator_run)\n", - " trial.run()\n", - " exp_df = exp_to_df(sobol_experiment)\n", - " outcomes = np.array(exp_df[[\"a\", \"b\"]], dtype=np.double)\n", - " # Fit a GP-based model in order to calculate hypervolume.\n", - " # We will not use this model to generate new points.\n", - " dummy_model = Generators.BOTORCH_MODULAR(\n", - " experiment=sobol_experiment,\n", - " data=sobol_experiment.fetch_data(),\n", - " )\n", - " try:\n", - " hv = observed_hypervolume(modelbridge=dummy_model)\n", - " except:\n", - " hv = 0\n", - " print(\"Failed to compute hv\")\n", - " sobol_hv_list.append(hv)\n", - " print(f\"Iteration: {i}, HV: {hv}\")\n", - "\n", - "sobol_outcomes = np.array(exp_to_df(sobol_experiment)[[\"a\", \"b\"]], dtype=np.double)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "767a7e9b-8902-424e-bfc4-f7afdba47302" - }, - "source": [ - "## qNEHVI\n", - "Noisy Expected Hypervolume Improvement. This is our current recommended algorithm for multi-objective optimization." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191422463, - "executionStopTime": 1628191422803, - "hidden_ranges": [], - "originalKey": "8fc6bfb4-3012-4ce2-99ed-288378098c50", - "requestMsgId": "0fd945a2-ac45-4a74-82cc-7173e15ced85" - }, - "outputs": [], - "source": [ - "ehvi_experiment = build_experiment()\n", - "ehvi_data = initialize_experiment(ehvi_experiment)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191425090, - "executionStopTime": 1628191500240, - "hidden_ranges": [], - "originalKey": "27dd9425-b77e-4027-8412-30dd40c5abf1", - "requestMsgId": "65430b82-de1e-4946-9d8d-4a75762354c1" - }, - "outputs": [], - "source": [ - "ehvi_hv_list = []\n", - "ehvi_model = None\n", - "for i in range(N_BATCH):\n", - " ehvi_model = Generators.BOTORCH_MODULAR(\n", - " experiment=ehvi_experiment,\n", - " data=ehvi_data,\n", - " )\n", - " generator_run = ehvi_model.gen(1)\n", - " trial = ehvi_experiment.new_trial(generator_run=generator_run)\n", - " trial.run()\n", - " ehvi_data = Data.from_multiple_data([ehvi_data, trial.fetch_data()])\n", - "\n", - " exp_df = exp_to_df(ehvi_experiment)\n", - " outcomes = np.array(exp_df[[\"a\", \"b\"]], dtype=np.double)\n", - " try:\n", - " hv = observed_hypervolume(modelbridge=ehvi_model)\n", - " except:\n", - " hv = 0\n", - " print(\"Failed to compute hv\")\n", - " ehvi_hv_list.append(hv)\n", - " print(f\"Iteration: {i}, HV: {hv}\")\n", - "\n", - "ehvi_outcomes = np.array(exp_to_df(ehvi_experiment)[[\"a\", \"b\"]], dtype=np.double)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "e93178b6-5ba4-4c01-b8a2-e05971b7326f", - "showInput": false - }, - "source": [ - "## Plot qNEHVI Pareto Frontier based on model posterior \n", - "\n", - "The plotted points are samples from the fitted model's posterior, not observed samples." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1628191505148, - "executionStopTime": 1628191521900, - "hidden_ranges": [], - "originalKey": "71e013c5-638f-4ba4-bb9a-3e4a7d3eb9fa", - "requestMsgId": "681433c5-fc21-4699-9fe1-8e444c671153" - }, - "outputs": [], - "source": [ - "frontier = compute_posterior_pareto_frontier(\n", - " experiment=ehvi_experiment,\n", - " data=ehvi_experiment.fetch_data(),\n", - " primary_objective=metric_b,\n", - " secondary_objective=metric_a,\n", - " absolute_metrics=[\"a\", \"b\"],\n", - " num_points=20,\n", - ")\n", - "\n", - "render(plot_pareto_frontier(frontier, CI_level=0.90))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "77b2dbce-f1e4-443a-8f81-2e1cbe207301" - }, - "source": [ - "## qNParEGO\n", - "This is a good alternative algorithm for multi-objective optimization when qNEHVI runs too slowly. We use `qLogNParEGO` acquisition function with Modular BoTorch Model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "2f796182-558b-47aa-8072-4dbf40123133" - }, - "outputs": [], - "source": [ - "parego_experiment = build_experiment()\n", - "parego_data = initialize_experiment(parego_experiment)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "72999188-90f5-43e0-b1d9-d468e7d51191" - }, - "outputs": [], - "source": [ - "parego_hv_list = []\n", - "parego_model = None\n", - "for i in range(N_BATCH):\n", - " parego_model = Generators.BOTORCH_MODULAR(\n", - " experiment=parego_experiment,\n", - " data=parego_data,\n", - " botorch_acqf_class=qLogNParEGO,\n", - " )\n", - " generator_run = parego_model.gen(1)\n", - " trial = parego_experiment.new_trial(generator_run=generator_run)\n", - " trial.run()\n", - " parego_data = Data.from_multiple_data([parego_data, trial.fetch_data()])\n", - "\n", - " exp_df = exp_to_df(parego_experiment)\n", - " outcomes = np.array(exp_df[[\"a\", \"b\"]], dtype=np.double)\n", - " try:\n", - " hv = observed_hypervolume(modelbridge=parego_model)\n", - " except:\n", - " hv = 0\n", - " print(\"Failed to compute hv\")\n", - " parego_hv_list.append(hv)\n", - " print(f\"Iteration: {i}, HV: {hv}\")\n", - "\n", - "parego_outcomes = np.array(exp_to_df(parego_experiment)[[\"a\", \"b\"]], dtype=np.double)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "67ded85f-7c58-4c31-8df5-b0d8d07e4299", - "showInput": false - }, - "source": [ - "## Plot qNParEGO Pareto Frontier based on model posterior \n", - "\n", - "The plotted points are samples from the fitted model's posterior, not observed samples." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "3b1f39fd-ef75-4ea4-865b-f7b54b90da07" - }, - "outputs": [], - "source": [ - "frontier = compute_posterior_pareto_frontier(\n", - " experiment=parego_experiment,\n", - " data=parego_experiment.fetch_data(),\n", - " primary_objective=metric_b,\n", - " secondary_objective=metric_a,\n", - " absolute_metrics=[\"a\", \"b\"],\n", - " num_points=20,\n", - ")\n", - "\n", - "render(plot_pareto_frontier(frontier, CI_level=0.90))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "collapsed": true, - "hidden_ranges": [], - "jupyter": { - "outputs_hidden": true - }, - "originalKey": "a67f7345-1777-4372-8704-bb80c4c4e783" - }, - "source": [ - "## Plot empirical data" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "collapsed": true, - "hidden_ranges": [], - "jupyter": { - "outputs_hidden": true - }, - "originalKey": "de878adc-0eb2-4599-8c1b-e0adbc0c0765", - "showInput": false - }, - "source": [ - "#### Plot observed hypervolume, with color representing the iteration that a point was generated on.\n", - "\n", - "To examine optimization process from another perspective, we plot the collected observations under each algorithm where the color corresponds to the BO iteration at which the point was collected. The plot on the right for $q$NEHVI shows that the $q$NEHVI quickly identifies the Pareto frontier and most of its evaluations are very close to the Pareto frontier. $q$NParEGO also identifies has many observations close to the Pareto frontier, but relies on optimizing random scalarizations, which is a less principled way of optimizing the Pareto front compared to $q$NEHVI, which explicitly attempts focuses on improving the Pareto front. Sobol generates random points and has few points close to the Pareto front." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "c6296697-ef07-422d-b965-35e4e5104a12" - }, - "outputs": [], - "source": [ - "import matplotlib\n", - "import numpy as np\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.cm import ScalarMappable\n", - "\n", - "%matplotlib inline\n", - "\n", - "\n", - "fig, axes = plt.subplots(1, 3, figsize=(20, 6))\n", - "algos = [\"Sobol\", \"qNParEGO\", \"qNEHVI\"]\n", - "outcomes_list = [sobol_outcomes, parego_outcomes, ehvi_outcomes]\n", - "cm = matplotlib.colormaps[\"viridis\"]\n", - "BATCH_SIZE = 1\n", - "\n", - "n_results = N_BATCH * BATCH_SIZE + N_INIT\n", - "batch_number = torch.cat(\n", - " [\n", - " torch.zeros(N_INIT),\n", - " torch.arange(1, N_BATCH + 1).repeat(BATCH_SIZE, 1).t().reshape(-1),\n", - " ]\n", - ").numpy()\n", - "for i, train_obj in enumerate(outcomes_list):\n", - " x = i\n", - " sc = axes[x].scatter(\n", - " train_obj[:n_results, 0],\n", - " train_obj[:n_results, 1],\n", - " c=batch_number[:n_results],\n", - " alpha=0.8,\n", - " )\n", - " axes[x].set_title(algos[i])\n", - " axes[x].set_xlabel(\"Objective 1\")\n", - " axes[x].set_xlim(-150, 5)\n", - " axes[x].set_ylim(-15, 0)\n", - "axes[0].set_ylabel(\"Objective 2\")\n", - "norm = plt.Normalize(batch_number.min(), batch_number.max())\n", - "sm = ScalarMappable(norm=norm, cmap=cm)\n", - "sm.set_array([])\n", - "fig.subplots_adjust(right=0.9)\n", - "cbar_ax = fig.add_axes([0.93, 0.15, 0.01, 0.7])\n", - "cbar = fig.colorbar(sm, cax=cbar_ax)\n", - "cbar.ax.set_title(\"Iteration\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "ca12287f-c7b8-4ef8-8eb9-57760eda5fed", - "showInput": true - }, - "source": [ - "# Hypervolume statistics\n", - "The hypervolume of the space dominated by points that dominate the reference point." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "ec8b764b-c27d-4722-9e3d-d81cebb3624a" - }, - "source": [ - "#### Plot the results\n", - "The plot below shows a common metric of multi-objective optimization performance when the true Pareto frontier is known: the log difference between the hypervolume of the true Pareto front and the hypervolume of the approximate Pareto front identified by each algorithm. The log hypervolume difference is plotted at each step of the optimization for each of the algorithms.\n", - "\n", - "The plot show that $q$NEHVI vastly outperforms $q$NParEGO which outperforms the Sobol baseline." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "d50b98bc-5ab1-4826-a5b2-474a13f4bae0" - }, - "outputs": [], - "source": [ - "iters = np.arange(1, N_BATCH + 1)\n", - "log_hv_difference_sobol = np.log10(branin_currin.max_hv - np.asarray(sobol_hv_list))[\n", - " : N_BATCH + 1\n", - "]\n", - "log_hv_difference_parego = np.log10(branin_currin.max_hv - np.asarray(parego_hv_list))[\n", - " : N_BATCH + 1\n", - "]\n", - "log_hv_difference_ehvi = np.log10(branin_currin.max_hv - np.asarray(ehvi_hv_list))[\n", - " : N_BATCH + 1\n", - "]\n", - "\n", - "fig, ax = plt.subplots(1, 1, figsize=(8, 6))\n", - "ax.plot(iters, log_hv_difference_sobol, label=\"Sobol\", linewidth=1.5)\n", - "ax.plot(iters, log_hv_difference_parego, label=\"qNParEGO\", linewidth=1.5)\n", - "ax.plot(iters, log_hv_difference_ehvi, label=\"qNEHVI\", linewidth=1.5)\n", - "ax.set(\n", - " xlabel=\"number of observations (beyond initial points)\",\n", - " ylabel=\"Log Hypervolume Difference\",\n", - ")\n", - "ax.legend(loc=\"lower right\")" - ] - } - ], - "metadata": { - "fileHeader": "", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/raytune_pytorch_cnn/raytune_pytorch_cnn.ipynb b/tutorials/raytune_pytorch_cnn/raytune_pytorch_cnn.ipynb deleted file mode 100644 index c71b9537c9b..00000000000 --- a/tutorials/raytune_pytorch_cnn/raytune_pytorch_cnn.ipynb +++ /dev/null @@ -1,345 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "6dba2bea-d97e-4545-9803-4242850e1807" - }, - "source": [ - "# Ax Service API with RayTune on PyTorch CNN\n", - "\n", - "Ax integrates easily with different scheduling frameworks and distributed training frameworks. In this example, Ax-driven optimization is executed in a distributed fashion using [RayTune](https://ray.readthedocs.io/en/latest/tune.html). \n", - "\n", - "RayTune is a scalable framework for hyperparameter tuning that provides many state-of-the-art hyperparameter tuning algorithms and seamlessly scales from laptop to distributed cluster with fault tolerance. RayTune leverages [Ray](https://ray.readthedocs.io/)'s Actor API to provide asynchronous parallel and distributed execution.\n", - "\n", - "Ray 'Actors' are a simple and clean abstraction for replicating your Python classes across multiple workers and nodes. Each hyperparameter evaluation is asynchronously executed on a separate Ray actor and reports intermediate training progress back to RayTune. Upon reporting, RayTune then uses this information to performs actions such as early termination, re-prioritization, or checkpointing." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "fe7a9417-4bde-46d2-9de3-af1bc73bde45" - }, - "outputs": [], - "source": [ - "import logging\n", - "\n", - "from ray import tune\n", - "from ray.train import report\n", - "from ray.tune.search.ax import AxSearch\n", - "\n", - "logger = logging.getLogger(tune.__name__)\n", - "logger.setLevel(\n", - " level=logging.CRITICAL\n", - ") # Reduce the number of Ray warnings that are not relevant here." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "19956234-25ae-4e72-9d72-dbcd1b90e530" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import torch\n", - "from ax.plot.contour import plot_contour\n", - "from ax.plot.trace import optimization_trace_single_method\n", - "from ax.service.ax_client import AxClient\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "from ax.utils.tutorials.cnn_utils import CNN, evaluate, load_mnist, train\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "a26e18f8-caa7-411d-809a-61a9229cd6c6" - }, - "source": [ - "## 1. Initialize client\n", - "We specify `enforce_sequential_optimization` as False, because Ray runs many trials in parallel. With the sequential optimization enforcement, `AxClient` would expect the first few trials to be completed with data before generating more trials.\n", - "\n", - "When high parallelism is not required, it is best to enforce sequential optimization, as it allows for achieving optimal results in fewer (but sequential) trials. In cases where parallelism is important, such as with distributed training using Ray, we choose to forego minimizing resource utilization and run more trials in parallel." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "a91e1cb2-999a-4b88-a2d2-85d0acaa8854" - }, - "outputs": [], - "source": [ - "ax = AxClient(enforce_sequential_optimization=False)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "1766919c-fb6f-4271-a8e1-6f972eee78f3" - }, - "source": [ - "## 2. Set up experiment\n", - "Here we set up the search space and specify the objective; refer to the Ax API tutorials for more detail." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "37e367d4-d09d-425b-98f7-c8849d9be4b7" - }, - "outputs": [], - "source": [ - "MINIMIZE = False # Whether we should be minimizing or maximizing the objective" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "777c8d33-2cd1-4425-b45f-2a44922dce7d" - }, - "outputs": [], - "source": [ - "ax.create_experiment(\n", - " name=\"mnist_experiment\",\n", - " parameters=[\n", - " {\"name\": \"lr\", \"type\": \"range\", \"bounds\": [1e-6, 0.4], \"log_scale\": True},\n", - " {\"name\": \"momentum\", \"type\": \"range\", \"bounds\": [0.0, 1.0]},\n", - " ],\n", - " objective_name=\"mean_accuracy\",\n", - " minimize=MINIMIZE,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "589e4d80-02ae-461d-babc-0f96718f623e" - }, - "outputs": [], - "source": [ - "ax.experiment.optimization_config.objective.minimize" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "773a2c32-4ff3-4e92-8996-325504ce953e" - }, - "outputs": [], - "source": [ - "load_mnist(\n", - " data_path=\"~/.data\"\n", - ") # Pre-load the dataset before the initial evaluations are executed." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "5fec848a-3538-489c-bcdd-a74051f48140" - }, - "source": [ - "## 3. Define how to evaluate trials\n", - "Since we use the Ax Service API here, we evaluate the parameterizations that Ax suggests, using RayTune. The evaluation function follows its usual pattern, taking in a parameterization and outputting an objective value. For detail on evaluation functions, see [Trial Evaluation](https://ax.dev/docs/runner.html). " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "75fce84d-35bd-45b5-b55e-f52baf26db03" - }, - "outputs": [], - "source": [ - "def train_evaluate(parameterization):\n", - " device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", - " train_loader, valid_loader, test_loader = load_mnist(data_path=\"~/.data\")\n", - " net = train(\n", - " net=CNN(),\n", - " train_loader=train_loader,\n", - " parameters=parameterization,\n", - " dtype=torch.float,\n", - " device=device,\n", - " )\n", - " report(\n", - " {\n", - " \"mean_accuracy\": evaluate(\n", - " net=net,\n", - " data_loader=valid_loader,\n", - " dtype=torch.float,\n", - " device=device,\n", - " )\n", - " }\n", - " )" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "dda3574c-5967-43ea-8d23-7a151dc59ec9" - }, - "source": [ - "## 4. Run optimization\n", - "Execute the Ax optimization and trial evaluation in RayTune using [AxSearch algorithm](https://ray.readthedocs.io/en/latest/tune-searchalg.html#ax-search). \n", - "We only run 10 trials for demonstration. It is generally recommended to run more trials for best results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "1d768bb2-d46b-4c4c-879e-3242af7555f4" - }, - "outputs": [], - "source": [ - "# Set up AxSearcher in RayTune\n", - "algo = AxSearch(ax_client=ax)\n", - "# Wrap AxSearcher in a concurrently limiter, to ensure that Bayesian optimization receives the\n", - "# data for completed trials before creating more trials\n", - "algo = tune.search.ConcurrencyLimiter(algo, max_concurrent=3)\n", - "tune.run(\n", - " train_evaluate,\n", - " num_samples=10,\n", - " search_alg=algo,\n", - " verbose=0, # Set this level to 1 to see status updates and to 2 to also see trial results.\n", - " # To use GPU, specify: resources_per_trial={\"gpu\": 1}.\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "cb00f812-e9e5-4208-a680-adf6619d74c4" - }, - "source": [ - "## 5. Retrieve the optimization results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "2ec54675-d0ad-4eac-aaf3-66b593037cce" - }, - "outputs": [], - "source": [ - "best_parameters, values = ax.get_best_parameters()\n", - "best_parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "50c764a6-a630-4935-9c07-ea84045e0ecc" - }, - "outputs": [], - "source": [ - "means, covariances = values\n", - "means" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "originalKey": "12a87817-4409-4f07-a912-8d60eff71d68" - }, - "source": [ - "## 6. Plot the response surface and optimization trace" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "3742f35b-6b28-49ae-a606-a138459f4964", - "scrolled": false - }, - "outputs": [], - "source": [ - "render(\n", - " plot_contour(\n", - " model=ax.generation_strategy.model,\n", - " param_x=\"lr\",\n", - " param_y=\"momentum\",\n", - " metric_name=\"mean_accuracy\",\n", - " )\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "6dfd23ca-1c93-4846-8e85-4560f9e40304" - }, - "outputs": [], - "source": [ - "# `plot_single_method` expects a 2-d array of means, because it expects to average means from multiple\n", - "# optimization runs, so we wrap out best objectives array in another array.\n", - "best_objectives = np.array(\n", - " [[trial.objective_mean * 100 for trial in ax.experiment.trials.values()]]\n", - ")\n", - "best_objective_plot = optimization_trace_single_method(\n", - " y=np.maximum.accumulate(best_objectives, axis=1),\n", - " title=\"Model performance vs. # of iterations\",\n", - " ylabel=\"Accuracy\",\n", - ")\n", - "render(best_objective_plot)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "python3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.15" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/saasbo/saasbo.ipynb b/tutorials/saasbo/saasbo.ipynb deleted file mode 100644 index 49ae9c4b4c7..00000000000 --- a/tutorials/saasbo/saasbo.ipynb +++ /dev/null @@ -1,385 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "originalKey": "1f779465-f9cc-4b17-9b5a-5960cf602273" - }, - "source": [ - "# High-Dimensional Bayesian Optimization with SAASBO\n", - "\n", - "This tutorial shows how to use the Sparse Axis-Aligned Subspace Bayesian Optimization (SAASBO) method for high-dimensional Bayesian optimization [1]. SAASBO places strong priors on the inverse lengthscales to avoid overfitting in high-dimensional spaces. Specifically, SAASBO uses a hierarchical sparsity prior consisting of a global shrinkage parameter $\\tau \\sim \\mathcal{HC}(\\beta)$ and inverse lengthscales $\\rho_d \\sim \\mathcal{HC}(\\tau)$ for $d=1, ..., D$, where $\\mathcal{HC}$ is the half-Cauchy distribution. While half-Cauchy priors favor values near zero they also have heavy tails, which allows the inverse lengthscales of the most important parameters to escape zero. To do inference in the SAAS model we use Hamiltonian Monte Carlo (HMC) as we found that to outperform MAP inference.\n", - "\n", - "We find that SAASBO performs well on problems with hundreds of dimensions. As we rely on HMC and in particular the No-U-Turn-Sampler (NUTS) for inference, the overhead of SAASBO scales cubically with the number of datapoints. Depending on the problem, using more than $100$ evaluations may not be feasible as SAASBO is designed for problems with a limited evaluation budget.\n", - "\n", - "[1] D. Eriksson, M. Jankowiak. High-Dimensional Bayesian Optimization with Sparse Axis-Aligned Subspaces. Proceedings of the Thirty-Seventh Conference on Uncertainty in Artificial Intelligence, 2021." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "36a4c036-4075-4b15-87b2-a399c318f7b6" - }, - "outputs": [], - "source": [ - "import os\n", - "\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import torch\n", - "\n", - "from ax import Data, Experiment, ParameterType, RangeParameter, SearchSpace\n", - "from ax.core.metric import Metric\n", - "from ax.core.objective import Objective\n", - "from ax.core.optimization_config import OptimizationConfig\n", - "from ax.metrics.branin import BraninMetric\n", - "from ax.modelbridge.cross_validation import cross_validate\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.models.torch.botorch_modular.surrogate import Surrogate\n", - "from ax.runners.synthetic import SyntheticRunner\n", - "from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "08bf2c1e-5909-4bde-8829-0fb0d0a29a25" - }, - "outputs": [], - "source": [ - "torch.manual_seed(12345) # To always get the same Sobol points\n", - "tkwargs = {\n", - " \"dtype\": torch.double,\n", - " \"device\": torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "2f9bd4f6-87d6-42d9-b575-f92cf94de7b0" - }, - "source": [ - "## Setup search space and metric\n", - "In this simple experiment we use the Branin function embedded in a 30-dimensional space. Additional resources:\n", - "- To set up a custom metric for your problem, refer to the dedicated section of the Developer API tutorial: https://ax.dev/tutorials/gpei_hartmann_developer.html#8.-Defining-custom-metrics.\n", - "- To avoid needing to setup up custom metrics by Ax Service API: https://ax.dev/tutorials/gpei_hartmann_service.html." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "7697c80d-ab0c-4884-b4c7-c75d24a07e1a" - }, - "outputs": [], - "source": [ - "search_space = SearchSpace(\n", - " parameters=[\n", - " RangeParameter(\n", - " name=f\"x{i}\", parameter_type=ParameterType.FLOAT, lower=-5.0, upper=10.0\n", - " )\n", - " for i in range(25)\n", - " ]\n", - " + [\n", - " RangeParameter(\n", - " name=f\"x{i + 25}\",\n", - " parameter_type=ParameterType.FLOAT,\n", - " lower=0.0,\n", - " upper=15.0,\n", - " )\n", - " for i in range(25)\n", - " ]\n", - ")\n", - "\n", - "optimization_config = OptimizationConfig(\n", - " objective=Objective(\n", - " metric=BraninMetric(\n", - " name=\"objective\",\n", - " param_names=[\"x19\", \"x34\"],\n", - " # Set noise_sd=None if you want to learn the noise, set to 0.0 for no noise\n", - " noise_sd=1e-4, \n", - " ),\n", - " minimize=True,\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "379571df-a141-48f7-84de-f75bc6e8e760" - }, - "source": [ - "## Run benchmark" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "N_INIT = 10\n", - "BATCH_SIZE = 3\n", - "N_BATCHES = 1 if SMOKE_TEST else 10\n", - "\n", - "print(f\"Doing {N_INIT + N_BATCHES * BATCH_SIZE} evaluations\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Experiment\n", - "experiment = Experiment(\n", - " name=\"saasbo_experiment\",\n", - " search_space=search_space,\n", - " optimization_config=optimization_config,\n", - " runner=SyntheticRunner(),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Initial Sobol points\n", - "sobol = Generators.SOBOL(search_space=experiment.search_space)\n", - "for _ in range(N_INIT):\n", - " experiment.new_trial(sobol.gen(1)).run()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "bdfeea50-c4e6-4ff1-91ae-c8f6c3160d7c" - }, - "outputs": [], - "source": [ - "%%time\n", - "# Run SAASBO\n", - "data = experiment.fetch_data()\n", - "for i in range(N_BATCHES):\n", - " model = Generators.SAASBO(experiment=experiment, data=data)\n", - " generator_run = model.gen(BATCH_SIZE)\n", - " trial = experiment.new_batch_trial(generator_run=generator_run)\n", - " trial.run()\n", - " data = Data.from_multiple_data([data, trial.fetch_data()])\n", - "\n", - " new_value = trial.fetch_data().df[\"mean\"].min()\n", - " print(\n", - " f\"Iteration: {i}, Best in iteration {new_value:.3f}, Best so far: {data.df['mean'].min():.3f}\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plot results\n", - "SAASBO is able to find a solution close to the global optimal value of 0.398" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "5a9b9706-2653-4320-96f3-4bc9fe88bceb" - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "matplotlib.rcParams.update({\"font.size\": 16})\n", - "\n", - "\n", - "fig, ax = plt.subplots(figsize=(8, 6))\n", - "res_saasbo = data.df[\"mean\"]\n", - "ax.plot(np.minimum.accumulate(res_saasbo), color=\"b\", label=\"SAASBO\")\n", - "ax.plot([0, len(res_saasbo)], [0.398, 0.398], \"--\", c=\"g\", lw=3, label=\"Optimal value\")\n", - "ax.grid(True)\n", - "ax.set_title(\"Branin, D=50\", fontsize=20)\n", - "ax.set_xlabel(\"Number of evaluations\", fontsize=20)\n", - "ax.set_xlim([0, len(res_saasbo)])\n", - "ax.set_ylabel(\"Best value found\", fontsize=20)\n", - "ax.set_ylim([0, 8])\n", - "ax.legend(fontsize=18)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## SAAS model fit" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also instantiate a SAAS model via `Generators.BOTORCH_MODULAR` by specifying a `SaasFullyBayesianSingleTaskGP` as the `botorch_model_class`. This also gives us the option to change several Pyro-specific parameters such as `num_samples` and `warmup_steps`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "model = Generators.BOTORCH_MODULAR(\n", - " experiment=experiment,\n", - " data=data,\n", - " surrogate=Surrogate(\n", - " botorch_model_class=SaasFullyBayesianSingleTaskGP,\n", - " mll_options={\n", - " \"num_samples\": 256, # Increasing this may result in better model fits\n", - " \"warmup_steps\": 512, # Increasing this may result in better model fits\n", - " },\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Cross-validation plot \n", - "We have tools for cross-validation in Ax, but plotly doesn't render on Github so we make a simple plot using Matplotlib here. To use the built-in cross-validation functionality, you can do something like this:\n", - "\n", - "```\n", - "from ax.modelbridge.cross_validation import cross_validate, compute_diagnostics\n", - "from ax.plot.diagnostic import interact_cross_validation\n", - "from ax.utils.notebook.plotting import render, init_notebook_plotting\n", - "\n", - "\n", - "cv = cross_validate(model)\n", - "diagnostics = compute_diagnostics(cv)\n", - "init_notebook_plotting()\n", - "plotconfig = interact_cross_validation(cv)\n", - "render(plotconfig)\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Cross-validate model\n", - "cv = cross_validate(model)\n", - "y_true = np.stack([cv_.observed.data.means for cv_ in cv]).ravel()\n", - "y_saas_mean = np.stack([cv_.predicted.means for cv_ in cv]).ravel()\n", - "y_saas_std = np.stack(\n", - " [np.sqrt(np.diag(cv_.predicted.covariance)) for cv_ in cv]\n", - ").ravel()\n", - "\n", - "# Cross-validation plot\n", - "fig, ax = plt.subplots(1, 1, figsize=(6, 6))\n", - "min_val, max_val = -5, 120\n", - "ax.plot([min_val, max_val], [min_val, max_val], \"b--\", lw=2)\n", - "markers, caps, bars = ax.errorbar(\n", - " y_true,\n", - " y_saas_mean,\n", - " yerr=1.96 * y_saas_std,\n", - " fmt=\".\",\n", - " capsize=4,\n", - " elinewidth=2.0,\n", - " ms=14,\n", - " c=\"k\",\n", - " ecolor=\"gray\",\n", - ")\n", - "[bar.set_alpha(0.8) for bar in bars]\n", - "[cap.set_alpha(0.8) for cap in caps]\n", - "ax.set_xlim([min_val, max_val])\n", - "ax.set_ylim([min_val, max_val])\n", - "ax.set_xlabel(\"True value\", fontsize=20)\n", - "ax.set_ylabel(\"Predicted value\", fontsize=20)\n", - "ax.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Lengthscales\n", - "As SAASBO places strong priors on the inverse lengthscales, we only expect parameters 19 and 44 to be identified as important by the model since the other parameters have no effect. We can confirm that this is the case below as the lengthscales of parameters 19 and 44 are close to 1 with all other lengthscales being larger than 1000. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "median_lengthscales = (\n", - " model.model.surrogate.model\n", - " .covar_module.base_kernel.lengthscale.squeeze()\n", - " .median(axis=0)\n", - " .values\n", - ")\n", - "for i in median_lengthscales.argsort()[:10]:\n", - " print(f\"Parameter {i:2}) Median lengthscale = {median_lengthscales[i]:.2e}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/saasbo_nehvi/saasbo_nehvi.ipynb b/tutorials/saasbo_nehvi/saasbo_nehvi.ipynb deleted file mode 100644 index 1dcbccf1456..00000000000 --- a/tutorials/saasbo_nehvi/saasbo_nehvi.ipynb +++ /dev/null @@ -1,709 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "f2c99ee2-a85b-4cad-a5ff-1e2976bbc306", - "showInput": false - }, - "source": [ - "# Fully Bayesian Multi-Objective Optimization using qNEHVI + SAASBO\n", - "\n", - "### This Tutorial\n", - "\n", - "This tutorial will show how to use qNEHVI with fully bayesian inference for multi-objective \n", - "optimization.\n", - "\n", - "Multi-objective optimization (MOO) covers the case where we care about multiple\n", - "outcomes in our experiment but we do not know before hand a specific weighting of those\n", - "objectives (covered by `ScalarizedObjective`) or a specific constraint on one objective \n", - "(covered by `OutcomeConstraint`s) that will produce the best result.\n", - "\n", - "The solution in this case is to find a whole Pareto frontier, a surface in outcome-space\n", - "containing points that can't be improved on in every outcome. This shows us the\n", - "tradeoffs between objectives that we can choose to make." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "0aaae64b-d420-45d5-9597-52c09429d562", - "showInput": true - }, - "source": [ - "### Problem Statement\n", - "\n", - "Optimize a list of M objective functions $ \\bigl(f^{(1)}( x),..., f^{(M)}( x) \\bigr)$ over a bounded search space $\\mathcal X \\subset \\mathbb R^d$.\n", - "\n", - "We assume $f^{(i)}$ are expensive-to-evaluate black-box functions with no known analytical expression, and no observed gradients. For instance, a machine learning model where we're interested in maximizing accuracy and minimizing inference time, with $\\mathcal X$ the set of possible configuration spaces" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "470d5165-7f9d-4fbc-99fd-39d1015c7be0", - "showInput": false - }, - "source": [ - "### Fully Bayesian Inference\n", - "\n", - "Previous work, has shown that using a fully Bayesian treatment of GP model hyperparameters $\\boldsymbol \\theta$ can lead to improved closed loop Bayesian optimization performance [1]. Snoek et al [1] propose to use an integrated acquisition function $\\alpha_{MCMC}$ where the base acquisition function $\\alpha(\\mathbf{x} | \\boldsymbol \\theta, \\mathcal D)$ is integrated over the the posterior distribution over the hyperparameters $p({\\boldsymbol{\\theta}} | \\mathcal{D})$, where $ \\mathcal{D} = \\{{\\mathbf{x}}_i, y_i\\}_{i=1}^n$:\n", - "\n", - "$\\alpha_{MCMC}(\\mathbf{x}, \\mathcal D) = \\int \\alpha(\\mathbf{x} | \\boldsymbol \\theta, \\mathcal D) p(\\boldsymbol \\theta | \\mathcal D) d\\boldsymbol \\theta$\n", - "\n", - "\n", - "Since $p({\\boldsymbol{\\theta}} | \\mathcal{D})$ typically cannot be expressed in closed-form, Markov Chain Monte-Carlo (MCMC) methods are used to draw samples from $p({\\boldsymbol{\\theta}} | \\mathcal{D})$. In this tutorial we use the NUTS sampler from the pyro package for automatic, robust fully Bayesian inference.\n", - "\n", - "[1] J. Snoek, H. Larochelle, R. P. Adams, Practical Bayesian Optimization of Machine Learning Algorithms. Advances in Neural Information Processing Systems 26, 2012." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### SAAS Priors (SAASBO)\n", - "\n", - "Recently Eriksson et al [2] propose using sparse axis-aligned subspace priors for Bayesian optimization over high-dimensional search spaces. Specifically, the authors propose using a hierarchical sparsity prior consisting of a global shrinkage parameter with a Half-Cauchy prior $\\tau \\sim \\mathcal{HC}(\\beta)$, and ARD lengthscales $\\rho_d \\sim \\mathcal{HC}(\\tau)$ for $d=1, ..., D$. See [2] for details. \n", - "\n", - "[2] D. Eriksson, M. Jankowiak. High-Dimensional Bayesian Optimization with Sparse Axis-Aligned Subspaces. Proceedings of the Thirty-Seventh Conference on Uncertainty in Artificial Intelligence, 2021." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "213ff269-6109-408a-89b3-e92393e3c31f", - "showInput": false - }, - "source": [ - "### qNEHVI \n", - "\n", - "In this tutorial, we use qNEHVI [3] as our acquisition function for multi-objective optimization. We integrate qNEHVI over the posterior distribution of the GP hyperparameters as proposed in [4].\n", - "\n", - "[3] S. Daulton, M. Balandat, E. Bakshy. Parallel Bayesian Optimization of Multiple Noisy Objectives with Expected Hypervolume Improvement. Arxiv, 2021.\n", - "\n", - "[4] D. Eriksson, P. Chuang, S. Daulton, P. Xia, A. Shrivastava, A. Babu, S. Zhao, A. Aly, G. Venkatesh, M. Balandat. Latency-Aware Neural Architecture Search with Multi-Objective Bayesian Optimization. ICML AutoML Workshop, 2021." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "47e79bce-564d-40a6-84a6-0003ebdda93d" - }, - "source": [ - "### Further Information\n", - "\n", - "For a deeper explanation of multi-objective optimization, please refer to the dedicated multi-objective optimization tutorial: https://ax.dev/tutorials/multiobjective_optimization.html." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "dabdd6f6-34b3-4103-b599-bc909fe9faab" - }, - "source": [ - "## Setup\n", - "\n", - "In this tutorial, we use Ax Developer API. Additional resources:\n", - "- To learn more about the developer API, refer to the dedicated tutorial: https://ax.dev/tutorials/gpei_hartmann_developer.html. \n", - "- To set up a `GenerationStrategy` with multi-objective SAASBO (and use it in Ax Service API), follow the generation strategy tutorial: https://ax.dev/tutorials/generation_strategy.html and use `Generators.SAASBO` for the Bayesian optimization generation step.\n", - "- To learn about multi-objective optimization in Ax Service API: https://ax.dev/tutorials/multiobjective_optimization.html#Using-the-Service-API." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "03b8cd70-54f4-4d4d-8445-60439ba00e27" - }, - "outputs": [], - "source": [ - "import os\n", - "\n", - "import matplotlib\n", - "\n", - "import numpy as np\n", - "\n", - "import pandas as pd\n", - "import torch\n", - "from ax.core.data import Data\n", - "from ax.core.experiment import Experiment\n", - "from ax.core.metric import Metric\n", - "from ax.core.objective import MultiObjective, Objective\n", - "from ax.core.optimization_config import (\n", - " MultiObjectiveOptimizationConfig,\n", - " ObjectiveThreshold,\n", - ")\n", - "from ax.core.parameter import ParameterType, RangeParameter\n", - "from ax.core.search_space import SearchSpace\n", - "from ax.metrics.noisy_function import GenericNoisyFunctionMetric\n", - "from ax.modelbridge.cross_validation import compute_diagnostics, cross_validate\n", - "\n", - "# Analysis utilities, including a method to evaluate hypervolumes\n", - "from ax.modelbridge.modelbridge_utils import observed_hypervolume\n", - "\n", - "# Model registry for creating multi-objective optimization models.\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.models.torch.botorch_modular.surrogate import Surrogate\n", - "from ax.plot.contour import plot_contour\n", - "from ax.plot.diagnostic import tile_cross_validation\n", - "from ax.plot.pareto_frontier import plot_pareto_frontier\n", - "from ax.plot.pareto_utils import compute_posterior_pareto_frontier\n", - "from ax.runners.synthetic import SyntheticRunner\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "\n", - "# Plotting imports and initialization\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP\n", - "from botorch.test_functions.multi_objective import DTLZ2\n", - "from botorch.utils.multi_objective.box_decompositions.dominated import (\n", - " DominatedPartitioning,\n", - ")\n", - "from matplotlib import pyplot as plt\n", - "from matplotlib.cm import ScalarMappable" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import plotly.io as pio\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "122d77fa-21b8-4b01-9522-eae5990aba86" - }, - "source": [ - "### Load our sample 2-objective problem" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "744782ab-028f-4bbf-ba0a-eec8520c2fcf" - }, - "outputs": [], - "source": [ - "d = 10\n", - "tkwargs = {\n", - " \"dtype\": torch.double,\n", - " \"device\": torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n", - "}\n", - "problem = DTLZ2(num_objectives=2, dim=d, negate=True).to(**tkwargs)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "02a84443-ed1c-4e63-b2f8-9f1a77d530ec" - }, - "source": [ - "## Define experiment configurations" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "5dd66dc9-86a3-44a0-8109-418de66edfdb" - }, - "source": [ - "### Search Space" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "6060bdaf-be41-4d1d-9407-463a1e0c17f3" - }, - "outputs": [], - "source": [ - "search_space = SearchSpace(\n", - " parameters=[\n", - " RangeParameter(\n", - " name=f\"x{i}\", lower=0, upper=1, parameter_type=ParameterType.FLOAT\n", - " )\n", - " for i in range(d)\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "4d5ffaaa-6aca-4502-9aac-047806c4a550", - "showInput": false - }, - "source": [ - "### MultiObjectiveOptimizationConfig\n", - "\n", - "To optimize multiple objective we must create a `MultiObjective` containing the metrics we'll optimize and `MultiObjectiveOptimizationConfig` (which contains `ObjectiveThreshold`s) instead of our more typical `Objective` and `OptimizationConfig`. Additional resources:\n", - "- To set up a custom metric for your problem, refer to the dedicated section of the Developer API tutorial: https://ax.dev/tutorials/gpei_hartmann_developer.html#8.-Defining-custom-metrics.\n", - "- To avoid needing to setup up custom metrics by using multi-objective optimization in Ax Service API: https://ax.dev/tutorials/multiobjective_optimization.html#Using-the-Service-API.\n", - "\n", - "We define `GenericNoisyFunctionMetric`s to wrap our synthetic Branin-Currin problem's outputs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "param_names = [f\"x{i}\" for i in range(d)]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "fbf29141-2d4b-4dc9-aca7-e13e93369c36" - }, - "outputs": [], - "source": [ - "def f1(x) -> float:\n", - " x_sorted = [x[p_name] for p_name in param_names]\n", - " return float(problem(torch.tensor(x_sorted, **tkwargs).clamp(0.0, 1.0))[0])\n", - "\n", - "\n", - "def f2(x) -> float:\n", - " x_sorted = [x[p_name] for p_name in param_names]\n", - " return float(problem(torch.tensor(x_sorted, **tkwargs).clamp(0.0, 1.0))[1])\n", - "\n", - "\n", - "metric_a = GenericNoisyFunctionMetric(\"a\", f=f1, noise_sd=0.0, lower_is_better=False)\n", - "metric_b = GenericNoisyFunctionMetric(\"b\", f=f2, noise_sd=0.0, lower_is_better=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "a248dc3d-d053-439c-a4ff-c226105a0bfb" - }, - "outputs": [], - "source": [ - "mo = MultiObjective(\n", - " objectives=[Objective(metric=metric_a), Objective(metric=metric_b)],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "cefa9d16-a23a-4222-82fb-e33ce89ddb58" - }, - "outputs": [], - "source": [ - "objective_thresholds = [\n", - " ObjectiveThreshold(metric=metric, bound=val, relative=False)\n", - " for metric, val in zip(mo.metrics, problem.ref_point)\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "2512e114-8693-4ea1-8938-db0899a4f929" - }, - "outputs": [], - "source": [ - "optimization_config = MultiObjectiveOptimizationConfig(\n", - " objective=mo,\n", - " objective_thresholds=objective_thresholds,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "b689c7a9-28f8-47ae-a5da-c3a93674e72d", - "showInput": false - }, - "source": [ - "## Define experiment creation utilities\n", - "\n", - "These construct our experiment, then initialize with Sobol points before we fit a Gaussian Process model to those initial points." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "originalKey": "fb09ef7d-e744-472b-9290-ec24eb40d3fe" - }, - "outputs": [], - "source": [ - "N_INIT = 2 * (d + 1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "b9b934cb-3afe-4a39-812b-c4d3bca194b6" - }, - "outputs": [], - "source": [ - "def build_experiment():\n", - " experiment = Experiment(\n", - " name=\"pareto_experiment\",\n", - " search_space=search_space,\n", - " optimization_config=optimization_config,\n", - " runner=SyntheticRunner(),\n", - " )\n", - " return experiment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "cf05b5ca-ee87-45be-a028-51952fb4a2ee" - }, - "outputs": [], - "source": [ - "def initialize_experiment(experiment):\n", - " sobol = Generators.SOBOL(search_space=experiment.search_space)\n", - " experiment.new_batch_trial(sobol.gen(N_INIT)).run()\n", - " return experiment.fetch_data()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "96a350f9-5fa1-45a9-aac2-42d942e939f6" - }, - "source": [ - "## qNEHVI + SAASBO\n", - "Noisy expected hypervolume improvement + fully Bayesian inference with SAAS priors." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "02a0d667-9e8e-43b9-b2ef-09ff2b2d85ba" - }, - "outputs": [], - "source": [ - "experiment = build_experiment()\n", - "data = initialize_experiment(experiment)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "BATCH_SIZE = 4\n", - "\n", - "if SMOKE_TEST:\n", - " N_BATCH = 1\n", - " num_samples = 128\n", - " warmup_steps = 256\n", - "else:\n", - " N_BATCH = 10\n", - " BATCH_SIZE = 4\n", - " num_samples = 256\n", - " warmup_steps = 512" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "8ec2a5a3-bb79-435d-834c-55510ec52b15" - }, - "outputs": [], - "source": [ - "hv_list = []\n", - "model = None\n", - "for i in range(N_BATCH):\n", - " model = Generators.BOTORCH_MODULAR(\n", - " experiment=experiment,\n", - " data=data,\n", - " surrogate=Surrogate(\n", - " botorch_model_class=SaasFullyBayesianSingleTaskGP,\n", - " mll_options={\n", - " \"num_samples\": num_samples, # Increasing this may result in better model fits\n", - " \"warmup_steps\": warmup_steps, # Increasing this may result in better model fits\n", - " },\n", - " )\n", - " )\n", - " generator_run = model.gen(BATCH_SIZE)\n", - " trial = experiment.new_batch_trial(generator_run=generator_run)\n", - " trial.run()\n", - " data = Data.from_multiple_data([data, trial.fetch_data()])\n", - "\n", - " exp_df = exp_to_df(experiment)\n", - " outcomes = torch.tensor(exp_df[[\"a\", \"b\"]].values, **tkwargs)\n", - " partitioning = DominatedPartitioning(ref_point=problem.ref_point, Y=outcomes)\n", - " try:\n", - " hv = partitioning.compute_hypervolume().item()\n", - " except:\n", - " hv = 0\n", - " print(\"Failed to compute hv\")\n", - " hv_list.append(hv)\n", - " print(f\"Iteration: {i}, HV: {hv}\")\n", - "\n", - "df = exp_to_df(experiment).sort_values(by=[\"trial_index\"])\n", - "outcomes = df[[\"a\", \"b\"]].values" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "bafe189b-88cb-4a9e-aeff-2d2945d497da" - }, - "source": [ - "## Plot empirical data" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "5cc39663-a778-4600-bf39-57e63a7c2f39", - "showInput": false - }, - "source": [ - "#### Plot observed hypervolume, with color representing the iteration that a point was generated on." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "94ba246d-6adb-42bc-8f24-c10266b165d8" - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "matplotlib.rcParams.update({\"font.size\": 16})\n", - "\n", - "\n", - "fig, axes = plt.subplots(1, 1, figsize=(8, 6))\n", - "algos = [\"qNEHVI\"]\n", - "train_obj = outcomes\n", - "cm = matplotlib.colormaps[\"viridis\"]\n", - "\n", - "n_results = N_INIT + N_BATCH * BATCH_SIZE\n", - "\n", - "batch_number = df.trial_index.values\n", - "sc = axes.scatter(train_obj[:, 0], train_obj[:, 1], c=batch_number, alpha=0.8)\n", - "axes.set_title(algos[0])\n", - "axes.set_xlabel(\"Objective 1\")\n", - "axes.set_ylabel(\"Objective 2\")\n", - "norm = plt.Normalize(batch_number.min(), batch_number.max())\n", - "sm = ScalarMappable(norm=norm, cmap=cm)\n", - "sm.set_array([])\n", - "fig.subplots_adjust(right=0.9)\n", - "cbar_ax = fig.add_axes([0.93, 0.15, 0.01, 0.7])\n", - "cbar = fig.colorbar(sm, cax=cbar_ax)\n", - "cbar.ax.set_title(\"Iteration\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "87e98991-aa2d-497b-925c-ee4cc82cf2f9" - }, - "source": [ - "# Hypervolume statistics\n", - "The hypervolume of the space dominated by points that dominate the reference point." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "2401a7cb-e825-489a-994f-c252050310f3" - }, - "source": [ - "#### Plot the results\n", - "The plot below shows a common metric of multi-objective optimization performance when the true Pareto frontier is known: the log difference between the hypervolume of the true Pareto front and the hypervolume of the approximate Pareto front identified by qNEHVI." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "05bf3b39-9cce-4a58-bc22-ed6a59a8c531" - }, - "outputs": [], - "source": [ - "iters = np.arange(1, N_BATCH + 1)\n", - "log_hv_difference = np.log10(problem.max_hv - np.asarray(hv_list))[: N_BATCH + 1]\n", - "\n", - "fig, ax = plt.subplots(1, 1, figsize=(8, 6))\n", - "ax.plot(iters, log_hv_difference, label=\"qNEHVI+SAASBO\", linewidth=1.5)\n", - "ax.set(xlabel=\"Batch Iterations\", ylabel=\"Log Hypervolume Difference\")\n", - "ax.legend(loc=\"lower right\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Inspect Model fits\n", - "\n", - "Here, we examine the GP model fits using the fully bayesian inference with SAAS priors. We plot the leave-one-out cross-validation below. Note: model hyperparameters are not re-sampled on each fold to reduce the runtime." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "saas_model = Generators.SAASBO(experiment=experiment, data=data)\n", - "cv = cross_validate(model)\n", - "render(tile_cross_validation(cv))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# compute out-of-sample log likelihood\n", - "compute_diagnostics(cv)[\"Log likelihood\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we examine the GP model fits using MAP estimation for comparison. The fully bayesian model has a higher log-likelihood than the MAP model. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "map_model = Generators.BOTORCH_MODULAR(experiment=experiment, data=data)\n", - "map_cv = cross_validate(map_model)\n", - "render(tile_cross_validation(map_cv))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# compute out-of-sample log likelihood\n", - "compute_diagnostics(map_cv)[\"Log likelihood\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/scheduler/scheduler.ipynb b/tutorials/scheduler/scheduler.ipynb deleted file mode 100644 index c1031ff7d43..00000000000 --- a/tutorials/scheduler/scheduler.ipynb +++ /dev/null @@ -1,933 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "originalKey": "977ca50b-324e-4994-97cd-c6c17e723435" - }, - "source": [ - "# Configurable closed-loop optimization with Ax `Scheduler`\n", - "\n", - "*We recommend reading through the [\"Developer API\" tutorial](https://ax.dev/tutorials/gpei_hartmann_developer.html) before getting started with the `Scheduler`, as using it in this tutorial will require an Ax `Experiment` and an understanding of the experiment's subcomponents like the search space and the runner.*\n", - "\n", - "### Contents:\n", - "1. **Scheduler and external systems for trial evalution** –– overview of how scheduler works with an external system to run a closed-loop optimization.\n", - "2. **Set up a mock external system** –– creating a dummy external system client, which will be used to illustrate a scheduler setup in this tutorial.\n", - "3. **Set up an experiment according to the mock external system** –– set up a runner that deploys trials to the dummy external system from part 2 and a metric that fetches trial results from that system, then leverage those runner and metric and set up an experiment.\n", - "4. **Set up a scheduler**, given an experiment.\n", - " 1. Create a scheduler subclass to poll trial status.\n", - " 2. Set up a generation strategy using an auto-selection utility.\n", - "5. **Running the optimization** via `Scheduler.run_n_trials`.\n", - "6. **Leveraging SQL storage and experiment resumption** –– resuming an experiment in one line of code.\n", - "7. **Configuring the scheduler** –– overview of the many options scheduler provides to configure the closed-loop down to granular detail.\n", - "8. **Advanced functionality**:\n", - " 1. Reporting results to an external system during the optimization.\n", - " 2. Using `Scheduler.run_trials_and_yield_results` to run the optimization via a generator method." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "99721805-f4f5-48e4-940c-bc2d0c73c61a" - }, - "source": [ - "## 1. `Scheduler` and external systems for trial evaluation\n", - "\n", - "`Scheduler` is a closed-loop manager class in Ax that continuously deploys trial runs to an arbitrary external system in an asynchronous fashion, polls their status from that system, and leverages known trial results to generate more trials.\n", - "\n", - "Key features of the `Scheduler`:\n", - "- Maintains user-set concurrency limits for trials run in parallel, keep track of tolerated level of failed trial runs, and 'oversee' the optimization in other ways,\n", - "- Leverages an Ax `Experiment` for optimization setup (an optimization config with metrics, a search space, a runner for trial evaluations),\n", - "- Uses an Ax `GenerationStrategy` for flexible specification of an optimization algorithm used to generate new trials to run,\n", - "- Supports SQL storage and allows for easy resumption of stored experiments." - ] - }, - { - "attachments": { - "image-2.png": { - "image/png": "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rrvuOt/z5dYvcusNCd9Yh7Qtvtx1112+51jtZSJoIW0G3ZpE2vn1r3+ttmzZYvOw+jhnzpyEn9mHH35oFbUfCVrYKHgCAaMJ6L5wMRoOnYMABCAAAQhAAAIFRkD33JD2WVjBARzAARzAARzAARww3QHTLxEIWhC0MN1R+ldABGQR/Ec/+lHCBXBrITydRwkILFiwIJDoq6++mrRtuUXIfffdp7761a8mLPu1r31NnTx5Mq6tXActpAOJdlawOMoOID/96U9j/INug2KVbdGiRdy4rBeefvrphFykjptuukn927/9m7r55puTlrXalEe/oIW0W6dOnYT1SDvi1fe//33fW3E427CeZypoceDAgaRtSnhI+nf//fcn9ep3v/udhdr1SNDChYNvIGAsAd0XLsaCoWMQgAAEIAABCECgAAnonhvSPgsrOIADOIADOIADOIADpjtlP+HyAAAgAElEQVRg+mUCQQuCFqY7Sv8KjEBxcXFsQdxa8M7U47XXXqumTJmSkObly5fVD3/4w4SL9mH6I7flWLVqlW9bOoIW0pH69etXeVwydtmVQnbJCDr279+fdFeRMAz9ygQFLWQ3Egkr+J2T7muZCloIp+7duye9LUqYfv7yl79U4qjfQdDCjwqvQcA8ArovXMwjQo8gAAEIQAACEIBA4RLQPTekfRZWcAAHcAAHcAAHcAAHTHfA9KsFghYELUx3lP4VIIFTp04pue1GottQhFmYtspIyGLYsGGhSF65ckW1bNky7bYlZNG/f//AtnQFLaRDI0eOVJ/97GfTDiTIbTDkdh/JjjNnzqj/+q//SqsduRXLo48+6ntuUNBC+tO+fXvfcywH/B7Fi969e/uel8mghfRPbnNz6623+rbl1zfva7LbyIULFwLRE7QIRMMbEDCKgO4LF6Ng0BkIQAACEIAABCBQ4AR0zw1pn4UVHMABHMABHMABHMAB0x0w/ZKBoAVBC9MdpX8FTGDnzp2qWrVq6rrrrktrgfpzn/uckttcyO0bUj0WLlyobrvttpTaffzxx5X0OdGhM2gh/ZIdJ372s5+lNK677rpLjRo1SsmtXcIesuvFa6+9piTM4A0NBH3/xBNPqKNHj6onn3zS95xEQQvp19ChQ0PfjkRCD0uWLInx8OtPpoMW0j+5lczvf/9737H59UFeEwfffvttdenSpYToCVokxMOb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sWXLlqr5JmW0UL203Modd9zhK79bF/texotJkyaZvr6+quWrxqvW43kzJuStPrW2J+en0yfCFa550UDWH0woHwQgAAEIQAACECgSgbyMMakHz0toAA2gATSABtAAGkADaWkg688HGC0wWjR9Yjetm410k+vIg0aLDRs2xNbJ8OHDPWPBjTfe6F3nfn/rrbd631drt507d3rpyZgwYcIE79pajRZbt271ro3KN0mjhfIYGBgw06dPj2W4uOqqq8yiRYuqljGq7PV8nzdjQt7qU0+bck1yfSEsYZk3DWT9wYTyQQACEIAABCAAgSIRyNtYk/rw/IQG0AAaQANoAA2gATSQtAay/nyA0QKjRVMndZO+wUgvnU47aLTQEhdxWbtGhZEjR3rX3XXXXZ5hYtiwYd731dJdu3atd52MFvPnz/eubQejhVu/np4es3DhQvPkk08a13hiI1tor6VXVq9e7dXRvT6N93kzJuStPmm0OWmm02/CFa7toIGsP5hQPghAAAIQgAAEIFAkAu0wfqSMPOegATSABtAAGkADaAANtFIDWX8+wGiB0aJpE7qtvBHJu7Y/BEGjxZQpU2LppL+/32eKeOKJJ7zr9N41FMgkEadd5s6d67vOja7RbkaLYH337Nljxo0bZxTJwmVzzz33xGITTK+ez3kzJuStPvW0KdfU1t/BC15F0kDWH0woHwQgAAEIQAACECgSgSKNQ6krz11oAA2gATSABtAAGkAD9Wgg688HGC0wWjRtQreeG4hrWtPxBo0WWupjaGioqlYWL17sMwxMmzbNu2bGjBm+Y0uXLvWOVWrnMWPG+K7bv3+/d11WjRYynGgJEPvat2+fV+awuuq4GwnkyiuvLC05EnZu0t/lzZiQt/ok3d6k15o+Fe5wz4oGsv5gQvkgAAEIQAACEIBAkQhkZYxIOXheQQNoAA2gATSABtAAGsiqBrL+fIDRAqNFxQngrN5YlCvdTj9otFC0hTjLWdx9990+U8S6des8fSkShRu14aabbjIyJFRqS13vXnPjjTeaY8eOeddk1WgxODjoi1IxduxYr8xR9X388cd9de3r66t6TVRatXyfN2NC3upTS1tybrr9InzhmwcNZP3BhPJBAAIQgAAEIACBIhHIw/iSOvCchAbQABpAA2gADaABNJCmBrL+fIDRAqNFUyZz07zJSDv5TjzMaCGTw44dOyL1MmnSJJ9RYMSIEWXnjho1ynfO008/bWRKCGtDLatxyy23+M5fsmSJ79wsGC1mz57tK5Oty+jRo72yX3vttUb1sceCe0ULUdQQayoZPnx45LnBaxv9nDdjQt7q02j7cn3y/SNMYdrOGsj6gwnlgwAEIAABCEAAAkUi0M7jSsrOcxEaQANoAA2gATSABtBAMzSQ9ecDjBYYLZo2oduMG448kunYw4wWMgFcddVVZsGCBWbv3r0l3cgksWXLFvPUU095JgFrFnCjWdh2kVHj8ssv95171113mc2bN3tLZSiSw8KFC83VV1/tO+/OO+8sW76kFUYLRdTQ0h62nrfddptZtWqV2bRpU4nFwMBAic306dO9c3TuDTfcYGQUOXr0qO+e6+7uNsHlUcTTMkt7nzdjQt7qk3b7k34yfSYc4dguGsj6gwnlgwAEIAABCEAAAkUi0C5jSMrJ8w4aQANoAA2gATSABtBAqzSQ9ecDjBYYLZo2oduH1H3sAAAgAElEQVSqm5B8a/8DEGW0sOYC7RWlQcYL9zv7/rHHHovU1ZQpU0KvueKKK8z1118fekx5ydARbMtWGC1UhmCkDVtv7fft21cq5+HDh83tt99eVh/VU8umyKAxbNiwsuPXXHON2bZtW1ldg3VP6nPejAl5q09S7Uw6tfeDMINZHjWQ9QcTygcBCEAAAhCAAASKRCCP403qxHMUGkADaAANoAE0gAbQQJIayPrzAUYLjBZNm9BN8sYirXQ76qDRQstjaOkQ11AQ9l7RKmbNmmUU9aFSG61Zs8Zcd911VdNTHvfee6/p6ekJTa9VRou5c+dGlt0aLVT/AwcOlEwVYazCvpPJIsxQUollo8fyZkzIW30abV+uT7evhC98200DWX8woXwQgAAEIAABCECgSATabSxJeXn+QQNoAA2gATSABtAAGmi2BrL+fIDRAqNF6AR2s28U8stW5xw0Wqxevbq05IWiUQwfPrzMZKAID4pi0dXVFVtPMk+MGzfOjBgxoiwyhkwYWk5jzpw5ZcuFuFpR1AgZQOxL5XSPa0kSe0x7LV3iHg97P3LkSO+aadOmhZ4/NDRkli5dakaPHm1uvfXWUnQKRanQS+YPN93+/n6zaNEic8cdd5Rxs2YLpTFjxoxIQ4mbXtLv82ZMyFt9km5v0stWX0t70B7N1kDWH0woHwQgAAEIQAACECgSgWaPBcmP5w80gAbQABpAA2gADaCBdtNA1p8PMFpgtPBNCrfbDUZ50/mjEGa0cFkrasOmTZtKxgqZHdxj9byXcWHnzp2ms7OzFAWinjTa4RqZLvbs2VPitnHjRiPOSfBrpO55MybkrT6NtC3XptM/whWu7ayBrD+YUD4IQAACEIAABCBQJALtPK6k7DwXoQE0gAbQABpAA2gADTRDA1l/PsBogdGi4UnyZtxI5NHcDrua0YL2aG57pMk7b8aEvNUnzbYn7fzcx7QlbRlXA1l/MKF8EIAABCAAAQhAoEgE4o7hOI/xPhpAA2gADaABNIAG0EBRNZD15wOMFhgtMFqggTINYLQozh/tvBkT8lafog6eqHdx+iDaurltnfUHE8oHAQhAAAIQgAAEikSAsXBzx8LwhjcaQANoAA2gATSABtpPA1l/PsBowSR72SQ7HU37dTRJtxlGi+JoIG/GhLzVJ+l7m/SKc2/T1rR1mAay/mBC+SAAAQhAAAIQgECRCISN1/iOcTwaQANoAA2gATSABtAAGrikgaw/H2C0wGiB0QINlGkAo8WlTjzvf9DyZkzIW33yrj/qV5y+hrbORltn/cGE8kEAAhCAAAQgAIEiEWCMnI0xMu1AO6ABNIAG0AAaQANoILsayPrzAUYLJtnLJtnpULLboTSrbTBaFEcDeTMm5K0+zbrnyac49zxtXey2zvqDCeWDAAQgAAEIQAACRSLA2LzYY3Pan/ZHA2gADaABNIAG0EB1DWT9+QCjBUYLjBZooEwDMlpcfvnl3mv16tVl5/AHoPofgHZglDdjQt7q0w4aooz56Atox2K0Y9YfTCgfBCAAAQhAAAIQKBIBxuDFGIPTzrQzGkADaAANoAE0gAbq10DWnw8wWjDJzgQ6GkADBdZA3owJeasPA7D6B2Cwgx0aKNdA1h9MKB8EIAABCEAAAhAoEgHGq+XjVZjABA2gATSABtAAGkADaMDVQNafDzBaFHiC1RUq7+m40EAxNZA3Y0Le6sN9Wcz7knan3dPSQNYfTCgfBCAAAQhAAAIQKBKBtMZ8pMvzBBpAA2gADaABNIAG0EBeNJD15wOMFhgtiGaABtBAgTWQN2NC3uqTl8EQ9WBgjwayoYGsP5hQPghAAAIQgAAEIFAkAoyRszFGph1oBzSABtAAGkADaAANZFcDWX8+wGhR4AlWOo7sdhy0DW3TLA3kzZiQt/o0SwfkQ5+DBoqhgaw/mFA+CEAAAhCAAAQgUCQCjMGLMQannWlnNIAG0AAaQANoAA3Ur4GsPx9gtMBoQTQDNIAGCqyBvBkT8lYfBmD1D8BgBzs0UK6BrD+YUD4IQAACEIAABCBQJAKMV8vHqzCBCRpAA2gADaABNIAG0ICrgaw/H2C0KPAEqytU3tNxoYFiaiBvxoS81Yf7spj3Je1Ou6elgaw/mFA+CEAAAhCAAAQgUCQCaY35SJfnCTSABtAAGkADaAANoIG8aCDrzwcYLTBaEM0ADaCBAmsgb8aEvNUnL4Mh6sHAHg1kQwNZfzChfBCAAAQgAAEIQKBIBBgjZ2OMTDvQDmgADaABNIAG0AAayK4Gsv58gNGiwBOsdBzZ7ThoG9qmWRrImzEhb/Vplg7Ihz4HDRRDA1l/MKF8EIAABCAAAQhAoEgEGIMXYwxOO9POaAANoAE0gAbQABqoXwNZfz7AaIHRgmgGaAANFFgDeTMm5K0+DMDqH4DBDnZooFwDWX8woXwQgAAEIAABCECgSAQYr5aPV2ECEzSABtAAGkADaAANoAFXA1l/PsBoUeAJVleovKfjQgPF1EDejAl5qw/3ZTHvS9qddk9LA1l/MKF8EIAABCAAAQhAoEgE0hrzkS7PE2gADaABNIAG0AAaQAN50UDWnw8wWmC0IJoBGkADBdZA3owJeatPXgZD1IOBPRrIhgay/mBC+SAAAQhAAAIQgECRCDBGzsYYmXagHdAAGkADaAANoAE0kF0NZP35AKNFgSdY6Tiy23HQNrRNszSQN2NC3urTLB2QD30OGiiGBrL+YEL5IAABCEAAAhCAQJEIMAYvxhicdqad0QAaQANoAA2gATRQvway/nyA0QKjBdEM0AAaKLAG8mZMyFt9GIDVPwCDHezQQLkGsv5gQvkgAAEIQAACEIBAkQgwXi0fr8IEJmgADaABNIAG0AAaQAOuBrL+fIDRosATrK5QeU/HhQaKqYG8GRPyVh/uy2Lel7Q77Z6WBrL+YEL5IAABCEAAAhCAQJEIpDXmI12eJ9AAGkADaAANoAE0gAbyooGsPx9gtMBoQTQDNIAGCqyBvBkT8lafvAyGqAcDezSQDQ1k/cGE8kEAAhCAAAQgAIEiEWCMnI0xMu1AO6ABNIAG0AAaQANoILsayPrzAUaLAk+w0nFkt+OgbWibZmkgb8aEvNWnWTogH/ocNFAMDWT9wYTyQQACEIAABCAAgSIRYAxejDE47Uw7owE0gAbQABpAA2igfg1k/fkAowVGC6IZoAE0UGAN5M2YkLf6MACrfwAGO9ihgXINZP3BhPJBAAIQgAAEIACBIhFgvFo+XoUJTNAAGkADaAANoAE0gAZcDWT9+QCjRYEnWF2h8p6OCw0UUwN5MybkrT7cl8W8L2l32j0tDWT9wYTyQQACEIAABCAAgSIRSGvMR7o8T6ABNIAG0AAaQANoAA3kRQNZfz7AaIHRgmgGaAANFFgDeTMm5K0+eRkMUQ8G9mggGxrI+oNJ3sp37tw5c/LkSfPCCy+Ynp4e093dbbZs2WI6OzvNhg0bzObNm82OHTvMvn37zNDQkHnzzTfN2bNn84aB+kAAAhCAAAQgEEGAMXI2xsi0A+2ABtAAGkADaAANoIHsaiBiKJ2ZrzFaFHiClY4jux0HbUPbNEsDeTMm5K0+zdIB+dDnoIFiaCAzTyA5LYhMErqXZKaYO3euef755+t6zZw502zcuNH09/ebDz/8MKe0qBYEIAABCEAAAozBizEGp51pZzSABtAAGkADaAAN1K+BrD81YLTAaEE0AzSABgqsgbwZE/JWHwZg9Q/AYAc7NFCugaw/mLRj+T7++GMzODhoVqxYUZepIo4ZY/HixebQoUNEu2hHgVBmCEAAAhCAQAUCjFfLx6swgQkaQANoAA2gATSABtCAq4EKw+lMHMJoUeAJVleovKfjQgPF1EDejAl5qw/3ZTHvS9qddk9LA5l4+shJIU6fPl1aCmTy5MmRBgsdW7Jkienq6iotHTIwMFBaRuTEiRPm5ZdfNi+++GLJpNHb21uKgrFs2TIzderUyPQmTJhgNm3aZN55552cUKQaEIAABCAAgWITSGvMR7o8T6ABNIAG0AAaQANoAA3kRQNZf2LAaIHRgmgGaAANFFgDeTMm5K0+eRkMUQ8G9mggGxrI+oNJO5TvzJkzJbODTA/BaBT6bvXq1ebw4cPm1KlT5vPPP6+5ShcvXjTvvvuukSljw4YNZtKkSWX5KN81a9aY9957r+b0uQACEIAABCAAgewQYIycjTEy7UA7oAE0gAbQABpAA2gguxrIzug9vCQYLQo8wUrHkd2Og7ahbZqlgbwZE/JWn2bpgHzoc9BAMTQQ/jjAt3EInD9/3vT19ZmwCBZa2kPGiI8++ihOUjWd8+mnn5aiYKxatarMcCFjx86dO42WL2GDAAQgAAEIQKD9CDAGL8YYnHamndEAGkADaAANoAE0UL8Gsj7Kx2iB0YJoBmgADRRYA3kzJuStPgzA6h+AwQ52aKBcA1l/MMlq+d5++20zb968MqODokq88cYbTSu2lgzR0iHBaBozZswwr776atPKQUYQgAAEIAABCCRDgPFq+XgVJjBBA2gADaABNIAG0AAacDWQzMg7vVQwWhR4gtUVKu/puNBAMTWQN2NC3urDfVnM+5J2p93T0kB6jxT5TFnLeBw5csRMnDjRZ7JYtGiROXnyZMsq/f7775eWKAkuXbJ7925z4cKFlpWLjCEAAQhAAAIQqI1AWmM+0uV5Ag2gATSABtAAGkADaCAvGqhthN38szFaYLQgmgEaQAMF1kDejAl5q09eBkPUg4E9GsiGBpr/qNG+OWqpkA0bNvgMFlOmTDFDQ0NGBowsbC+//LKZNWuWr4xLly41586dy0LxKAMEIAABCEAAAlUIMEbOxhiZdqAd0AAaQANoAA2gATSQXQ1UGVK3/DBGiwJPsNJxZLfjoG1om2ZpIG/GhLzVp1k6IB/6HDRQDA20/MmjTQrw8ccfm2XLlpUZGE6fPp25GshUsX79el9ZtcxJFsuaOXgUCAIQgAAEINBiAozBizEGp51pZzSABtAAGkADaAAN1K+BFg/Zq2aP0QKjBdEM0AAaKLAG8mZMyFt9GIDVPwCDHezQQLkGqj4ZcII5e/as6ejo8BkXtCTH559/nmk6R48eNRMmTPDKPWPGDPPuu+9muswUDgIQgAAEIFB0AoxXy8erMIEJGkADaAANoAE0gAbQgKuBrD8zYLQo8ASrK1Te03GhgWJqIG/GhLzVh/uymPcl7U67p6WBrD+YtLp8imSxYMECz6zw/PPPm/7+/lYXK3b+r7zyipk0aZJXfpktiGwRGx8nQgACEIAABJpOIK0xH+nyPIEG0AAaQANoAA2gATSQFw00fZBeY4YYLTBaEM0ADaCBAmsgb8aEvNUnL4Mh6sHAHg1kQwM1PicU6vTz58/7lguZOHGiOXHiRNsx+OUvf2mmTZvmmS3mzp1rPvroo7arBwWGAAQgAAEIFIEAY+RsjJFpB9oBDaABNIAG0AAaQAPZ1UDWnwswWhR4gpWOI7sdB21D2zRLA3kzJuStPs3SAfnQ56CBYmgg6w8mrSxfZ2enZ05QJIvjx4+3sjgN5S2zxeTJk736LF682Fy4cKGhNLkYAhCAAAQgAIHkCTAGL8YYnHamndEAGkADaAANoAE0UL8Gkh+FJ5siRguMFkQzQANooMAayJsxIW/1YQBW/wAMdrBDA+UaSPYxIj+paXkQmSvsq52WC4lqhVdffdVMmDDBq9POnTujTuV7CEAAAhCAAARaRIDxavl4FSYwQQNoAA2gATSABtAAGnA10KKheuxsMVoUeILVFSrv6bjQQDE1kDdjQt7qw31ZzPuSdqfd09JA7CeEAp349ttvGy0TYk0Wu3btyk3tBwYGvHqpfu24FEpuGoOKQAACEIAABEIIpDXmI12eJ9AAGkADaAANoAE0gAbyooGQYXSmvsJogdGCaAZoAA0UWAN5MybkrT55GQxRDwb2aCAbGsjUU0gGCqPlNDo6OjwzwpIlS3K3xIa7JMq0adPMuXPnMkCeIkAAAhCAAAQgIAKMkbMxRqYdaAc0gAbQABpAA2gADWRXA1l/csBoUeAJVjqO7HYctA1t0ywN5M2YkLf6NEsH5EOfgwaKoYGsP5g0u3yHDh3yTBZTpkwxp0+fbnYRUs/vk08+MXPnzvXquX379tTzJAMIQAACEIAABOIRYAxejDE47Uw7owE0gAbQABpAA2igfg3EG1m37iyMFhgtcNCjATRQYA3kzZiQt/owAKt/AAY72KGBcg207pEjezmfPXvWyFxhlww5evRo9gqZUIleffVVr56q71tvvZVQyiQDAQhAAAIQgEAjBBivlo9XYQITNIAG0AAaQANoAA2gAVcDjYy3m3EtRosCT7C6QuU9HRcaKKYG8mZMyFt9uC+LeV/S7rR7WhpoxsNFu+ShyA7WZLFw4ULz+eeft0vR6yrn+vXrvfquWLGirjS4CAIQgAAEIACBZAmkNeYjXZ4n0AAaQANoAA2gATSABvKigWRH4MmnhtECowXRDNAAGiiwBvJmTMhbffIyGKIeDOzRQDY0kPyjRHum+Otf/9pMnDjRMx68+eab7VmRGkqtZVHcOp86daqGqzkVAukRkMnps88+K73yYHhy65MeNVKGAATyQoAxcjbGyLQD7YAG0AAaQANoAA2ggexqIOtjf4wWBZ5gpePIbsdB29A2zdJA3owJeatPs3RAPvQ5aKAYGsj6g0mzyrd3717PZLF8+fJmZdvyfLZu3erVWxEuirwdPnzYiIdex44dK0Nx6NAh77j6xyxuJ06c8MrY3d2dahE/+eQTLy8xe//99xPLb9y4ceayyy4rvdQu2vbs2ePl9+KLLyaWV1RCZ86c8fJT/bS0UL2b+hRbnwMHDtSbDNdBAAIFIcAYvBhjcNqZdkYDaAANoAE0gAbQQP0ayPqjAUYLjBZEM0ADaKDAGsibMSFv9WEAVv8ADHawQwPlGsj6g0kzynf+/HkzZcoUz3Dw85//vBnZZiIPTY7b5VK0V5SLom533XWXNxk+bdq0Mgx33nmnd3zGjBllx7PwxdKlS70yDhs2LNUivfLKK15eMhGEmVPqKUBfX5+X7pgxY8zFixdLydx2223e93PmzKkn6ZquOXr0qJef6vf666/XdL178jvvvGOuvPLKUnqqh0wqbBCAAASiCDBeLR+vwgQmaAANoAE0gAbQABpAA64GosbSWfkeo0WBJ1hdofKejgsNFFMDeTMm5K0+3JfFvC9pd9o9LQ1k5QGkleV46aWXPLPB/PnzvYndVpRJv9pfu3at9/rwww9TL8a6deu8+muSu6hbM40WDz30kLn55ptLr46OjsSQt7vR4qOPPjLDhw/3DA6ueaOdjRZq4Hnz5nn1WrlyZWJtnlRCa9as8TSpe6GZ2wMPPODlvXDhwmZmTV4QyCSBtMZ8pMvzBBpAA2gADaABNIAG0EBeNJDJgbxTKIwWGC2IZoAG0ECBNZA3Y0Le6pOXwRD1YGCPBrKhAecZoLBvtWSGjerQ29vbMg5aIsEuL2D3PT09qZfn+PHjXv2TnPRPveAJZ9BMo0W1vOqtWrsbLRSpwmp/7NixPgztbrSQaeqaa64p1e/qq682inKRpW3JkiUe++uuu66pRbvjjju8vGfOnNnUvMkMAlkkwBg5G2Nk2oF2QANoAA2gATSABtBAdjWQxXG8WyaMFgWeYKXjyG7HQdvQNs3SQN6MCXmrT7N0QD70OWigGBpwHwKK+P7TTz81EydO9IwGrVo6Q5OwN954ozfZaCebm2G0CC6d8u677xZRCqaa+SHJpUOq5VVvA3R3d5vHH3+89JKu09ySXjpEy9hcccUV3j0QXMJn0qRJXt127NiRZtVKaSe5dIgtrKI12Ht79uzZ9utM7DFaZKIZKAQESgQYgxdjDE47085oAA2gATSABtAAGqhfA1l/dMBogdGCaAZoAA0UWAN5MybkrT4MwOofgMEOdmigXANZfzBJu3yvvvqqZ7JYtGhR2tmFpn/x4kWjX+/bCVh33wyjhQrV1dXlcdAEcxG3auaHdjBaNLPdkjZaLF++3LsH7rnnnmZWJTSvNIwWb775pldHRbU4e/ZsaN6t+BKjRSuokycEwgkwXi0fr8IEJmgADaABNIAG0AAaQAOuBsJH0tn5FqNFgSdYXaHyno4LDRRTA3kzJuStPtyXxbwvaXfaPS0NZOcRpDUl2bt3r2cw2L17d0sKsWnTJm/y1TVZ6H2zjBaDg4Mehw0bNrSEQ6szxWhRWwskabT47LPPzE033eTdB1nQYBpGCxG+9957vXquW7euNugpno3RIkW4JA2BGgmkNeYjXZ4n0AAaQANoAA2gATSABvKigRqH2E0/HaMFRguiGaABNFBgDeTNmJC3+uRlMEQ9GNijgWxooOlPGhnLcOnSpZ7BQBPHzd5ef/11c9VVV3kTr60yWmjZhueff770mj59eqIYjh07Zvr6+kqvN954o5T2J598Yn72s58ZmUymTp1qnnjiCbNgwQKzf/9+89Zbb9Wcv5aAUftpSYk5c+aUlpiYMWOG2bp1q3nppZeM8qu2pWm0UNQSy0D74cOHe23+2GOP+Y6pLezmsjt58qT92vz6178uRSFRHcXu8OHDpWPvvPOOl5b9zrso5I364VWrVplZs2aZp556qsRNOhBDtcW5c+dCrvriqySNFnv27PF46B5wGdgCaCkRy/C1116zX0fuf/WrXxkZiGRmmDBhQilqzOLFi0v1+uUvf2k+//zzyGt1IMpoobKJ7cqVK82zzz5rxo0bZ9auXWuGhoZK7VIxUWPM+vXrvbreeuutRkv3JLGpLRUVZMqUKaV2VNnUriqnIveEbbo3LFPVw/Y/11xzjfe9jr/88sthl5e+k+Y6OzvN/Pnzzfjx482jjz5a4qJ+RN/reHATe5uv9jfffLOXt5a+cY998MEH3uWnTp3yjr344ove91Fv3nvvPe98pal+ImpTeuKn/khleOaZZ0r8VqxYYYLL2ESlwfcQSIoAY+RsjJFpB9oBDaABNIAG0AAaQAPZ1UBSY++00sFoUeAJVjqO7HYctA1t0ywNtKsxQf8Y1fr2wZdbn+AxfdZ1zWJLPtzHaAANZE0DaT1QtEu6mpS0BoNKk8pp1EeTfloiwU5uatJVE8L2s/bNimih+k2bNs1jkeSSBtdff71XJ010a4L+lltu8b5z62vfP/DAA6GT7WHtcOjQIXPDDTdUTE8Tx7t27Qq73PsuTaPFhQsXKpbP1lv7AwcOeGUaNWqUd92aNWtK38tMovq41+g7bTIO2e+HDRvmpRN8ozxc7dlrgnuZgLZv3x68vPQ5SaOFJrVt3g8//HBofj/96U+9c2QEidp0X82dO9c716Yb3N93331GhouoLcxoIZPE5ZdfXjFttUElE8e7777ru15mkEa2/v5+M3LkSF+awbrq85gxY0r3npuXyz3sGvvd5MmT3ctK72X8ee6556ryUBoyYChqid3URjbtavuDBw/ay8zTTz/tXffII49430e9iWPgkUEmzr2ge/HEiRNRWfE9BBIlkLWxIuXh+QUNoAE0gAbQABpAA2ggaxpIdACeQmIYLTBaMOmIBtBAgTXgGhOy9ge0UnmWLVtm3LLHfa/rKqXLMQaSaAAN5FkDKTxLtE2SigpgTRYyGTR70y/A3UlGTbjOnj3b910zjRZudI9f/OIXieG47rrrvDrJzHD11Vd7n936B98r6sPx48cjyxF3Qt1Nd9KkSZFRGtrBaNHV1RXKrhajhTTlMonzPsxskZTRQqYEVyMy44Rtt912m1fuKKPFm2++GWvS3NZZhpWoJYOCRgsZM+x11fYyBKh/idpco1FUfaOudb9XGa+88srY5ZLB2I2MUq/RQpEiZAyrxsE9PnbsWM+AUq/RQlFXbJpJGC3U51aKKGTzsnuZxqQxNgikTSDP407qxnMVGkADaAANoAE0gAbQQBIaSHtM3mj6GC0KPMGahMBJg44SDbS3BlyDQru15fe///2azBY6v93qSHnb+/6i/Wi/rGmg0QeHdr5eZgJrtJDJoJlbcBLXThy30mixefNmj4eWrEhqcyfR7YSl9prk1rIXCs2vyWZNnAYnPTWJ7E4Mu2VSRCo3Pb2//fbbjZbT2LBhQyns/9133112jiZ8w7Y0jRYyE9x///3eK1hPe0yRPLScjN3ciBbS6hVXXFFWH9Vbv9zXVi2ihZaQCE7MK/LFk08+WVpCREutzJs3z7eUg9IXm+CWlNFCyzK47aglS8K2akYLRWFxo6fYNLWUhfSliCCKrBCmx7A8g/eoTU97mQxk2tGyJNJbmM4eeuihsGqUvnMNDmrjejYtORKMbKJ2Ul23bdtWWlpGkSiCxiY3v4ULF3qadJezUR2tJrXfsmWLV0RpORhBQ1E+Ro8eXVo+RHlrORp9dpnpvV06SGV30690P7jGhiSNFooyE9TCnXfe6eOniEdBfop+wQaBtAlkbaxIeXh+QQNoAA2gATSABtAAGsiaBtIekzeaPkYLjBZMPKIBNFBgDbSz0aLWqBZEs2CQmLVBIuVBk83WQKMPDu18/c9+9jPPWKBIAc3aTp8+bW666SZvEvKOO+4wH3/8cSn7VhotFOnAGk/c5Ssa5RKczNSEq6IDfPjhh2VJy2TgTqjr3IkTJ5adF5yc13kLFiwwmsB1N00Ka9I3uNzDwMCAe1rpfZpGi2Bm1fKy57tGC9XRvsRIS6GIg9WOrqlmtFi+fLmXhtJauXKlF2XA5qn9mTNnSm1k89P+V7/6lXtKaRkK93i95pxglI6o5TxcXVhjklugYIQYRW+QWSK4KRqDlidxy65lSRRlwd2ijBYyMly8eNE9tfR+06ZNZToLy18ni7ubf5BtWeIhX7z44ou+NHSfBPWvy9555x0jA0G1/JYsWeKdo3s2anvttde885Tmgw8+GBm9o6Ojw3duWGQU5a1LBSMAACAASURBVKM+0JZv5syZUVmbJI0WWgbE5qm9TDhh/KQX937VuR988EFkGTkAgSQINHssSH48f6ABNIAG0AAaQANoAA20mwaSGHenmQZGiwJPsLbbzUR5+QOABpLXQDsbLaSHuFEtiGaRvHa4H2GKBtpPA2k+VGQ9bYWNt8YCu/RCM8qsZQXsBJ8MADJ82K2VRosjR454PKKWU7DlrGUfNFrIPHDu3LnIJGTAcJdWECs3yoMuVJQCy1B7RSuotGmC1z1fv0qXCcPd3MnUsKVk3MlqRTFoZKuWl007zGihCfWoZSmqGS1cg4Eb2cDm5+5l5HCZBY0USUW0UGQIm48iNISZGFSuSkaLU6dO+SJ1KEKCvova1PYuC+W/fv163+lhRgtFX6m07du3z6uL0hTjsPocPnzYd57uvVq3tWvX+tI4ePBgZBLB/Hp7e8vOjWu0kKHEtpf2b7/9dlla9gvp1DU5hRlkdG4rjBadnZ2+elRapknGLLfOamc2CKRJgPF0+42naTPaDA2gATSABtAAGkADzdVAmuPxJNLGaIHRgmgGaAANFFgD7W60iBvVgmgWzR38MNiENxrIpgaSeHho1zQ0+WiNFnbphbTrohD87oTdokWLfFm20mgxNDTk8Yj65bmvsDE/BI0WlSaEbZLBKAfuBK2WEnAZagI+GI3ApmP3mlhXFA33OvVJ7lbN/JAFo4XKEDSIuHWoZrRQ9AEte6FXNdPA3r17fbxkTHK3pIwWjz32mJePln6J2ioZLRRlwm1bfa62Bcuv9N0taLRQhIxqOtP1wSUzjh8/7iZbeh+MyNLd3V12TrUvgoaHZ5991nz22Wehl6ncMiPZV1iZ4hotlIbVkOpaaZOhyl3uZtasWaGnt8JooSVOXM0oWkZU+yrShWWnvaKJsEEgTQKMmbM5ZqZdaBc0gAbQABpAA2gADWRHA2mOx5NIG6NFgSdY6Siy01HQFrRFqzTQ7kYLcasW1YJoFtxfrbq/yBftZU0DSTw8tGsafX19nrGg0q+Zk6qfDAJXX321N7k3cuTIsom9VhotNHlojSebN29OqtrGNVpoIr2SUcBm+sknn5hhw4Z5rBTBwm5qN3eCVOaVOJuWQ3Gv00Sru7WD0WLnzp1ukcveVzNalF0Q8YUm4hX1w+WVltHCzadSlI1KRotnnnnGK6siKERF/AhW112KQnWV7uwWNFrIoBtnU1/icgszUbz11lu+cxSdotZNf0vcfPReGlZ+YcvyVEs/rtGiWjr2uMowdepUXxmzZLSQxoP8ZGRSdKP333/fVoM9BFpCIGtjRcrD8wsaQANoAA2gATSABtBA1jTQkoF6DZlitMBoQTQDNIAGCqyBPBgtqkW1IJoFg8OsDQ4pD5pslQZqeEbI3anNjGihX5rfe++93sSefuWtX7UHt1YaLZoR0ULLXsTdHnroIY/X8OHDvcuCSybE/XX5yZMnvfQ0wbpgwQIvTb3JutFCBgL9sr7SVqvR4sKFCyUdKqKLrpVhwTU0uBPRaRktbrrpJq9dFN0ianPL5UY40flu21WKihFM2+Wlur722mveKUGjhT7H2d555x2vPkozLLrGmTNnfOd0dHTESbrsnCeeeMKXjtteMrDI2KDIJHGMF40YLbR8iCLV6N6cMmVKqa+78sory8qWJaOFYLrLOLns9P7uu+82M2fONLo3PvjggzL2fAGBNAm0akxIvjyPoAE0gAbQABpAA2gADbSLBtIcjyeRNkaLAk+wtstNRDnp8NFAehrIg9FC+oiKakE0i/S0w30JWzTQfhpI4uGhXdPQxLGN4KBfMae5BcP8r1y5MjS7Vhotjhw54vHYvXt3aPnq+dKNaKHJ3LjbpEmTfBO1NtrAtGnTfN+fPn06VpIyKcisYCdUNcnqbu5kvfIIbq1eOiS4tEWwfPrsGgcUESRsU0SR3t5eo0n6a665xuNhuUTt0zJauG0ybty4sCKXvosyWqhd3eUpFKUi7rZr1y5f/RX1xG5Bo8Ubb7xhD1Xci6/LcPz48WXnq8zuOdJ6PZvS0T3lMnTTdd+PGTPGKBrMxYsXQ7Oq1WghHrpPZIJy86n0PmtGC/Fbvnx5LH5aJkX6iBORJxQwX0KgBgKMp9tvPE2b0WZoAA2gATSABtAAGmiuBmoYXrfkVIwWGC2IZoAG0ECBNZAXo0VUVAuiWTR30MMgE95oINsaaMnTRkYy/dnPfuYZC7q6ulIt1apVq3yTkZrU1y/Og6/rr7/ed96tt97qnXPs2LFUy6glD6zxxJ1wbjRT12gRZTAJy0O/jHcnbe2v8oNGi08//TTs8tDvXGPBww8/7Dsn60YLRfiotlUzWsiU4i7V4fK172+88Ubz+OOPm7lz5/r4p2W0cNskaH5x6xvXaFEpDTc9vZfhxNZbe3dplqDR4tSpU8HLIz+7aYplcFMkEfecWiK9BNPS55dfftnMmzfPKJqHm27Y+yeffDI0MkotRgtFFAlL236nJZK0DIz06Ea2yJrRwrJUdKH58+fH4qf2rKXPsXmwh0AtBBg7Z3vsTPvQPmgADaABNIAG0AAaaL0Gahlft+JcjBYFnmClg2h9B0Eb0Aat1kBejBbiGIxqQTQL7q9W31/kjwazpoFWPGxkJc9f/OIXnrFAE4JpbkGjhZ2QrGV/6NChNItoNm/e7PFI0tThGi1mzJgRuw5jx471JnM1cWt/ie9OCIvf66+/HitNGTVc3tOnT/ddl3WjRVhkBF8FqkS00OTw/fff72Nw7bXXGk3yy2Bw4sQJoyUt7Pbqq6/6zk3LaOGaAx588EGbfdk+ymihE93lRzTBH3dbv369r47uMjRBo4X67jhbcFmQMM0Hz5FJIqlNS+Rs377dTJ061cio5Wrevg+L2OLeV7pno7awvuzRRx8169atM+o3tHSKG/XBbd9mGy22bt3qq//7778fVS3ve/FThCPxczVn2WlfbwQSLxPeQKAKgayNFSkPzy9oAA2gATSABtAAGkADWdNAlSF1yw9jtMBoQTQDNIAGCqyBPBktglEtiGbBoDBrg0LKgyZbrYGWP3m0sAC//vWvPWNB2MRjkkULm5x0J+7ivE/baCGziY1oIRNKUptrtAhGkaiUxx133OFNko4cOdI7VaYAl5eiEsTZNInuXqeJYXfLutFiwoQJbnFD31eKaHH48GFf/e+77z7z1ltvhaajL/Urf5dXWkaLBx54wMvn7rvvjiyPO+mtiAruJl3Zsso8EneTCcJep72NmqLrg0YLmRfibC+99JIvzaDOlIa4u/muXr06TtI1nyPDg/oNl4/ylXFJy2a4WxyjhSJx6FpbdkUjqRb9ppVGiwULFnhlVZnjGC1cJuKnJZVkJLF11l5ROohq4ZLifdIEWj02JH+eT9AAGkADaAANoAE0gAayroGkx+BJp4fRosATrFm/eSgfHTwaSF8DeTJaSC82qgXRLNLXDvcnjNFA+2kg6QeJdktPy1NYc8G5c+dSK75+6b18+fKqL/0a353Qe+6557xr9EvxNDeZTSyLs2fPJpaVa7RQ3eKYOLSsi8th3LhxXnmOHz/uOyZGcbbZs2f7rjt48KDvsrwbLaQ/l2nQOOGDYYzZu3dvxfNfeeUV3/F6o6CobW25hg8fHiyG97mS0WLmzJleGkpLppJq20cffeSLhDFs2DDfJUGjxejRo33Hoz4EdRZmBAqaWLZt2xaVXOT3MtVoeRe9wvJwL5RhwI0QI0aKYOJucYwWr732mo9zVIQKm+7HH39sLr/8cu+aqPNdU5XaMmpztRKnPR555BEvb9XZNVqsWLHC46dlkyptiqbzzDPP+NJyo59UupZjEKiHAOPp9htP02a0GRpAA2gADaABNIAGmquBesbZzbwGowVGC6IZoAE0UGAN5M1ooSgWX/7ylw3RLJo72GFwCW800B4aaOZDRhbzcqM4aOK41VtwkrbaBGBS5dUEpDVZBJfUaDSPoNEiTvQQLWdhJ9+137Rpk1cMTd66S0Xo+AsvvOAdD3vzxhtv+CZ89Uv806dP+07Nu9EiOFFcyVikifnHHnvM1wZBY0ZSRgsZBWxba1L+k08+8bWL/VDJaKGoCjYN7dWWwYgNNh27X7x4se8a6d/dgkYLpVvNTKIoOYqoYcty1VVXmQ8++MBNtvReJh97jvZxjCHBRNwoC3feeWfwcNnntWvX+vKUmcnd4hgt9uzZ40uju7vbTaLsvZYjcuvZqNHC1YruYek0atMYxM1b712jxZNPPukdl7aqbZ2dnd75SquaFqqlx3EIVCLAGLo9xtC0E+2EBtAAGkADaAANoIHWaaDSeDoLxzBaFHiClY6hdR0D7GGfFQ3kzWghrlqTPCt8KQf3OhpAA1nSQBYePlpZBv1q3xoMdu/e3cqilPJuldFCk+iWw4YNGxLlEDRaaJJS5kf9Sjxs0y/N3QnSW2+9tSxMvyIAuOdoeQJFCQjbTp48ae655x7f+VrKJbg102ihJTJs+WWAiNrcCCeNLh2iSW6bp/b9/f2h2cqgsHDhQt+5Or+vr893flJGi6BJQktvhG2VjBbSkrsEico7efJkI1NO2CaDgJZ/sDz0/tSpU75Tw4wWN9xwgwkaFOxFigIzZswYL02l3dHRYQ/79kGN/+pXv/Idj/Nh5cqVvrwqRcXQkh/u8iEygASXvnCXnZHhJcyoon7CMtNeS69EbTpX+bjnT5o0KfR0GUXseZUi1ATNIl1dXaHpaWmWESNGeGnatF2jRTAt18wVTDRoPJJeogxBwWv5DIF6CGRpnEhZeG5BA2gADaABNIAG0AAayKIG6hlnN/MajBYYLZiQRANoAA2gATSABtAAGiiABpr5kJHFvF599VXPYLBo0aKWF7FVRgtNWFqjhSaYk9zCjBaa+Hz66aeNzC0yQmhZlH379hmZCeykqN2HTSBr4tg1K+hcTX5qeQyF9D9z5kxpaQRNpuqX7zYt7W+55ZbQSdJmGi0ef/xxr0ya1F6wYEEpaofqqkliuyVptNi+fbuXpzhcf/31ZseOHebDDz80im4ho8quXbtCJ6h1/rx583wRAZIyWqit3PbZsmWLrb5vX8looRNl0HDT0XtN4EtjWq5GkSWOHDlS0nnwPPEPbmFGC10nnSn6g46LnThokj6ox7CoKTYPad+WQSagejbp3KZh91OnTi1FWpBxQ0YJRW1R9AzXZKFzFQ0juAWjTzz11FNm48aNRpq00RtkJrF52b10oXtYxgOZVRSdQ32JPe7uR44cWdJ30KTgLvFxxRVX+O6Ht99+2ytqcMkVnSuDiPJVNBFpQJEn3Kgibv6u0UJLp7jH9F7mnKGhoRI38RNH1ceNHqLzHnzwQa9MvIFAGgSy+I9sysQECxpAA2gADaABNIAG0ECWNJDGODzJNDFaFOCf6lm6ISgLHTQaQANoAA2gATSABlqjgSQfItoxLf2qW8tUWJNBcDmJZtepFUYLTShOmTLFY/Duu+8mWu0oo0VwkjPss4wXYb+sVwE1wa1oF2HXRX134403lgxkYRVsptEiGF3CLa8iPNgtSaPFe++9VzJXuHlVei8jRtjx119/vVS8pIwWSmz06NFeXlFL11QzWigdGWtkXAkrd9R3Mr1okj64BY0WmtSPSiP4vSI5KFpO1DZ8+HAvLS2HUe8WXP4kWI6wz8OGDSsZEoJ5BuvrXisDgt3Gjh3rld09J+p9GDdF9HA3RcaIul5GEXdzTSpR19jvFdHOvtfeNVooTRmz3ONx3svEIZMLGwTSJMCYuDVjYrjDHQ2gATSABtAAGkAD7aOBNMfjSaSN0QKjBb9gRQNoAA2gATSABtAAGiiABpJ4eGj3NNavX++ZDHp7e1taHf2y3p3s6+npSb08x48f9+oftdRBI4VwjRaaGNbEslvHsPeanNWv6att+oX9+PHjq6anPDShrqgGUVszjRaKWnH11VeHljsto4XqreUcwia+g22g6AwyVLgGCHvOa6+9VkKYpNHCXbZCy8CEbXGMFrpOS3u459pyB/fiIGOGloUI24LGA0XDCC5BE0xTn3/6059GLmOjfBR9wb2ukT5HS6bInBXXXCLzzMsvvxxW3RKH4PIrtpyu0UL3nLvUhz0nuJehQxFT1q1b56uvzpPBwd3EJOp+CBotFOEiuERLMG99loEuGLUiaLRQGRSRIy4/9WXqL9kgkDYB/sHfPv/gp61oKzSABtAAGkADaAANtEYDaY/JG00fo0UB/qnOzd+amx/ucEcDaAANoAE0gAaypIFGHxzycL3CzduIFvPnzzeavCzSpolQW/++vr7Eqx40WigDTdJPmzattIyHnSRVtAn9Wl6TsDpey6bJWJlUFOLfRmLQL8+1ZIImUhVdIGpC3eYzZ84c88wzz5Re3d3d9mtvrygUlY57J8Z8o0nfNWvWmEmTJplnn33WS9saGZTMsmXLvO+jltRws9uzZ493flRkCEUsEas77rijtAyGOGmSW5PXM2fONEpDS7NoUzuoTcRUURq0ZIKNeKLJcctDe32ud5PxxJ3sDpvMds0TaqtKmyJUaDkPaezee+/1zCWKgCLWiqigZSgqbaq7Wz8tIyEN7dy50zz55JM+Y4BMOjIjaAkeGREqbatWrfKMB9K8ouo0usl8sHDhwpIRxL3fxFRL5agNdQ98/PHHFbNSWbR8jLQzbtw4r/7B5Xt0nr6TEUeGCmlIecmAob5EBhYbHUjL0ujeURQPaUis9u/fX1YO3Q+rV68uux9sBBX3AkW50b0jY4hr0FA5VFdrXhEXtw2j2kZLF8kEJiON7T/UL6lOKrfaW/eF6sIGgWYQyNI4kbLw3IIG0AAaQANoAA2gATSQRQ00Y1zeSB4YLTBa8AtWNIAG0AAaQANoAA2ggQJooJGHhrxcG1w6o9oEbF7qrXpoctOaLLS3k6NJ1tGd+NVkZnDTpK0msZPclF7RDDP18JNxQJPv1UwoukeilnCpJ9+wazSxb003Yctp1GK0CKb/2WefhS4PEjyv1s8ydFQzLwTTdCOnKJJHGpvKdObMmartmlTen3zySVXDiDSmdkh6kylI/VaSJgjVxxprki4v6UEgDoEs/iObMjHBggbQABpAA2gADaABNJAlDcQZV7fyHIwWBfinepZuCMpCB40G0AAaQANoAA2ggdZooJUPHVnKW7/2toaDYFj7LJUz6bJs3brVq7eWUEljq2a0SCNP0mw/Ai+88IJntFCkh6Cx4+abb/aOK3pDO25atsOaSRQt4b333mvHalBmCEAgZQKMiVszJoY73NEAGkADaAANoAE00D4aSHlI3nDyGC0wWvALVjSABtAAGkADaAANoIECaKDhJ4ecJKBfpk+cONEzHbz55ps5qVl0NfQrcLfOjSz9EJ2LMRgtKtHhmEtg1KhRnhHBXV5C0QpkTLAmhXY1WmhpFluH8ePHu1XnPQQgAAGPAP/gb59/8NNWtBUaQANoAA2gATSABlqjAW/wnNE3GC0K8E91bv7W3PxwhzsaQANoAA2gATSQJQ1k9HmkJcXavn27Z7TQRG615RRaUsgEM1UECxvFY8WKFQmm7E8Ko4WfB5+iCQwNDXlGhDvvvNP09fWZHTt2mPvvv9/7XkaF7u7u6EQyeuTkyZOeWeTKK680+swGAQhAIIxAs8eJx44dM0V4Jc21CMxUxyS5FYFZUryKwMrWMSlmSsemmfd9EszyzsitXxK8bBpuunl+b+ubxD7PnGzdkuCkNGx6RdgnwSxsHJ2l7zBaYLRIdCCdxE1DGkxKoQE0gAbQABpAA2ggeQ1k6SGk1WU5e/asmTJlimc+OHr0aKuLlFr+r776qldPmS3eeuut1PLCaJEa2lwm/Nxzz3mmiuHDh3vvbSSIq666yrz99tttV3dFsLB1WLVqVduVnwJDAALNI9Ds8W61f+bLBNdOr6j6JM01Kp92YqWyRtXDfp8kN5tm2L6duIWV336XFC+bXtQ+L7xUv6SYKZ088GrWfRnFyn7fThqrxgyNlf8dt+0ctW8GM+XdTjqLYqXvk+JVKY888UqKWfNG5/XlhNECo0VinUNSnQzpJD+xAlOYogE0gAbQABpAA/U9LuT3qsOHD3sGBJkutLxG3rZPPvnEzJkzx6unInmkuWG0SJNu/tKWiUJmCpkSFPnBmhO01/IhXV1dbVfpEydOePUYOXKkOX/+fNvVgQJDAALNI9Cs8bn+yZ2XbXBw0NhXcNImbNKiXsZ5ZBbkFTVhWS8zXZeXLUpjlqGrtXp5obH6ns+LqDFppR6dobHaNQaz2pnlse/X3wDb37t76cO+6rkndQ0ay6fGCmm0yMsfZOoBAQhAAAIQgAAEIJAfAvU+qMW9Lj+kkqnJhQsXTEdHh2dCWLJkidF3edo6Ozu9+k2bNs2cO3cu1eo9/vjjZsyYMaXX5s2bU82LxPNBYOvWraXlQm6++WYjY8ITTzxh5s6da37+85+3ZQW3bNni3QMvvfRSW9aBQkMAAs0jEHcM1+h5efqn/sDAgLGvsMlwOwFi9/WyyyMzyys4gWRZ2X29zHRdXjarMe0tNybbolu3Fl7SGRozZf1YGvdlHvuxOPdkIxrLIzPbh6WhMXsvR/cO7XWklr7M1r3WfR41lvZ9KcZZ3zBaZL2FKB8EIAABCEAAAhCAQCEI1PqAVuv5hYBYYyX1i/qJEyd6ZoRdu3bVmEJ2T9fDrpYKsS/90p4NAhCAAAQgAIHsEKh1LFfv+Xn6p74iktnXkSNHjJZ/6+/vL02Gh02Ew8x4vMTNZaaxYlLMpLGi6MydrFSd0VhzNCbOeddY2GSlvbfq0VneedH3Vx7P2L+Vbt8vjdH3R3MLY2Z1Rt9fzi2MV9Ias31fee7Z+gajRbbag9JAAAIQgAAEIAABCBSUgH2ASGtfUKxVq60HZ2tG0F6f23179dVXzYQJE7x67dy5s92rRPkhAAEIQAACuSOQ1pgvmG6eJtt6enrMgQMHSq/e3l5z6NChkpFAhgv7q12ZBxqZnBS/PDM7ePBgiZlMF+6EWyPM7LV5uUmlM6u1vr4+Y5mFGXuC91vcz3nWmL0vrcbsBKXVSVxGwfPyxsxqTH1ZlMYaYZY3XlF9v/oxNFbe+1p9iZurMXtfWqNdoxrLq87o+8s1FfwmqLG0+n79Lcj6htEi6y1E+SAAAQhAAAIQgAAECkEg+I+kpD8XAmKdlXSX2JDZ4vjx43Wm1PrLfvnLX5rJkyd7JovFixfnbkmU1lOmBBCAAAQgkBSBjRs3libLk0qvndJJeqwXlV6eJkH27Nlj9u7da/bt21eaCHcnj+yvTjFa+O8Cy2z//v0eMzsZkhQzO1Hnz7l9P0ljeomZndwVMxsRxE7qSmtR91217/N4X7oas8aBpDQmnnllZifC7X1pjWPuRHg1PYUdzysvTe6q79dEuH5RL41Z05jti8J4xPku78ysxpK6Ly3v9u3t/SWn7/fzqPapGeMLe99WK0urj2O0aHULkD8EIAABCEAAAhCAAASMqfufdPbBo9oeyNEEzp8/b5YtW+aZE7ScSDsutSGTxbRp07x6zJ0713z00UfRFecIBCAAAQhAoMUE7r//fvOlL33J/O3f/m3hDBfVxm5JHc/TxNH27dvNjh07Si8t+WYNF5rU1SR4cPKoXoZ5ZKYIZ2KmiSRN7LqTlNY4oHrXwyxvk21WZ93d3Wb37t1Gk0li5k5S2knwenjpmrxrTJPh0hj3Zfgf2SiNRRlU6tFZHjWme9L2Y9IYfX+4vvSt1Rh9fzSj4BHLLNj32/vSGnoaMdnp2rxslleYxpLs+9X/ZX3DaJH1FqJ8EIAABCAAAQhAAAKFIFDPP09quaYQEBuo5Mcff2wWLFjgmRTabRmRV155xUyaNMkr/4wZM8zp06cbIMKlEIAABCAAgfQJWKOFzBZFM1zUMo5r5Nw8TbYpCllXV5fZvHmz2bZtm9E/9+0kuF2H3poGmAj54v51mW3dutVoAklmC01SyjigX8/bySNppR6t6bo86UyRdqzO7ESSNahows2NOFAPL12TJ15Bjdn70mpME26NaixvzFyNqS+z96U19CR1X6b/V7w5Obgao++Px9xlZvt+a06k7w9n6N6XafX9eTJaBDWmvt8dXyTV96v/z/qG0SLrLUT5IAABCEAAAhCAAAQKQaDef9LFva4QEBus5NmzZ01HR4dnVpDZQr9i+/zzzxtMOd3L9Y+4CRMmeOWWyeLdd99NN1NShwAEIAABCCRAIGi0KJLhIu4YrtHz8jShu379erNhwwajyRCZLRTdQr9uthO6MltgtPDfmJaZNQ6ImcwpWubB/hq80UnwvBktpDG9xGzLli2lX4ZbQ4+WLNDkkdVZvfdnHu9LV2N6hkpSY+KcZ2aa1JXG1JfZSCBJ3Jf+3qB9P4X1Y/T9ldszjBl9f2Vmzej782S0aIbG7N/Yyi3X+qMYLVrfBpQAAhCAAAQgAAEIQAACdf16zD50xNmDOB4BRbZwlxGR2WLp0qWZjA5x7tw5o4dbldG+5s2bl8myxqPPWRCAAAQgUDQCUUaLIhgu4ozfkjgnT5OTq1atMqtXrzZr1641+iWlfqUr44B+QUlo7/DewzLTmFHMZBywEQdkGpA5RUuuaPJHWqlHc7oujzpbt26dZ+pRxAH9GlwRB8RMk+AyW9TDS9fkkZerMXtfukvUNKIxMcvTBKV7X1rjmP01uNVYEvdleK/Qft9aXrong32/1Zg1pkgn9d6XedWY7ftlTpHZgr4//B5wdWbvS7fvtxEaGun7i6qxRu5L3c9Z3zBaZL2FKB8EIAABCEAAAhCAQCEI1PvPgLjXFQJiQpU8f/586Vds1ryg/ZQpU0r/3Lt48WJCuTSWjJYKmTVrlmewUBllCJH5gg0CEIAABCDQLgSqGS3ybLiIO4Zr9Lw8TejKDLty5cqS2UKTunYJETtxpHDodnKykX/q52kiRMxWrFhh1qxZUzLobtq0qWROSHcReQAAIABJREFUEbMkJ3TzxGz58uUlZjL12MgW1jigiAMYLfx/YYIa031pIzQEJ3S5L79g5zJzNRa8LzWhqz68nr8Dee37Zbag7/ffg2GfXI3p76X6fpkGghrTPdmIxvLc98tskXTfnydersZ0X1bSWCN9v/q/rG8YLbLeQpQPAhCAAAQgAAEIQKAQBOr550kt17Q7RDvR0sz9D37wA/Pss8/6zAyLFi0yJ0+ebBnO999/vzS54JpAxo8fb37yk5+Y3/iN3yitb99MRuT1JZh/CQbcB2gADTRPA3/zN39jNJmeh62WcVwj5+Ztsk2T4DJb2H/qK6oFRovoO0ITIWIm04CYaXkHTRxpaQeMFuHcxEwvMdMEZRqTbXm6L2X2thpTtBlNtsloYTWGAapcZ8H70mosOAmO0eILdkFe0hh9f7mu3G+CzML6fi1BitHiEjXLTJEtbIQeaxpLymSXJ6NFWN/vji/U91uNYbS4pLOmvmvkAaLatU2tCJlBAAIQgAAEIAABCEAgBoFqY9hGj8coQqZPadUk1n/5L//FjBo1yme2kMlBvwp84403msbsnXfeKf3TcsKECb6yPProo+aP/uiPmOxnsh8NoAE0gAYKo4Evf/nLpUhTTfsjnFJGjY7t4l6fpwndJUuWlCbAbYQGTRxpKQyMFtEitcw0caTxqyZ0NXGkEPLWaGEnQvhV8xccxUwTSNbQo7D77mSbNQ40Ej4+j/el1Zjuy23btnkaS2qyLU8TlO59aZdCsuYUO6Gr6DwYLS7dk5oE1z2pfsz2/dbMo6WjiGbk/zvgasz2/ZoEp+/3c3I/WWa271e0Gdv379+/31tqq5G+P6/9mL0vXY0l1fdrvJv1jYgWWW8hygcBCEAAAhCAAAQgUAgCcf9ZXu957Q6xVUYL5fvVr37V/OhHPzJPP/20z+Qgw8XixYtLazR/9NFHiSP+9NNPzQsvvGD0T0s3goXeP/fcc+Yf//Efze/8zu8UZmKtlRog7+b9Wh3WsEYDaKCSBhTRQhMqedjqHdPVel2eJnQ17rK/OLX/1MdoUflusMzsJDhGi8q8dDRotAhOtmG08DN0NaYoINKYog3YCd2kJtvyNkFpzTwYLfx6CvtkNYbRIoxO+HeWme37ZRhzJ8G1BBImOz87a7SQmVMRoNT3yzQmMydGCz8rfXI1Zvt+V2NJ9f0a92Z9w2iR9RaifBCAAAQgAAEIQAAChSBQ6z/Naz2/EBBTruSZM2dCo0rI+KBIE3q41D8sTp06ZT7//POaS3Px4kXz7rvvlowbeqifNGlSmcFCeWli4b333qs5fS6AAAQgAAEIZI3A/fffH8swmCeDhW2DWsdy9Z5fBKOF/VWznQDXhKxe9TLL04SuOxFif9VMRAt7F4bvMVqEc4n61tWYnWzDaBFF64vvXY1htKjMSketxjBaVGdlzxAzmXkwWlgi1fcYLaozcs+w96U0Zvt+jBYuoQy8r3cgHOe6DFSPIkAAAhCAAAQgAAEIQMBHIM44tpFzfJnxoSECp0+fNt3d3Wby5MmhRgiZIXRMD+paP1bhXwcGBkrRKU6cOGFefvll8+KLL5ZCwfb29pZCXuvXmVOnTo1MT0YOpaUlRNggAAEIQAACeSFQzWiRR4OFbbtGxnW1XIvR4j9qNlxgtKiNmTSWJ2buJLj9VbMbPt4aehoJH5/H+9KdbMNoYXv68L2rMYwW4Yzcb+2ELkYLl0rl9xgtKvMJO4rRIoxK9Hf2vnT7fowW0bxacqSWB4Zaz21JhcgUAhCAAAQgAAEIQAACFQjUOqat9fwKWXOoTgIff/xxySyh0JIyV6Tx0sOr/pl79uzZOkvJZRCAAAQgAIHsEogyWuTZYGFbo9axXL3n53FCd/ny5aUIX11dXSXDKhEtrKrK9+5ECBEtyvmEfeNOgmO0CCPk/87VmP1VM0YLP6PgJ1djGC2CdMo/W41htChnE/WNmBHRIopO+PcYLcK5RH1r70uMFsawdEiUSvgeAhCAAAQgAAEIQAACTSRQ7z/P417XxKoUMisZITSRoXXC586dW7fpYubMmaV1jfv7+82HH35YSJZUGgIQgAAEikMgaLSQwUIGwyJsccdwjZ6H0aK26AzinafoDO5ECEaLeD2LOwmO0aI6M1djGC2q89IZrsYwWlRnZjWG0aI6K3uGmGG0sDTi7TFaxONkz7L3JUYLjBZWE+whAAEIQAACEIAABCDQUgKN/hO92vUtrVwBM//oo4/MyZMnS6GqtXSIlhqRCaOzs9Ns2LDBbN682Sis4r59+0r/zH/zzTeJWlFAnVBlCEAAAkUnYI0WRTJY2DavNnZL6jhGC4wWWqJOEyEYLezdV3nvToJjtKjMSkfDJtuIaFGZm6sxjBaVWbkaw2hRnZU9A6OFJRF/j9EiPiudGdb3s3RIbQxTPzuph4mwdFIvPBlAAAIQgAAEIAABCECgRgJh49Ykv6uxOJwOAQhAAAIQgAAEUiewcePGwkSwCMJMcpxXKS2MFhgtMFoE777Kn91JcIwWlVnpaNhkG0aLytxcjWG0qMzK1RhGi+qs7BkYLSyJ+HuMFvFZ6cywvh+jRW0MUz+70gNCo8dSLzwZQAACEIAABCAAAQhAoEYCjY5xq11fY3E4HQIQgAAEIAABCEAgRQLVxm5JHcdogdECo0VtN7I7CY7Rojq7sMk2jBaVubkaw2hRmZWOWo1htKjOyp6B0cKSiL/HaBGflc609yVLh7B0SG3K4WwIQAACEIAABCAAAQikRCCpf6ZHpZNSsUkWAhCAAAQgAAEIQKAOAlFjtqS/x2iB0QKjRW03qDsJjtGiOruwyTaMFpW5uRrDaFGZlY5ajWG0qM7KnoHRwpKIv8doEZ+VzrT3JUYLjBa1KYezIQABCEAAAhCAAAQgkBKBpP+pHkwvpWKTLAQgAAEIQAACEIBAHQSCY7W0PmO0wGiB0aK2G9SdBMdoUZ1d2GQbRovK3FyNYbSozEpHrcYwWlRnZc/AaGFJxN9jtIjPSmfa+xKjBUaL2pTD2RCAAAQgAAEIQAACEEiJQFr/XLfpplRskoUABCAAAQhAAAIQqIOAHaOlvcdogdECo0VtN6g7CY7Rojq7sMk2jBaVubkaw2hRmZWOWo1htKjOyp6B0cKSiL/HaBGflc609yVGC4wWtSmHsyEAAQhAAAIQgAAEIJASgbT/yZ5SsUkWAhCAAAQgAAEIQKAOAmmP/Wz6GC0wWmC0qO0GdSfBMVpUZxc22YbRojI3V2MYLSqz0lGrMYwW1VnZMzBaWBLx9xgt4rPSmfa+xGiB0aI25XA2BCAAAQhAAAIQgAAEUiJg/xme1j6lYpMsBCAAAQhAAAIQgEAdBNIa8wXTxWiB0QKjRW03qDsJjtGiOruwyTaMFpW5uRrDaFGZlY5ajWG0qM7KnoHRwpKIv8doEZ+VzrT3JUYLjBa1KYezIQABCEAAAhCAAAQgkBKB4D/Fk/6cUrFJFgIQgAAEIAABCECgDgJJj/Wi0sNogdECo0VtN6g7CY7Rojq7sMk2jBaVubkaw2hRmZWOWo1htKjOyp6B0cKSiL/HaBGflc609yVGC4wWtSmHsyEAAQhAAAIQgAAEIJASgah/jif1fUrFJlkIQAACEIAABCAAgToIJDXGq5YORguMFhgtartB3UlwjBbV2YVNtmG0qMzN1RhGi8qsdNRqDKNFdVb2DIwWlkT8PUaL+Kx0pr0vMVpgtKhNOZwNAQhAAAIQgAAEIACBlAhU+yd5o8dTKjbJQgACEIAABCAAAQjUQaDRsV3c6zFaYLTAaFHbDepOgmO0qM4ubLINo0Vlbq7GMFpUZqWjVmMYLaqzsmdgtLAk4u8xWsRnpTPtfYnRAqNFbcrhbAhAAAIQgAAEIAABCKREIO4/y+s9L6VikywEIAABCEAAAhCAQB0E6h3T1XodRguMFhgtartB3UlwjBbV2YVNtmG0qMzN1RhGi8qsdNRqDKNFdVb2DIwWlkT8PUaL+Kx0pr0vMVpgtKhNOZwNAQhAAAIQgAAEIACBlAjU+k/zWs9PqdgkCwEIQAACEIAABCBQB4Fax3L1no/RAqMFRovablB3EhyjRXV2YZNtGC0qc3M1htGiMisdtRrDaFGdlT0Do4UlEX+P0SI+K51p70uMFhgtalMOZ0MAAhCAAAQgAAEIQCAlAvX+8zzudSkVm2QhAAEIQAACEIAABOogEHcM1+h5GC0wWmC0qO0GdSfBMVpUZxc22YbRojI3V2MYLSqz0lGrMYwW1VnZMzBaWBLx9xgt4rPSmfa+xGiB0aI25XA2BCAAAQhAAAIQgAAEUiLQ6D/Rq12fUrFJtk4C5362x7w96zrf6505N5mLn31SZ4rGnNk9z5ee0j/bu7zu9LiwuQTef//90j8r9A8LvT744IPmFqBguS1fvtzj3d/fn2rtjx496uXV2dmZal5JJn7y5Emv3NJkrZzOnDljli5d6kujq6uroSKePn3aqO3Gjx9vRo0aZcaMGWMmTpxoPv/884bSDbu4t7fXK/v69evLTnHbdcOGDWXHs/DFmjVrvDocPnw4C0WiDA6BamO3pI5jtMBogdHCufFivHUnwTFaVAcWNtmG0aIyN1djGC0qs9JRqzGMFtVZ2TPETONwTYJrPKhnkB07dphdu3aZAwcOGI0LNZYdGhoyGifUM+bQdbo+LxtGi9pa0t6XGC0wWtSmHM6GAAQgAAEIQAACEIBASgTqebCt5ZqUik2ydRI427vCvDHy/yl7fdRf3yTkxQufmV889D/K0js14f/UWcL/n733gLaiOvu4Y+8Fe4kxmhg1KvKaGE3UvK8xGqN5MaZZYqGJgCg2EKxgQ1AxCtKbIKzlgrXg/VSKiyaiSBOF76MpRar0DlJkf+t/4nOyZ589e+85Z+bec+/977XO2nNmnl3mN8+eO3ee/9mbxSqaAILYd911V/6zZMmSzLuwe/dutWvXrtxn7969mbeXtAEEz6V/yPft25e0ilj7e+65J88aAagsU48ePfJttWrVKsumUq0bL191n8TLx9C0efNm9fjjj0fK33333erjjz8OraLADi+E9eum923Pnj0F9qXu6NWrV77/jz76aEF1PXv2zB9v2bJlwfFy2HH//ffn+zhgwIBy6BL7oBFI8hxXii2FFhRaUGihDbyATT0ITqGFH5gt2EahhZub7mMUWrhZ4aj4GIUWflZiQaGFkAjPKbQIZwVLGZcUWlBokcxzaE0CJEACJEACJEACJEACGREo5QV6SNmMus1qiyQQJ7RY07dpUTVu/3/HFIgsIOSg0KIonJVSqDKEFnrQOmuxQTFQ8QspPZi+aNGiYqqxlqnIc69pQgvMOtG6devItatfv76aNm2a9VqE7Ny6datq0qRJpE7dNyi0sFOk0MLOpVz2hjy/pWFDoQWFFhRaJBv1ehCcQgs/O1uwjUILNzfdxyi0cLPCUfExCi38rMSCQgshEZ5TaBHOCpYyLim0oNAimefQmgRIgARIgARIgARIgAQyIpDGi3RXHRl1m9UWSSBOaLG0TR21d/PqxLWueet+Ci0SUyuvAhRaFF4PCi0KmVTknmJmtNi4caN67LHHIoKIhg0bJl52xDxPiDR0YQXawDTImPoYwZwsEme0yIIq69QJuJ7b0jxGoQWFFhRa6CPPv60HwSm08POyBdsotHBz032MQgs3KxwVH6PQws9KLCi0EBLhOYUW4axgKeOSQgsKLZJ5Dq1JgARIgARIgARIgARIICMCab5Qt9WVUbdZbZEEYoUWrWurzRP6JKp175Z1aunj/0WhRSJq5WdMoUXhNclSaNG/f3+FQDo+X3zxRWHjKe6pKTNarF+/XmEJDV0QgZlD8Dep1IQXeHq9s2bNKrVKb3msYS0+AlGHmbh0iEmE35MSsD2vZbGPQgsKLSi0SDY69SA4hRZ+drZgG4UWbm66j1Fo4WaFo+JjFFr4WYkFhRZCIjyn0CKcFSxlXFJoQaFFMs+hNQmQAAmQAAmQAAmQAAlkRCCLF+t6nRl1m9UWScAltFj56k2Jat0y8S2ryIJLhyTCWOnGFFoUXoIshRaFrWW3pyYILdatW6ceffTRiBji3nvvVV9++WUqYIcMGZKvu0GDBuq7775Lpd5SKqHQohR6LAsC+nNaltsUWlBoQaFFsnuOHgSn0MLPzhZso9DCzU33MQot3KxwVHyMQgs/K7Gg0EJIhOcUWoSzgqWMSwotKLRI5jm0JgESIAESIAESIAESIIGMCGT5gh11M5UXAZfQAgKJb78O/4X9qtf+8h+hRZuL/7PdurZa1fmW8jpx9iaWAIUWhWgotChkUpF7QpcOWbt2rXr44YfzQgjMPNGsWTO1ePHi1LqrCy0aNWqUWr2lVEShRSn0WBYEsn72k/optKDQgkKLZPccPQhOoYWfnS3YRqGFm5vuYxRauFnhqPgYhRZ+VmJBoYWQCM8ptAhnBUsZlxRaUGiRzHNoTQIkQAIkQAIkQAIkQAIZEZCX4VnlGXWb1RZJwBRarB3cMiKQWD/suaCady3//yLlzHrSFFpgWYApU6aod955R7300ku5wGq7du1U165dFf65xi/aQ9PevXvV/Pnz1QcffKAQrHziiSdUmzZtVLdu3dSIESNywaddu3Y5q1uyZEnOFvaffPJJznbfvn3qq6++UqNGjVKdO3fO/cIefcVLOSw1YP4Kft68eapPnz4K54FA8dNPP61ef/11hRee27Zti20fdaFdve3t27eradOmqaFDh6pXXnlFPfLIIzlOCBBPnz5dbd68ObY+HEgqtED/0B7q79ChQ67/zzzzTK7/48aNU99++21Bezt27Mj3G32vX79+Pjjevn37yDFc77i0atUqhWUVsPwGmGEmgxdeeCG3zAICergOxSYE54Vt37598/1D8P7tt9/OHxszZky+iQ0bNuT3o+zu3btzx+Bnn376ac4X0E9cE0nov7QDX3Slb775JscZPiW+8thjj6nnnnsu5/8YFzbeUmfojBa4PghMvPnmm/l2MDY6duyYX+LE9GFpI4s8RGixZs0a9dBDD0Wu0/3336+WLVtWcpcWLlyYv0aPP/54vg34rVw75HPmzLG25btu8I2dO3day2In/ELamTBhQoFdUqGFjJt+/foVjBv87U+ScG6TJk1SAwcOzPtK27Ztc2NSX1YF10KWXBkwYECSJmhbAQSyeuYz66XQgkILCi2SDWg9CE6hhZ+dLdhGoYWbm+5jFFq4WeGo+BiFFn5WYkGhhZAIzym0CGcFSxmXFFpQaJHMc2hNAiRAAiRAAiRAAiRAAhkRMF+Kp/09o26z2iIJmEKLLR8NUCtfrZsXTSxre4Xat7swUG42t+H/XsyXwUwYO+Z9FPmeltACQW09KC+BOz3H8V69eqktW7aY3Yx8R2AWwWq9rG0bgeyvv/46Ulb/ov/CHfUhqN69e3dnvRBdQBABIQCC9rZ2ZV/jxo3V5MmT9Sbz26+++mq+LNpesWJFwbIJUo/k+BU+AvJxKYnQAveHBx54IN8HaUPPmzZtWrBsA8Qwuo1r2yY+QJB/+PDh6u6773bWAwECRAPFJIhkXP2SY/fdd1++evRV9iOHCAVCEYh39P3wUUn33HNP/hgCULa0ceNGpV9rvS5zGzM4QPxjSyFCi/fee0/B58x6ze8QNSxYsMDWTOr7fEILBPsffPDBSJ/xHYKCNBJEXOb5274PGjQo0hyuW6dOnbx+irpcM2/gfibtQUxkplChBcbNsGHDvP15/vnnveMG966QuiB8wvWh0MK8auX1Pe1nvbj6KLSg0IJCi2RjXw+CU2jhZ2cLtlFo4eam+xiFFm5WOCo+RqGFn5VYUGghJMJzCi3CWcFSxiWFFhRaJPMcWpMACZAACZAACZAACZBARgTiXo6ntT+jbrPaIgnYhBabJ/SJiCS2fz7SWfu+PbvU8nZX5sus6HiD+m7X9vx3CC9KFVrgV/qYZUKCjSE5flUdNxsFfkF+7733BtfXsGFDpc9coAPRhRZPPvlkLrAa0j8ILDCLRYgtxBG2X+abwfeQALm0h37bZiUIEVqgHIIlPqGDtIV+ffnll3lspQgtELxG8Fbq9uXwA4hakqY0hBbLly8vEACgv0mEFhCKYDYJ33nqx5s0aWIVGfiEFhCv6PX4ttGOzS+TsvbZu4QWEFO0aNEi0m+IEbCMSFqpGKEFrhvuBz6G+nHckyCWMlMaQgvMtpJk3EC4FSdSgoDIvPfo52Fum8u5cEYL8wpX/ve0nvF89VBoQaEFhRbJxrseBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmObQmARIgARIgARIgARIggYwI+F6Sl3o8o26z2iIJ2IQWezevVkvb1MkLJdb0beqsffusD/K2EFVsGtNNfbdrR2RfqUILmyABgcDBgwfnZnv46KOPckt/mIH/Ll26FPQdywCYgUAIAbA8xPjx49XEiRPVW2+9pTBTgWn32WefFdSnCy10ewQXEVD8+OOPcyINzK6gH9e3MasBzgXngdkr8HIF4g7dBkFyM8UFOxEAx/ISEAvgfLC0RsuWLSP1oe6RIwtFNCFCCywJovcN21hmAkuwQMSCZUswE4huA8ZYTgUJs42gf/KpV69e3hYzYMh+BLjNpU6wPIleL2YCwEwCYIdlOHDt9FkiYAuxhWtJDZMrvoOD9MMMUGP5DzmG6y/JnNECM5fofcU2fLR169ZSJNJX24wWaEevA+cmy9DMmDEjNzsJloCAGEe3e//99/NtyIZLaGETv8C/MCa++OKLXDvgDN56O5j9IOsUJ7SAKEGfKQH9gp9DVJBmkiWAcC1MvxY/QA4flGSKM3B9cN0wNuS6YVya1+3dd9+VKvJ5GkIL0xfNcYO+hI4b89zAHfc3+C+WT4JgB8sWQVCk+4psU2iRv7Rls1Hqs11oeQotKLSg0CLZsNeD4BRa+NnZgm0UWri56T5GoYWbFY6Kj1Fo4WclFhRaCInwnEKLcFawlHFJoQWFFsk8h9YkQAIkQAIkQAIkQAIkkBGB0Jflxdpl1G1WWyQBm9ACVUFcAdFE7tOmjoL4Ii6t6dfsP7ata6s9G1akKrTAtPN6IB7BOgQ+bQlBHAnmSY4ZEPSEwLAcQ/7MM8+o1asLzw/lzOAkgqxYGkRPNqEFgozmr8FRzhQJoH386h1BbjNhWQa9n7Azk01o8cgjj+Sm6jdtd+/enRND6HVCTGIKEHxCi61bt0aC7Vg6ZM6cOWZzCu3hpYfeHs7flvQAr01sIGWmTp0aqa9jx47KvL6wxbIwprAF4pBi0+zZsyPtLlq0yFqVKbSQc4e44p133snN/rBnz55IWde5w2f0QDxmarCdLypE23pg+7XXXou0gy8uoQVEAtJf5AiW2xKWQtFFO2jT9CFbuVL22YQWmEmjefPmkT6j37bzLqVts6w+3nFtbAkzvuizy0B0FSf+wEwv+nXDmDZTqUILLBWkX1uMm02bNpnN5MbNs88+G7GF0EZP4G4K2uLux7gvQPSlt41tCi10ouWxXewzXdJyFFpQaEGhRbIxrwfBKbTws7MF2yi0cHPTfYxCCzcrHBUfo9DCz0oswAz/ByEIjv8vIAbH/2UQyEOgDwEynvXx/xaeE5I+W8Ae5VC+uiQKLZJdSRmXFFpQaJHMc2hNAiRAAiRAAiRAAiRAAhkRKOYf2yRlMuo2qy2SQJzQAsuF5IUWrWsrLCdiS3s3r4nMfrG6Z8OcWZozWnTv3j0SqBs9erStK/l9r7/+esR+woQJ+WPTpk2LHHvwwQdjlxdBIQRMzen/8cJWT3rgFUFEmxhD7M2APQKsrqUX2rdvn+9vgwYNpJp8bgotIJyIC8Sj0L59+xRm+dADn+Yv6H1CC/zyXS/vC5yZ7UEEYSaX2EBssQwMrpe0je2dO3fK4YIcs2bos5JgFopik3ndkggtMOPCvHnzYpt2nTuC8HK+yDHbiSthlhexhxjCTC6hhXld586daxbPf580aVK+HbSX9YtNU2jx8ssvR66tnLPkpjgg3/EUNvTxHie0gH9IX5CDlyvpoiCIMsxUitACIhh93Dz00ENOYQxmkNHHDWaD0dMbb7wROTfbzCm6Pe5vplCOQgudUHlsJ3mOK8XW9/eiPGiE9UJe6uOegMARZojCrE6YRQqBo+nTp+dmRsL9EZ9iuWV9fw0723SshJkE20aMGKHGjh3LYJsDrx4Ep9DCAer7Q7qPDRs2TMHHKLRwc9N9jEILNyscFR+j0MLPSizAjEILoRGWU2gRxkmsZFxSaEGhhfgEcxIgARIgARIgARIgARKoVALFvggOLVepJ8fGCwjECS327f5WLWt7RV5ssfLVmwrKYsfmD/vlbSDM2Dbj/3J2aQktEFzXfz2NACBmSnClVatWqRYtWuR+UY5flSNIKQm/dtcDoJjm3pfwq2y9jBl41AOvsIOYIy4hiKnXhV+Wu9Lbb78dsTdtTaEFXi74EpZb0JlilgQ9+YQW+i/UIWrxJZyzHmgFLzO5xAZiiwCdzi7k2iHgrpdZsmSJVJcoR6BLryeJ0MIX9HedO4QWCMLLB7NJuNLjjz+e76d5XVHOJbQw/bhTp04Fs7JI25itBeIB+WDWmSyTKbTQr4VtG8vuLF++PJMu6ZzihBZYIkeuGXLbjDV653QxV9pCC9N3EQD2JXNpoK+//jpXBPde/d5x7733OkUb0k63bt3yfonrRaGFkCmfPPQZrlQ7Ci04owVntEg27vUgOIUWfna2YBuFFm5uuo9RaOFmhaPiYxRa+FmJBYUWQiI8p9AinBUsZVxSaEGhRTLPoTUJkAAJkAAJkAAJkAAJZESg1JfovvIZdZvVFkkgTmiB6tYPez4iovj26y8KWlnZ6c95m2VPX66+27U9Z5OW0AK/htYDqfgnupSE2SakPogxMMNDSMKpNDTXAAAgAElEQVRsCFIOwUU96YFX2JhLhui2mCFD6kE+aNAg/XDBNn4lq9ubBrrQAgFQiBpCEpY2kXpRTl/OwiW0wGwZUg45fokakiBOkXJPPPFEQRGX2ECM8UthqQM5ljDxJQS49TJxy2H46jGD1aFCC8wkoLO1tRNy7rZy+j6cJ4LX+rkmFVpg2l69PLaxLAyYQaASOlb0fqW17RJaYKkLzJKCmRr0/rdp08Y5W02xfdPHe5zQIrRuCGdMMVXaQgss66FzCRk3a9eujZRB4AUJIi29rrfeeivoVM0ZPii0CMJWoUa+Z7e0jlNoQaEFhRbJhrYeBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsQAzzmghNMJyCi3COImVjEsKLSi0EJ9gTgIkQAIkQAIkQAIkQAKVSiCtl+lx9VTqybHxAgIuocW3S2flRRSYrWL9sOci5QuOD3kqfzwtoYUZ/A35NXa+E8YGRA5YqkMChS+99JJhEf9VnwkA5XVBQ9LAq7SPHC/NXQkvPHV701YXWiDQHJr0PqN+zAIiySW0MGeVQNmmTZt6P/o5YFYSM4WIDfr16xdhEdIubPS2sTxGMalYoQWC6L4Ucu5SB3wYQWsIXFA3ZkTB0iT6Ocp2UqEFhBSoT8qbOWYygUAHS80sXry4QoUXcUIL9BdLYyDNnz8/MtsC+t+3b19Bl1quj51QoQWuG5iFXLe0hRZ9+vSJXNNixo0IIz777LNIXVhbOyRBbKTPhCH1hZSlTcUQiHtmS3s/hRYUWlBokWxM60FwCi387GzBNgot3Nx0H6PQws0KR8XHKLTwsxILCi2ERHhOoUU4K1jKuKTQgkKLZJ5DaxIgARIgARIgARIgARLIiEDaL9XN+jLqNqstkoBLaIEqsWQIRBb4LGt3hdq3Z1e+pYIZLxbNyB9LS2iBNc/1gC+CqcUm/OpdrwuB+9BkCh7mzZuXL5o08Kr3IU2hxfPPP5/vk2/DnB1CD365hBajR4+OMNTPJXQbAVcEnvUUIjbA+YW2EWfXuXNnvdng7WKFFvBfXwo5dyzd0LVrV6Xbxp2j7E8qtEA/cV3g67ogSeozcwh7IBzwzdjhO/+Q4zahBa6l2fbQoUMLfGTKlCkhTQTbJBnvS5cuTXzd0hZaYOkS89ol/d6lS5ccH3N2jFmzZgVzwwxC0i6FFsHYKszQfFbL6rv+t6bCTi6jhuSlPu4JmPkH93v8bZ04caKCKHT69OkKf0/x9wOfYpmibHVJwgyBEDAbMWJE7u8IRFtgBnEt7vc4Z/hKMcxQrjox04PgFFr4R4LuY8OGDcv5GIUWbm66j1Fo4WaFo+JjFFr4WYkFmHFGC6ERllNoEcZJrGRcUmhBoYX4BHMSIAESIAESIAESIAESqFQCxbzUTFKmUk+OjRcQ8AktNk/omxdaQGyx/YtRuTr27f5WLWt7Rf7Yio43RH7hnpbQwgycYgmDYpM5HX6SX7u/9957+SAhgoXweUlJAq8oI8FG5GkKLV544QXpkjcfP358pB968MsltDADrfq5JNnesmVLpI+6gAC/drWlNALGSRjpfUDQRj+/0KVDQmZg8Z07glF62+Y2AtiY2QHcsIyGHC9GaCHnvHLlypzgol27dpGZCKRuPQfTXbv+I8CSOtLMTaEFZnIxxTpob+/evQp91vuHpX4gskorhY53zPyh98PcxnXr0KFD7sWz7ttpCy10nzD7EPq9ffv2OXzm+Me9IjTpS7tQaBFKreLskjzHlWKr/62puLPLpiV5qU+hRThfYUahRTgzPQhOoYWfm+5jFFr4ecFC9zEKLfzMxMcotPCzEgswo9BCaITlFFqEcRIrGZcUWlBoIT7BnARIgARIgARIgARIgAQqlUApL9BDylbqybHxAgI+ocXezavV0jZ18oKKNX2b5urY/vnI/D4IMDaN6R6pOy2hBX7lqAcDEXAtNpnT12MZhNBkTr+/fv36fNHQwKsU0M8nTaGFLUArbZo5XkLo/dAFLC6hBX7BrpfDr3dRNunHnInAJzZA//Vr0LBhw8Rtoo/6EikmE9f3YoUWc+bMcVWbO+Y6908++STCG+yx5A1+nYnZEmTZDGmkV69eeftShBZSH/KtW7cqLBmBF35PPvlkvn7dD3r37q0XSX3bFFqgL3Fp9erVqnHjxpF+tm3bNifCiCuTZH/IeIfARueDbYgVMF4wO4l53XTfto1j33Xt2bNnvr2WLVtGTkcvi6VOko5VfdyY1+Gjjz6KtBX3BaIYfZYUCi3iSFXe/pDntzRsKLTg0iFcOiTZONeD4BRa+NnZgm2c0cLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xiX+HuJH53IvX/MmDEKz974/xAzQOF/dvxvXuzzWXWa/UnGJYUWFFqEjzJakgAJkAAJkAAJkAAJkECGBIr9Ry20XIZdZ9VFEPAJLVAlxBWyfAhEFxBfrOnT5D/7WtdWezasiLSeltACS3ToAcuQpRjQEbyc6NatW+6DFxSSEHyW+myBaLEzc33ZCgQr9+3blzcJCbzmjTOc0aJevXpqx44delOx21h2QTgg18u5hBbr1q2LlJswYUJsG0kOuMQGUo+5jMz27dvlUOZ5sUKLuXPnevvmOnfMFqFfJyzV4Uo9evTI29v8Wz/eqlUrV1WxxxYsWKAwo4Ter2bNmkXGRGzhIg+YAX6Mb1eaNGlSpH/oq6+Mqz79WMh4h6hC54MXo66kiyHSFlpgan69L/pYd/XJdgwzneh14aVmSFqxYkWkHIUWIdQq1ib0Ga5UOwotKLSg0CLZ2MbfLvwSHEFdCbbhWUCCbbJETSnBtuo4LvVgG4UWbp/TfYxCCzcrHJWALoUWflZiQaGFkAjPMS4ptAjnJeNSv/ePGzdOydJk+FuJ/yfxPz0+pTzPhveqcix/UDnN+lstBbqvrL91WpAACZAACZAACZAACZBAxRLwPcOWerxiz4at+QiECC2wXEheaNG6ttrwf+3V0jYX5/et7tmooJm0hBYbN26MBOgef/zxgrbMHfgF/t13350v169fv7wJZrHQA4UhL5cxc4BeH37Vr6eQwKtur7ef5owWqPf999/Xm7Jub968OfLr8vvuuy9i5xJaQGCiCwNef/31SNm4LwMHDsz9oh8BaFtwVq8TL5Vs6YsvvohcO/yax5fgC2hTPpiZoZhUGUILzAIAUY/4yxNPPOHtuj7jRFKhRadOnRTGBz4ff/yxsy34gSkmQBA+q5RUaIF+dO3aNc9OGCIQVWryjXew0WfUaN26tbfJp59+Ot/XtIUW5niePHmytz/muAF/JHNWIAhszNk5bJVDWCHXADmFFjZKlbuv1Ge70PIhf3Mrl0R46/JSH/cELPEEMSBmrZk4caLCrDYSAC/1pT7KV5ckzBAIATMIwSAakEAIfqErgRD4Sqhf6XYoV52Y6UFwCi38I0H3MS4d4ucFC93HKLTwMxMfo9DCz0oswIxLhwiNsJxCizBOYiXjkkILzmghPsGcBEiABEiABEiABEiABCqVgP6yMovtSj05Nl5AIERosW/PLrWs3RV5YYUuusD2thn/T0G9aQktULE+CwWCdL5gKcQGelBPD66PHz8+cgzBawS0XalDhw6RMvgHXk++wKtui229b2kLLVq0aOENfKL/eh/MZR/MwCyWDtDTm2++GSn/5Zdf6ocLtrHMii5UAS8z6UILvIizJfwSv2nTpvm2H3nkkVzg12Yr+xD00s/VPBex8+Wm0GLhwoXWIvPnz4+0V8qMFmvWrInUhRlaXMnsY1KhBcaCsHrqqadcTeWOQcAk9sjXrl3rLVOsQTFCC8x48tBDD0X6CFERxFulJN94h7/rXLp06eJsDn9n9fGBPptJn/HCdl1dS4eAQ5MmTfJ9Qnlz6R6zvVGjRuXtcS5Y7kSSORsOAqWuBN76+EZ9FFq4iFXOsSye92x1UmjBGS04o0WyMa4HwSm08LOzBds4o4Wbm+5jFFq4WeGo+BiFFn5WYkGhhZAIzym0CGcFSxmXFFpQaJHMc2hNAiRAAiRAAiRAAiRAAhkRsL0YT3NfRt1mtUUSCBFaoOr1w563Ci2WPX25gqjCTGkKLaZMmRIJ+iFoiCVFbAmB7gYNGuTtGzZsGBEeQFSBWTH0QChmZdi2bVtBdbt27VJ9+vSJ2D7wwAOR+lDIF3g1K9bbTltogboxq8GGDRvMZnPf8bJZb79+/foFAXKf0OKbb76JzIgBcUecoAC/dm/Xrl2kzeXLlxf0TQ8EY3mLuGQuH9KxY0eFGTpsafHixZGZBR577DGbWdA+3AN1bvjVrS2lKbRAMBzXR9p98MEHrX6KfoB/8+bN87YoY85UAjvX0iGYdUTaQu5apgfM0R+xN8UBmBGhTZs2CrM5yAdsik3FCC3QFtrURQzo70svveQVV7n66RvvuG647wgbjA/b/UX6d//99+dtUQZiIjOVIrRAXab47OWXX44dN4sWLYqMG1xHPWEZEJ0ptiFosqXVq1cXCOVwjhRa2GhV7r40n/NcdVFoQaEFhRbJxroeBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmObQmARIgARIgARIgARIggYwIuF6Qp3Eso26z2iIJhAotvl06yyq0WD/kaWvLaQot0IAZrEcgs3///grLRyCgjsA3RBF6ABABPbxcNRNmxJAgqOQIGuMFNoJAc+bMyU1njcC8HJccU4KbyRd4Ne2lLuRZCC1QLwQhgwYNUhCpLFiwIBcIhaBEbxvbYGgmn9AC9m+99VakLnBHMHjChAk5fmgTv4o3ZxSAMMKWEMyVvtWrV09hFgD0Hy9NMLODpN27dxfUiUA1rsHUqVMVZtfAzA4I5OrBbtSN2UyKTatWrcr3D3WhTfgb+oepqSWlKbRAnfqSEmgXIqFJkyYpLGeDtnBO5gwDwhHXBMtE6MIWl9DCXJoF9eB6oT0E38EA1/Xdd99VEA9IO8gxo4KeEGDXj2PbNxONXt7cLlZogXrwItzsi2/cme3r30PGe9u2bSNtwr/BETNDyHWDj5v9ku+4ry1btizfbKlCC4jGdGEM2gkdN5jS30y6H0mfX3vttdx9BueHZRMg3IHYR47rOYUWJtHK/57G811IHRRaUGhBoUWy8a4HwSm08LOzBdsotHBz032MQgs3KxwVH6PQws9KLMCMS4cIjbCcQoswTmIl45JCCwotxCeYkwAJkAAJkAAJkAAJkEClEgh5UV6KTaWeHBsvIBAqtEDBla/eVCC2+HaR/Zf9aQstEFh++OGHrUE7PYCnb0NYEJfwC299tgC9XNw2/oG3LTMSEnjV+6HX7wv44oWnbq/Xg+1XX301fxznY4oL9LLmNoLotl/ahwgtUM5cUsWs3/yOmQ1s7eE84sQCqAOBWz3hO4QkZv2u7wj6lpIQqG7UqJG1TX3mCPRN70fcTB96X/RlFRCA0pO51I1et23bFth+7rnn8lXqAfJWrVrl98sG2rfV69qHeswZVMpJaLF3794CoRbEPL4lb4SJmYeMdwiyXMzMY7brBrGGpFKFFqgHvmnOnmH2w/z+9ttvSxciOcYxZsUw7eO+m2OHQosIzrL4UspzXZKyFFpQaEGhRbIhrwfBKbTws7MF2yi0cHPTfYxCCzcrHBUfo9DCz0oswIxCC6ERllNoEcZJrGRcUmhBoYX4BHMSIAESIAESIAESIAESqFQCSV6YF2NbqSfHxgsIJBFabJ7QNyK0WNHxhoL6ZEfaQgvUu2PHDtW9e3dvcA9Lh+BFPpatcKWFCxdap7U3g4UITrp+jR8SeNX7odefptACs35AJBESTMXLQZtoBP0MEVrAbt++fbnZDRC01s/Jtg1ByLp163QMkW0sR9C4cWNrPabQAgW3bNkSEZnY2sQ+BHhxfeLONdIJzxcsj2BrJ0uhBbqEmT1s7er7cJ6YaQIzJuj7sZ1EaIFrihdVoYIdzLixcePGAnLlJLRA59Af078w20qc8KfghLQdoeMdHM1rYX7HdUNQA7NXmMfSFlrgFLDkyyuvvFLQltl2yLjBmAoR5kAgB7/U70sUWmgOVSabxTzPFVOGQgsKLSi0SDbo9SA4hRZ+drZgG4UWbm66j1Fo4WaFo+JjFFr4WYkFmFFoITTCcgotwjiJlYxLCi0otBCfYE4CJEACJEACJEACJEAClUqgmBfnScpU6smx8QICe9YtVRuGv5D/7PxqSoGN7Ni7ZW3eDmW2z/pADlnzTR90ydtDpJFWgr8NHz48NwtCy5Ytc8F0LPPRqVOn3MsvfakJX5s7d+7MTXOPlz+Y4aF58+aqWbNmqn379rkAN6b7R1DflT777LPcUhUIHiIo7ktoC7b42EQEenkIPMQWuZn0GS0gtECCwASiAARUsVwAguaYdaBbt2655TyWLFliVhP5jqUm9DZ9wWgEidFe7969c0tdIEiLpSVeeOGF3PIaELSEJAhpMIMDXiyhfSxPgs+mTZusxSEKwHIX8IU33ngjJ5pB2/AFcBk6dGgusGwtXOROLJ/x3nvv5a6z9BHtS0JfdXY2EYLYSj548OB8Gfi2LWFGFyxV8swzz+SWY4BoANe7X79+auzYsRGxA5adgP9ipgzYjBgxIl8l/Fn6N3LkyPx+c2Pr1q054QZ8CMuVNGnSJFffo48+mhNuYKYD13VFebSDPksQf968eWYzwd8xpqXfyIsJ1mL5EfEpybHsUNKEeqQv8DFXwtiIu25jxoyJzASC5Tb06wY/k/Txxx/n28RsPGbSr6t+vU07fMe4gZgqrXGD+8no0aNzIjjcj+F3EInAN8eNG6fgC0gQqAg3tM9UXgSSPMeVYlvM2C0vUv/pjbzUh29jPOGeir+FmNEG43n69Om5sYblrPAplhvKVpckzBAIATPcr/A3DEsUgRmWgcM9FucMXymGGcpVJ2Z6EJxCC/9I0H0MS7vBxyi0cHPTfYxCCzcrHBUfo9DCz0oswIxCC6ERllNoEcZJrGRcUmhBoYX4BHMSIAESIAESIAESIAESqFQCxbzUTFKmUk+OjZNANSNgE1pUs1Pk6VRhAosWLcoLLdauXVuFz4RdJ4HqTSDJc1wpthRacEYLzmiR7F6iB8EptPCzswXbKLRwc9N9jEILNyscFR+j0MLPSiwotBAS4TmFFuGsYCnjkkILCi2SeQ6tSYAESIAESIAESIAESCAjAqW8QA8pm1G3WS0J1EgCFFrUyMteJU4aMyfIMhVYPiKN5VuqxImzkyRQBQmEPL+lYUOhBYUWFFoku0HoQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgsKLYREeE6hRTgrWMq4pNCCQotknkNrEiABEiABEiABEiABEsiIQBov0l11ZNRtVpuQwJr+zdWaPk0q5bNzwScJe0vzOAIUWsSR4f7KJIDla1588cX8bBZYWoKJBEigfAm4ntvSPEahBYUWFFokuw/oQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgsKLYREeE6hRTgrWMq4pNCCQotknkNrEiABEiABEiABEiABEsiIQJov1G11ZdRtVpuQwNInLlFLW9eulM/WacMS9pbmcQQotIgjw/2VSWDjxo15kUWvXr0UZrdgIgESKF8Ctue1LPZRaEGhBYUWye4DehCcQgs/O1uwjUILNzfdxyi0cLPCUfExCi38rMSCQgshEZ5TaBHOCpYyLim0oNAimefQmgRIgARIgARIgARIgAQyIpDFi3W9zoy6zWoTEti7fZPau21jpXz27dmVsLc0jyNAoUUcGe6vTAKbN29WHTt2VLNmzarMbrBtEiCBQAL6c1qW2xRaUGhBoUXgoPzeTA+CU2jhZ2cLtlFo4eam+xiFFm5WOCo+RqGFn5VYUGghJMJzCi3CWcFSxiWFFhRaJPMcWpMACZAACZAACZAACZBARgSyfMGOuplIgATSI0ChRXosWRMJkAAJ1FQCWT/7Sf0UWlBoQaFFsruMHgSn0MLPzhZso9DCzU33MQot3KxwVHyMQgs/K7Gg0EJIhOcUWoSzgqWMSwotKLRI5jm0JgESIAESIAESIAESIIGMCMjL8KzyjLrNakmgRhJ49913VefOnXOfIUOG1EgGPGkSIAESIIHSCGT1zGfWS6EFhRYUWiQbq3oQnEILPztbsI1CCzc33ccotHCzwlHxMQot/KzEgkILIRGeU2gRzgqWMi4ptKDQIpnn0JoESIAESIAESIAESIAEMiJgvhRP+3tG3Wa1JEACJEACJEACJEACRRBI+1kvrj4KLSi0oNAi2QDVg+AUWvjZ2YJtFFq4uek+RqGFmxWOio9RaOFnJRYUWgiJ8JxCi3BWsJRxSaEFhRbJPIfWJEACJEACJEACJEACJJARgbiX42ntz6jbZV3t9OnT1YgRI8q6j+wcCZAACZAACZBAzSSQ1jOerx4KLSi0oNAi2T1GD4JTaOFnZwu2UWjh5qb7GIUWblY4Kj5GoYWflVhQaCEkwnMKLcJZwVLGJYUWFFok8xxakwAJkAAJkAAJkAAJkEBGBHwvyUs9nlG3y7JaCCz+9Kc/qR/84AfqmWeeKcs+slMkQAIkQAIkQAI1m0Cpz3ah5Sm0oNCCQotk9xo9CE6hhZ+dLdhGoYWbm+5jFFq4WeGo+BiFFn5WYkGhhZAIzym0CGcFSxmXFFpQaJHMc2hNAiRAAiRAAiRAAiRAAhkRCH1ZXqxdRt0uq2p1gQVEFhRalNXlYWdIgARIgARIgAQ0AsU+0yUtR6EFhRYUWmgDL2BTD4JTaOEHZgu2UWjh5qb7GIUWblY4Kj5GoYWflVhQaCEkwnMKLcJZwVLGJYUWFFok8xxakwAJkAAJkAAJkAAJkEBGBJK+NE9qn1G3y6Jam8CCQouyuDTsBAmQAAmQAAmQQAyBpM9yxdpTaEGhBYUWMYMwZrceBKfQIgaSttsWbKPQQgNk2dR9jEILCyBjl/gYhRYGGMdXCi0ccGIOUWgRAyZmt4xLCi0otIhxEe4mARIgARIgARIgARIggYolUOzL89ByFXs2FdOaS2BBoUXFXAO2QgIkQAIkQAIkUByB0Ge4Uu0otKDQgkKLZGNUD4JTaOFnZwu2UWjh5qb7GIUWblY4Kj5GoYWflVhQaCEkwnMKLcJZwVLGJYUWFFok8xxakwAJkAAJkAAJkAAJkEBGBEp9ie4rn1G3K6XaEIEFhRaVcmnYKAmQAAmQAAmQQCAB37NbWscptKDQgkKLwEH5vZkeBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmObROncCePXvUuHHjVK9evdSzzz6rmjZtqpo3b57L8R37x48fr2DHRAIkQAIkQAIkQALVmUBaL9Pj6qkO7JIILERowfwHigzIgD5AH6AP0Aeqow9U9WebuGe2tPdTaEGhBYUWye4WehCcQgs/O1uwjUILNzfdxyi0cLPCUfExCi38rMSCQgshEZ5TaBHOCpYyLim0oNAimefQOjUCY8aMUY0aNVLHH3980Itf2MF+7NixqfWh3CtavHixuvjii9W5554b+dStW7fcu+7s39///vfI+cj54XyZ4gl06NDBym3IkCHxhXgkMYE1a9ao888/38oavjpv3rzEdUqBJ5980lrvqFGjxIR5QgKfffaZuuCCCwq4NmjQIGFNYeY333xzQVvwi2XLloVVQCsS8BBI+6W6WZ+n+bI/3L17d7XffvsFPTtWx2ASz4lBUvoAfYA+QB+gD0R9oOwfXjwdNJ/VsvpOoQWFFhRaeAajcVgPglNoYcCxfLUF2yi0sIDSduk+RqGFBiZmU3yMQosYQJbdFFpYoHh2UWjhAWQclnFJoQWFFoZr8GvWBBYsWKD+8Ic/lPSC/Prrr1eop7qnqVOnWjlddNFFVfrUf/SjH1nPa/78+VX6vLLu/B133GHlhllfmNIj0KlTJytneaHZqlWrohv705/+ZK2bYpmikSq88JBro+fXXntt8ZU6Sp566qnW9hYtWuQoxUMkEE4gq5frUm94T8rXkjNaRANM+r2P22RDH6AP0AfoAzXNB8r3iSWsZ/KMlnVOoQWFFhRahI1JsdKD4BRaCJX43BZso9AinheO6D5GoYWbFY6Kj1Fo4WclFhRaCInwnEKLcFawlHFJoQWFFsk8h9YlEXjxxRfVIYccYg1SJX0ZgHrat29fUn8qqnCzZs1yv7jGr671Dx44XYlCCxedqnkMv3rXfUC2f/e733lPiEILL6JUDC688ELnPeqUU04peikjCi1SuUSRSooRWuDeKmNPz2+//fZI3bYvFFrYqHBfmgSyfsmeZl8ru64kgotnnnmmsrvL9kmABEiABEiABEiggEDWz35SP4UWFFpQaFEw/Jw79CA4hRZOVLmDtmAbhRZubrqPUWjhZoWj4mMUWvhZiQWFFkIiPKfQIpwVLGVcUmhBoUUyz6F1UQT27dunmjdv7gxeJhVaiP3999+vUH85pxtvvNF67kOHDnV2m0ILJ54qeXDhwoVWXzjttNO850OhhRdRyQZxY07uN5LjH6BiEoUWxVBzlylGaDF+/HjrOLz88svdjSmlKLTwIqJBiQTkZXhWeYndK8viIYILCi3K8tKxUyRAAiRAAiRQ4wlk9cxn1kuhBYUWFFoku93oQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgsKLYREeE6hRTgrWMq4pNCCQotknkProgjcfffd1qCWBC31vFatWurYY49VyPX9ru169eoV1a+KKkShRZR0TV46hEKLqC+U27cmTZoE3Xfq1q1bVNcptCgKm7MQhRZOPDxYBQmYL8XT/l4FkQR32SW4oNAiGCMNSYAESIAESIAEKpBA2s96cfVRaEGhBYUWyQa2HgSn0MLPzhZso9DCzU33MQot3KxwVHyMQkQonwAAACAASURBVAs/K7Gg0EJIhOcUWoSzgqWMSwotKLRI5jm0TkzgzTff9AYur7vuutyg3Lp1a6R+fMdgvfbaa711dOvWLVK2nL4UK7T46quv1Nlnn60w24H+ueaaa8rp9BL35YYbboicj5wbRAjVPZUitGjXrp2V2+DBg6s7tgo5vx07dqhjjjnGe6+B6OvAAw9Uq1atStwvCi0SI/MWwCwkEG/JfUTyW2+9NbYsZ7SIRcMDZUAg7uV4WvvL4BQz74JNcEGhRebY2QAJkAAJkAAJkEARBNJ6xvPVQ6EFhRYUWiQboHoQnEILPztbsI1CCzc33ccotHCzwlHxMQot/KzEAszeeecdhSD48OHD1fvvv6/GjRunPvzwQ/Xpp5+qGTNmqJkzZ6rZs2crPCf4niVsx1EO5atLotAi2ZWUcUmhBYUWyTyH1okIzJ07Vx122GGxgcsDDjhA9ezZM6jOHj16qP333z+2rsMPP1zNmzcvqK6KNipWaFHR/WR72RMoRWiRfe9qdgsDBw6Mvb/YZtTp0KFDYmAUWiRGlkkBCi0ywcpKUyJg+8c1zX0pdbNKVKMLLii0qBKXjJ0kARIgARIggRpHIM3nPFddFFpQaEGhRbLbix4Ep9DCz84WbKPQws1N9zEKLdyscFR8jEILPyuxoNBCSITnFFqEs4KljEsKLSi0SOY5tE5E4Morr4wNXB5yyCE5NV2SCvGHFOVsQU/su+qqq5JUV2G2FFpUGOqyb4hCi/K9RFdffbX13nLppZda95933nmJT4ZCi8TIMilAoUUmWFlpSgRcL8jTOJZSN6tUNRBcjBgxokr1mZ0lARIgARIgARKoGQTSeL4LqYNCCwotKLRIdk/Rg+AUWvjZ2YJtFFq4uek+RqGFmxWOio9RaOFnJRYUWgiJ8JxCi3BWsJRxSaEFhRbJPIfWwQQ++eQTa3ASgogjjzxSTZgwIbgu3RABMpSPE1tMnjxZNy9pG0uX7Nmzp6Q6ULhchRb79u1TmzdvLur8du/erbZv315U2apaaMuWLWrv3r0ldb8chRY4J/gB/KGiE5hWRrvmeeK67LfffgX3lYMPPlhhCZ+DDjqo4BjuQZMmTTKrcn7PQmixc+dOhWVPKjpt27ZNffvttxXdbM5Xcc6lpIoUWnz33XcKfl5RCb6wa9euoppDP9FfpsolEPKivBSbyj07tk4CJEACJEACJEACJKATKOW5LklZCi0otKDQQh95/m09CE6hhZ+XLdhGoYWbm+5jFFq4WeGo+BiFFn5WYkGhhZAIzym0CGcFSxmXFFpQaJHMc2gdTOCvf/2rNTCJ4OTjjz8eXI/NsE2bNrF1/+1vf7MVUYsXL1a9e/cu+KxevTpnj2Dze++9p+rVq6d+8pOf5Jc8QfD1hBNOULVr11YPP/yw+vjjj72BYaxzpbeFsjZhSNOmTSN2KLNixYp8/xFMfPvttwtscOOyJYhb9Hax3b9//7wpRCN4GEGwF+eIIDL6deihh6qf/vSnCv3B+ly2hEB8ly5d1G9+8xt1yimn5IPSYHPZZZep22+/PbfOl62suW/MmDEF/URfTdHHpk2bcv03z6mU7yHLy0BAAu7wJZzbj370o/xMKlju5rTTTlOY5eDWW29VeBB2iXEQjB4wYED+fNu3b2/1hWOPPTZvI+c3dOjQCDq8GJFjeh5yTlIR+op/dFq0aKEuvvhideKJJ+aX5MG54dr+8pe/VBhjIb4u9SKfMmVKQf/69Omjm6hZs2apJk2aqPPPPz8/xrDsD8YI7hkvvfSSArOKTk899ZT1utx00025rsQJJOrXr5+oq3H1DBkyJLgecMa96MILL1TwG7m31KpVS/3iF79Qzz//fO5+JxXG+Y3c+8TOlUNs0qlTJ/X73/8+Nx5wz5B2jznmGHXOOeeo2267TQ0aNEht3LjRVVXk2IYNG1S/fv0K/AbCF0kQc7zyyivqd7/7ncI5SrvoCxLuG7jP6WMC2yNHjpQq1Lp161Tfvn3zNi1btszXI/UhP/vss/M2Ut+oUaPy9WDj1FNPtZZdtGhRzg7CIYyxf/zjH7n6RKQDThhb4NStWzfnfUMajOOjj/kFCxbk/KFOnTrquOOOy/UNf7dOPvlkdc011+TOG6JBW8Lfqn/+85+5+78s84VZozBbCwSC7dq1U7gPM1UsgSQvzIuxrdizYWskQAIkQAIkQAIkQAIuAsU8zxVThkILCi0otHCNxMJjehCcQotCPuYeW7CNQguTUvS77mMUWkTZ2L6Jj1FoYaNj30ehhZ2Lay+FFi46hcdkXFJoQaFFoXdwT8kEVq1alQ/e6kEsbCPopIsJimls+fLlsb8wR7D4m2++KagW4g6zL/iOGTDmzp2rfvWrX1mP28r88Y9/VOvXry9oQ3ZccMEFwXWZ9eMhVNLUqVOt9Vx00UViEskhCjDrQxAbCed47rnnFhw37fG9QYMGSv/F+PDhwyMBXVsZ2Ydg6Oeffx7pl/kFwgWx1/P58+dHTHGD1o+nsd2jR49IG/qXr7/+WiFwftRRRyVqF4HXp59+2ho4HTt2bKK69HOEGEFPd9xxh7WuXr166Wax27Nnz1YIxupt+LZxPZcuXRpbp37gv//7vwvq3n///XMmCPQiwOxrD8chZEHgvKJmusAv+M844wxr3955551c/yEgsPUds+vEBbF1NrJditACAhQExW39MPdBRPXqq6/mGMbd2yCk8SWIHB555JHY+7nZLr4j2I+H0pCEhzFbHYMHD84V/+CDD3KiMJvNb3/725wNXnjYjl977bX5LkDMYbMJ2feHP/whXw82XEILCFLieJttQczw/vvvR+o2v8Tx6dmzZ252nYceeigvejPr17/jnou/J5LWrl2rrrvuuiAmENO9/vrrnOlC4FVAXsyL8yRlKuAU2AQJkAAJkAAJkAAJkEAggSTPcaXYUmhBoQWFFoGD8nszPQhOoYWfnS3YRqGFm5vuYxRauFnhqPgYhRZ+VmIBZni3jRgL4jt4Dzlu3DiFH17hx7YzZsxQM2fOVIgZ4DmhmOcMlEP56pIotEh2JWVcUmhBoUUyz6F1EAEEyfQgj76NQGEaCTMo6PXq2xjgZooTWiDwDjGCXj5k+6yzzlKfffaZ2Uzue7kJLSAmOfrooxOdI34JjYQZBkJ46DYIzCGQF5fKUWiBX6OfeeaZic9VP2/MyIAlVfRUDkILCAlefvnl/Kwcep9DtvFLfMzK4UtxQgsIoxBUDmlLt3n00Ud9TaZyHDMW6O3KNgQ3siQHRA5x9wnMfBCaihVaQChVzH3lvvvuU5dccon1/HxCC9zfimlT+EFYgxkZXAn3arHXc/wNwQxDMhuEfky2y01ogTGSVKSFc4FoIi7F8enatauC4E9YhOQQ30ybNi23FM4Pf/jDRGVR/2uvvRbXTe5PmUAx/9gmKZNyd1kdCZAACZAACZAACZBACQSSPMeVYkuhBYUWFFokG6h6EJxCCz87W7CNQgs3N93HKLRws8JR8TEKLfysxALMKLQQGmE5hRZhnMRKxiWFFhRaiE8wT5HAPffcExvEmT59eiotIWAUF1xq3LhxQRtxQou4OkL2Y/p8WwC6lOBk2jNa4DzifoHtO8fQXzzb6sHsC3Gp3IQWWKYgrk+2c3Ptw1ITWIZGUmULLTDzCgLSrj6HHvvLX/6idu3aJadWkNuEFqj78ssvL6p9zIaB5XCyTljiwcbgzjvvjDR9yy23WO2wnE5oKkZo8e677yrMnGHrYyn7XEILBNVdIofQdk8//fTcrEFxfPAwZqurVatWuSWNbMdkX7kJLaRfSXOIMzCbji3F8YkT/fjaxpJRWCbKZ2c7fsQRR6glS5bYusl9KRMo5QV6SNmUu8vqSIAESIAESIAESIAESiAQ8vyWhg2FFhRaUGiRbKDqQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgswo9BCaITlFFqEcRIrGZcUWlBoIT7BPEUCP/vZz6yBnFNOOSXFVlRuDXpbQAhLZJgpqdACIooDDzzQeh56m/iVsBkkK0VogdknJKWxdIjeV337+OOPD5pyXi+D7f322y+3NIC53/Yd00/ZUpyooTKWDsFsDyGzLWBGEMxigtk6bOeq78MDn6QxY8Z47fWy+vall14q1eTyYpYOuffee4PaP+yww4LsMMNJXIoTWujnJNsYXyGzrGAs4xplldatWxc708fIkSMjzeKfHum/mWPGiZCUVGixZcsWddJJJ8W2K/045JBDFJZNku8heZzQAjNZQOTiqwP3vhC7c845J1agg4cxXztxx5MILfr27Vt0O5ipRk9JhGsQJ4SIIm644Qa9ifx2Ej6hbdl4oizGpO2Yvu+uu+7K940b2RFI40W6q47ses6aSYAESIAESIAESIAEkhJwPbeleYxCCwotKLRINjr1IDiFFn52tmAbhRZubrqPUWjhZoWj4mMUWvhZiQWYUWghNMJyCi3COImVjEsKLSi0EJ9gniIBBOD04Ixs45ftaabLLrvM2g6CjmYKEVogoNmnT5/cmlSYlQDLBmBGgpYtWzqDmJjBQ0+YbWPChAn5T9wv+u+///68DewhrNBT2kILLAHRr1+//HT+27dvV2+99VbQr+WxrMbo0aMVAr9IGzduVFhyAeIZub5mjuCmLYUKLebNm6eee+654I9rJhX0De2uWrUq0iX8s2T2W77XqlVLPfvss2rlypWRMl9++aV64oknYoPMmPlBEjjpvuBaVke3w7bZblKhBYQurkA4Zt8YNGiQWrZsWa67OC/4v2sGDMysgKVAbMkntIBIB8uBYN02mfUD59isWTOn6Oerr76yNZfKvjfeeMN6/U888US1Z8+eSBuYzePYY4+12uMeEZKSCi3atGljbQ8+ij526NBBTZkyJccTy5uMHz9ePfbYY87rLv5tE1rs27dPYYYOsTFzLDmBZWjQJvhs3rxZQZDyyCOPOIVpL774ohUPHsbMNlzff/zjHyssa1S7dm1Vt27dXJ1xY/jaa6/Nt4lxr4+vf/3rX9Z2cY/U7bCNWWH05BNa4O8PGC1YsECBJz7w4T//+c/WNnG++JspY0JvK4QPZlqB0Efawn3zqquuim1L+GI84j62ePHiXFm0jxe5EFOIjZmDO1P2BNJ8oW6rK/szYAskQAIkQAIkQAIkQAKhBGzPa1nso9CCQgsKLUJH5b/t9CA4hRZ+drZgG4UWbm66j1Fo4WaFo+JjFFr4WYkFmFFoITTCcgotwjiJlYxLCi0otBCfYJ4SAQTizeCMfL/11ltTauXf1cRN5Y/2tm7dGmnLJ7S4+OKLC2am0CvAA0/cL34x84UrGHzjjTdamQwdOlRvomA7TaEFApQIqNmS65f6YHnRRReptWvX2ormAnyY+l6usZ6DuS2FCi1sZeP2QTRyySWXWPuBPqGPs2bNKijeqFEjaxkEXONm5JBKevfubS1bp04dMSnIsUyJzki2TzvttAJbc0cSoQWCrr/+9a+tbaHN1q1bm9Xnv+/evVvFtYWycePYJbQAfwhz4lLbtm1j+4qlM7JKuFZyDfT8vvvuszbZsGFDq/3JJ59cIMywVZBEaLF06dLYew5EYRCsxCU83PhmKbEJLSC80jno2z//+c/zohxbu++//37s7A2YMUEEPXpZPIzpbdi2cX/FTCpr1qzRi+a3Q4QWeePvNyBIsbUVIgZ0CS0gRMGMIHHp9ttvt7aLvpgz+qAOHx8IRmwJognMJGI7R9mHf7RsCTPIxC2ng+vIlD2BLF6s63VmfwZsgQRIgARIgARIgARIIJSA/pyW5TaFFhRaUGgROir/bacHwSm08LOzBdsotHBz032MQgs3KxwVH6PQws9KLMCMQguhEZZTaBHGSaxkXFJoQaGF+ATzlAjEBZIR3HEFd4tpHr/clqCRmS9atChSpUtogVkZTGFGpPD3XxCcw6+Azbbw/c4777QVye0rB6EFHtjiEgJrWBbDdl7YN2TIkLiiuf0333yztSyCdbaUttACooK4wCD6jyUVRowYYetK7K/3n3zySau9vhMznthmjECwNS7FjY+0hRYDBgywXhPweP755+O6l98PpnEiFNQxceLEvK1suIQWHTt2FDNrDoHWcccdZ+2zr6y1woCdENLgXGwfmwgBVbqWghk2bJi31SRCizhRBwQUeAHnS8OHD7eem5yveY6YESNuhpoLL7wwPxOOq91PP/1UHXTQQdZ2b7vttoKieBiT/thyiBo++uijgnL6jnISWoC5K2HWmLglXmxlXXx+97vfuZpSr732WizbK664wln2ww8/jC1rzrTjrIgHiyKQ5Qv2kHtHUZ1mIRIgARIgARIgARIggaIIZP3sJ/VTaEGhBYUWyYaoHgSn0MLPzhZso9DCzU33MQot3KxwVHyMQgs/K7EAMwothEZYTqFFGCexknFJoQWFFuITzFMigF/z2gJm2Bf369tim+7UqVNsWzNnzoxU6xJa4NfSoel///d/rW0efvjhsVVUttDiyiuvjO2bHMByF7brdvrpp1untJdyyOOWX4gL5qUttMDyHra+y74uXbro3Y1sQ6ABgYD5cf0qXSrAEhrShp6Xg9Di+uuvt/YNgg4sgRGSMINA3CwuTZs2LagiTmhx9tlnB7UZN7ZsbRU0XsQOzFqhXzfZxuwvEJrYEmYKiBMjoP++lERo8bOf/czaPyztEJouuOACax04V1NoESdYgC1eyIQmiM6EpZ5jSY2dO3dGqsHDmG5jbtvEB5EKlFJx/daXDjHLZDGjxdVXX202Y/1+7rnnWs8ZwggzufhMnz7dNI98hxjK5Cnf8U+DK+EeETcjirnElaseHiuOgLwMzyovrlcsRQIkQAIkQAIkQAIkkAWBrJ75zHoptKDQgkKLZCNYD4JTaOFnZwu2UWjh5qb7GIUWblY4Kj5GoYWflViAGYUWQiMsp9AijJNYybik0IJCC/EJ5ikRwLr0Eswx86eeeiqlVv5dDdaXN9uQ7/jlsJ7ihBZYImLz5s26qXN70qRJsW2uWLHCWrayhRatWrWy9kvfef/991vPyxWslPJ4wBHueo6lK2wpTaEF2o6bZQR9eeCBB2xdKHnfpk2bVL169aznXdlCiz179qgjjzzS2rckoiJAuvfee631nH/++QUM44QWTZo0KbC17XjooYesbTVu3NhmXtI+BPxr1aplba9NmzbOulu0aGEthyUufL/2DxVaINCN+vTxJNu4B4WmuOVtUJcptHj44Yet7WG2GwhMQtPnn39urQdtQuCgJzyMyXmZeZxQSy+P7XIRWkD4F5Li/h688sorBcXj+EAAhZmIXClu9hxwxktXXzrjjDOs12bKlCm+ojxeIgHzpXja30vsHouTAAmQAAmQAAmQAAmkSCDtZ724+ii0oNCCQotkA1cPglNo4WdnC7ZRaOHmpvsYhRZuVjgqPkahhZ+VWIAZhRZCIyyn0CKMk1jJuKTQgkIL8QnmKRHYsGGDNTiD4I5reY1imv/nP/8Z2xYC4XqKE1qE/Apdrwfbcb9IxnTrthQXWBs6dKjNPL8Pvxw2g4/4ftFFF+Vt9I3LLrvMat+/f3/dzLodJ1pp0KCB1V7fiWU5bP3MWmiBgO4RRxxhbRv9QVDbF4zUzyNuG3UsXrxYjR49WiGYCibHH398bLuVLbSYPXt2bN/WrVsXd5rW/dOmTYutC0tN6ClOaNG5c2fdLHY7bqmDLIQWeAiw+Sz2gZ8rYXmMuLI+IUuo0AIvwWxtYIaZJGnp0qXWelC3KbS46qqrrLaYMSZpuvTSS611mcvAuK7DBx98ENRsuQgtcH8ISZihxXZtkwgt6tSp421q7dq11nbQNpbq8aW4GVUotPCRK/143MvxtPaX3kPWQAIkQAIkQAIkQAIkkBaBtJ7xfPVQaEGhBYUWyUatHgSn0MLPzhZso9DCzU33MQot3KxwVHyMQgs/K7EAMwothEZYTqFFGCexknFJoQWFFuITzFMigCn3436JjUBemgm/eLYFrNC+meKEFpjJIWmqW7eutd2+fftaq6psoYX5K3JbJ+OEFuDmS+PGjbPyyFJosXr1anXmmWda24VPIBC5detWX9cLjiMAiT+oTz75pPrrX/+qfv7zn6uDDz44th2b/1W20CLuekAckjSBh+0csQ/iEz3FCS0gxAlJr7/+urWtLIQWmKnFdl4nnHCCgrjE9YkTQKE+BKddKVRogRcgtv6FzvIgfcBMFAcddJC1LlNocd5551nt8ECeNN1xxx3Wulq2bBmpCg9jtvPEvvXr10ds476Ui9DCnEUprr9xS9YkEVrcdNNNcdXn98cJLVzLXOULK6Vq165tvTYUWuiUstn2vSQv9Xg2vWatJEACJEACJEACJEACxRAo9dkutDyFFhRaUGiRbITqQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgswo9BCaITlFFqEcRIrGZcUWlBoIT7BPEUCcUtDYCryNBN+3W0L0iEAb6Y4oYUtuGWWNb8/+OCD1nbjRAmVLbSYMGGCeQoF3+OEFiHLvUDIYbsOWQktsKzClVdeaW0T/TjttNPUsmXLCs7RtQNB57vvvts5Q4btHG37KltoERek/+Uvf+lCEHssbvYOiBH0FCe0GDVqlG4Wu11RQoslS5ao/fffP9Z/bNc0yb6PPvoo9hxDhRYdOnSw9u+WW26JrTvuQNwSEKbQAiIT23lCWJI04b5hq6t+/fqRqvAwZrM77rjjInauL+UitFi0aJGrm/ljaQgt/vznP+fri9uIE1ocddRRcUUi+y+++GLrtaHQIoIpky+hL8uLtcuk06yUBEiABEiABEiABEigKALFPtMlLUehBYUWFFokG6J6EJxCCz87W7CNQgs3N93HKLRws8JR8TEKLfysxALMKLQQGmE5hRZhnMRKxiWFFhRaiE8wT5HA7bffbg3Q7LfffmrBggWptDR//nyF+mxBOiwpYqY4oUWPHj1MU+/3Bx54wNruPffcYy1LoUUUS5wQB9c0JDVs2NDKH76ApURmzJgRUk3epnfv3rG+ZPMv377KFloMHDjQyufqq6/On3OSjR//+MfW+kxBQVURWrRt29Z6Pr7rGnq8Xr16sXhDhRbdu3e39tF2b4tt7PsDcQIKU2iBALztHOfOnetrouA4lgix1XXbbbdFbPEwZrPDMkihiUILOykKLexcqsLepC/Nk9pXBQbsIwmQAAmQAAmQAAnUFAJJn+WKtafQgkILCi2S3VX0IDiFFn52tmAbhRZubrqPUWjhZoWj4mMUWvhZiQWYUWghNMJyCi3COImVjEsKLSi0EJ9gniKBnj17WoNnCKjh17xppGbNmsW20atXr4Im4oQWTz/9dIGtb0fcL5Lj6qLQIkq0FKHFv/71r9jrjlkKhg8fHm3M8+2tt94Kmt0Av7C/9NJL1a233ppbVgTtzJkzx9qXyhZavPvuu9Z++Za1sKHCUkCHHHKItT7zRU1VEFrgfOKEI7aAfzH7IPbBkiu2FCq0wCwgtraTLr+0Y8cOaz2o2xRaxM18MWbMGNupOPe1aNHC2i7u23rCw5jtPEOWxpB6KLQQEtGcQosoj6r0rdiX56HlqhIL9pUESIAESIAESIAEqjuB0Ge4Uu3M/9+rMld5qT9kyJDcO6CRI0eqDz74QE2cOFF9+umnavr06erzzz9Xs2fPzn2KZYfy1SUJMwRC8D4LS7yOHTtWffjhhzlm+MHSzJkzc7zgK8UwQ7nqxEwPglNo4R8Juo8NGzYs52MUWri56T5GoYWbFY6Kj1Fo4WclFmBGoYXQCMsptAjjJFYyLim0oNBCfIJ5igSwVr0teIZ9CEJu3LixpNY2bNjgXOLhq6++Kqg/Tmhxxx13FNj6dtStW9d6fv3797cWpdAiiqVYocXo0aPVAQccYGUP30q6DMzSpUud9eG64R/3b775JnoC33+L8/PKFlp88sknVkYQTEBokCQtX77cWhd4r1q1KlJVVRBaQDQQd29Kc79N7AVYoUKLefPmWfvp8q3Ixfj+C150xJ2XKbSoU6eO1TbuXGztyb64e6S5FBEexmz9C1kaQ9qi0EJIRHMKLaI8qtK3Yl5qJilTlViwryRAAiRAAiRAAiRQ3QkkeY4rxZZCC85owRktkt1N9CA4hRZ+drZgG4UWbm66j1Fo4WaFo+JjFFr4WYkFmFFoITTCcgotwjiJlYxLCi0otBCfYJ4yAfzy2hZAwz5MK19K6tChQ2zdCPbaUpzQAsHFJGnv3r0q7pff5lIKUi+FFkLi33kxQgssK3LsscfGXvd777032kjAtxdeeMFaH5akGTp0qLeGchVauMQRU6ZM8Z6XboCHC9s4Pvzww9WePXt0U1UVhBZxyxphNpSTTjop8cfGBvsuv/zyCBv5Eiq0cM1EMXXqVKnOm7du3dp6/dBHU2gRJ464++67ve3oBrt27VKnnHKKtV1TtIGHMRtDCi3+TbQUPhRa6F5ZtbZLeYEeUrZq0WBvSYAESIAESIAESKB6Ewh5fkvDhkILCi0otEh2L9GD4BRa+NnZgm0UWri56T5GoYWbFY6Kj1Fo4WclFmBGoYXQCMsptAjjJFYyLim0oNBCfIJ5ygQwFZ0tgIZ9J598spo7d25RLaIcAqJxdePBxJbihBaoZ9y4cbYi1n34Yx7X9ooVK6xlKLSIYkkqtMAMKOeee24s9+uuu64g6B9t0f7tH//4h7XORo0a2QsYe+NmR3DNOrBw4UJrm6eddppRe+FXzL5i8z0zeI2SZ599ttUW55wkYbkUW5vXXHNNQTXlLrTATDiHHnqo9XxuvvnmgvMJ2QFBhY0P9mFpGTOFCi1QDvdJW9233HKLWa31+7fffqtOPPFEax2o1xRaYEYYW3sHH3ywWrlypbUN285+/fpZ60HdEEzpCQ9jtjYptPg3pVL4UGihe1rV2k7jRbqrjqpFg70lARIgmP18WAAAIABJREFUARIgARIggepNwPXcluYxCi0otKDQItm9RA+CU2jhZ2cLtlFo4eam+xiFFm5WOCo+RqGFn5VYgBmFFkIjLKfQIoyTWMm4pNCCQgvxCeYpE/juu+/Uz372M2sQDYG1448/XiX9dT3WWkQ5W2AO+xCMj1sawSW0iJsFw4YkLphcq1at2LbjhBaDBg2yNZHfh1+u2871oosuytvoG5dddpnVfsKECbqZdfuJJ56wljWn+rcVHj9+vLXsr3/9a5u5SiK0wAwi119/vbV+sLngggvUpk2brO34dsbNumITLtjqeuSRR6z9KkZoAb/2pSRCi4YNG1r7hqVXFi9e7Gsqdxxrddr8D/uef/75gjrixsaoUaMKbG07Xn/9dWt7jRs3tpkn3vfmm29a68f5hMxgYmuwc+fOsXXCP8yURGiBWVps/HENsX6qL7344ovW8lKnKbRAnXLMzDEzRmi68MILrfWcfvrpBVXgYcxsC98rS2jxX//1XwV9NHeceuqp1j4vWrTINLV+v++++6zlbUsflcKHQgsr/iqxM80X6ra6qgQEdpIESIAESIAESIAEaggB2/NaFvsotKDQgkKLZDcVPQhOoYWfnS3YRqGFm5vuYxRauFnhqPgYhRZ+VmIBZhRaCI2wnEKLME5iJeOSQgsKLcQnmGdAYOzYsQrLMNgCadh3xBFHqNAgLOxgH1cX2kHAPy65hBao84033ogrmt//7LPPxrbvEiTECS06deqUr9u2QaGFUg899FAsc8xsEioasPGNE1q0bNnSZh7Zh2VD4pZHKEZocdBBB6mdO3dG2jC/JBFaYOYX1GkbL5dccolavXq1WX3k+4IFC9SPf/xja/njjjtOrVu3LmKPL+UutPjFL35hPZ9jjjlGYfaHYhI4HnjggdZ64Z+7d++OVJtEaIHAfVzd6HPcUkVo0CeygF+YQguU+8Mf/mA9F8xqMWTIkMi5mF8grosTh6C9Ll26mEVy/yTZfLSyhBYhM8tQaJFs+aGCi84dXgJZvFjX6/R2gAYkQAIkQAIkQAIkQAIVRkB/Tstym0ILCi0otEg2rPUgOIUWfna2YBuFFm5uuo9RaOFmhaPiYxRa+FmJBYUWQiI8p9AinBUsZVxSaEGhRTLPoXViAo8++qg1cCfBNQSDmzVrpqZNm2atG/ubNm0aGzSWenzBcZ/QAvXgl8Z79uwp6AdmyXjwwQdjz+Pwww9X+PVwXLrzzjutZfHr6S1btsQVUzVdaNG3b18rN1wrLAExefLkWHYhB+KuKYLYI0aMiK1i0qRJscs6oG8ISpsBdqkMy6CIz5q5T+yTRGiB9jAmzDbk+09/+lMV9wv86dOnO5ec6Nq1q5xOJC9nocXnn38ey6J+/fqR80j6xTXjCh4y9JREaIFycfcOXMfDDjtMYaYJiNBwH4HoaMCAAQpLi8h1duU2oQWW9oD/2srtv//+qlu3bvrp5LchVPnrX/9qLYe6Lr74YoXZacyEhzFbW1kLLb744gtru+gLlr1yJQotKLRw+Ucax7J8wY66mUiABEiABEiABEiABMqHQNbPflI/hRYUWlBokWzc60FwCi387GzBNgot3Nx0H6PQws0KR8XHKLTwsxILMOOMFkIjLKfQIoyTWMm4pNCCQgvxCeYZEdi1a5fCEhK2YJq5DzMEXHrppblfVSOPmzHALPeb3/xGoR1XChFaoN6zzjpL1atXLxdQxC+wb7vtNoUp78029e8tWrRwNa1cbeNX79ddd11uqnwIL/TgZ00WWsyZMyc24CvscV2SfjCrwdatW3PXC384pS4zxwwpuC4QP7z33nsKfywwtf8vf/nL2DJ6HRAY4R8KW1DryCOPjK2jTp06OV/4/e9/rxCU11NSoQWC7/iFvt4vffuQQw5Rv/3tb9WTTz6pMLsK+vyrX/0qdhYFlIWPYuYCWypnoQXGqH7u+vaYMWNspxO8b+DAgbF1m9cwqdAC48A1K5B+Hkm39XuNfrKPPfZY7PmgDYh0GjRooDp06KBefvllddNNNzmXdEKZuNk38DBm63fWQosNGzZY20VfsDQL/v785S9/Uf/zP/+jGjVqpONRFFpQaBFxiAy+yMvwrPIMuswqSYAESIAESIAESIAEiiSQ1TOfWS+FFhRaUGiRbJDqQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgswo9BCaITlFFqEcRIrGZcUWlBoIT7BPEMC27ZtUwgc2wJqpe679tprFer3JZfYoZQ+HHXUUWrZsmXO5vv16xd87ngIlVSThRb4lX4p18VV9uuvv84hXr58eW5mDJdtqccw44CZIFYIqff888+PFE0qtEDht99+O6itkP4g4I/ZPOJSuQotMNvC8ccfb+UAIUqccCTuPM39EO5gVhsbQwTtV6xYkS+SVGiBgphFIm4JEVub+r6TTz45VmwTJ7TA+fjEZXobvu1//vOf+fM3N/AwZiuftdAC/YjzCbM/WE5FTxRaUGih+0MW2+ZL8bS/Z9Fn1kkCJEACJEACJEACJFAcgbSf9eLqo9CCQgsKLZKNUT0ITqGFn50t2EahhZub7mMUWrhZ4aj4GIUWflZiAWYUWgiNsJxCizBOYiXjkkILCi3EJ5hnTADBzltvvdUaVDMDW6HfMduEbyYLOa04ocVFF12U+wVzaJu63RlnnKFmzZolTcTm27dvdy41oddJocW/MY4ePTpVX9EZi9ACLaUpRNDbkG2b0CJUeJOG0ALniBkXsByK9KmYHIF3XBNXKlehBV4mxJ3zQw895Dql4GO4F8W18eKLL+brKUZogcLjx48PFgZIP4499lj14YcfqksuucTatzihBdrDsjKY7UTqKiaHMAd8d+7cmT9/cwMPY7a6K0Jo0a5dO2vbZn8otPhBhNOUKRRamH6c9ve4l+Np7U+7v6yPBEiABEiABEiABEigeAJpPeP56qHQgkILCi2SjVM9CE6hhZ+dLdhGoYWbm+5jFFq4WeGo+BiFFn5WYgFmFFoIjbCcQoswTmIl45JCCwotxCeYVxABLMPwk5/8JBK4MQNbvu+Yuv79999P1OM4ocVTTz2l3nrrLeVazsHWH8xKoP9S3dcZBNcPOugg73lTaPFvkhUltEBrWDrDdo19+26//Xb12muvOcvahBZ79uxRV1xxhbMc2k5LaIFzXLp0qbrmmmu8bdrOGSICLLXgS+UqtLj++utjz3v69Om+0wo6/u6778a2cc455+TrKFZogQogfoAwzHaNzH1Y4mbhwoW5duOEFp988km+X7YNzPSBpUGwxIxZv+/7j370IzVu3DhbtZF9eBiz1VURQovNmzer8847z9q+3icKLSi0iDhtBXzxvSQv9XgFnAKbIAESIAESIAESIAESCCRQ6rNdaHkKLSi0oNAicFB+b6YHwSm08LOzBdsotHBz032MQgs3KxwVH6PQws9KLMCMQguhEZZTaBHGSaxkXFJoQaGF+ATzCiSA2S06d+6cCzbjV896UCtuG3ZXXnllrhzKJ00uoQXqwjISWJrhsMMOc/bniCOOUI0aNQparsTs47x581TdunVjl6vAOerBSfwjjCUDzA+WYbElLKNi2uI7/vH2JQhObGWfeeYZX1E1e/Zsa9m4YOmFF15YYH/ooYeq1atX59v64IMPCmxs/Stmnz6jhTQ4efJk9cc//tF57eGbCDrfcsst6qOPPsoVhS+6Avk2oQUK7tu3T/Xt21chCB/n8wiq66lp06ZWJngYD0loE+Pu7LPPjm1T7wuuEx4uQhNEBLbrMWPGjKAq8IfZVh5CmGLT3r17Va1atXKz1mAZD/3z85//vNhqC8rt3r1bnXTSSZH6pS2ck4iyIFqxneOECRMK6rTtgPgB9wj4wmWXXabOPPPM3D3r6KOPVrVr11YQ/+j3ENQRtwxI6HXB+Ma9JUQoBtboG0QMIQkCFRuPe++9N6R4zmbs2LHWOnA/9yVct1dffVVhdiLd9/XtG2+8MVLNueeeW9Ae/m6sX78+Yhf35dlnny0oDwYDBgwoKFIKn7Vr11rbwUwnIem6664rKA8fEAFPSB20KY5A6MvyYu2K6xVLkQAJkAAJkAAJkAAJZEGg2Ge6pOUotKDQgkKLZCNYD4JTaOFnZwu2UWjh5qb7GIUWblY4Kj5GoYWflViAGYUWQiMsp9AijJNYybik0IJCC/EJ5pVEYOXKlapHjx6qVatW6s4778wF9PBrbAT27rrrrtx+HIddKckntJC6d+zYofAAjWDYfffdpxAYRdAP33Hj2Lp1q5gWnWNGAwSrZs6cqRDg/+KLL9SSJUuCl0EpumEW9BKYM2dO7jo/99xzqn79+qphw4aqQ4cOOZ9YsGCBQuDeTBAw4KVF165dVb169XJ++8QTT6hhw4apTZs2meYF3zdu3Kjmzp2rpk6dmvtgG0HSLBPOE/2FwKZx48aqefPmuQA5hDW9e/fO+WOW7bPuiiGAZYtsYjbsCxUGSE8hnhg6dKjCUigtWrRQ999/v2rQoEHuHg2xApYpwb2tqiaMObysxNIY06ZNUxDGhczkUlXPl/0uXwJJX5ontS/fM2fPSIAESIAESIAESKDmEUj6LFesPYUWFFpQaJHs/qIHwSm08LOzBdsotHBz032MQgs3KxwVH6PQws9KLMCMQguhEZZTaBHGSaxkXFJoQaGF+ATzak4gVGhRzTHw9EiABKoIgVGjRqmOHTsWfCZOnBh8Bp9++ql1pgZzWZrgCmlIAiSQOYFiX56Hlsv8BNgACZAACZAACZAACZBAMIHQZ7hS7Si0oNCCQovgYZkz1IPgFFr42dmCbRRauLnpPkahhZsVjoqPUWjhZyUWFFoIifCcQotwVrCUcUmhBYUWyTyH1lWWAIUWVfbSseMkUCMJtGnTxiqSSLLkCWYG0pfBkG0sf8REAiRQngRKfYnuK1+eZ81ekQAJkAAJkAAJkEDNJOB7dkvrOIUWFFpQaJHsHqMHwSm08LOzBdsotHBz032MQgs3KxwVH6PQws9KLCi0EBLhOYUW4axgKeOSQgsKLZJ5Dq2rLAEKLarspWPHSaBGEsA/DiKMMPNu3bp5mcDGLCff+/fv7y1PAxIggcohkNbL9Lh6Kues2CoJkAAJkAAJkAAJkICNQNwzW9r7KbSg0IJCC9sIjN+nB8EptIjnJEdswTYKLYSOPdd9jEILOyN9r/gYhRY6Ffc2hRZuPrajFFrYqMTvk3FJoQWFFvFewiPVigCFFtXqcvJkSKDaE9i0aZOqVatWrFiiadOmaubMmREOW7ZsUZMnT1bXXXddbLkzzzxToW4mEiCB8iSQ9kt1s77yPGv2igRIgARIgARIgARqJgHzWS2r7xRaUGhBoUWye4weBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmObSusgQotKiyl44dJ4EaS+Cll16KFUzI7BTHHnusOuuss9SJJ57otT3ggAPUpEmTaixPnjgJVAUCWb1cl3qrAgP2kQRIgARIgARIgARqCgF5Rss6p9CCQgsKLZLdVfQgOIUWfna2YBuFFm5uuo9RaOFmhaPiYxRa+FmJBYUWQiI8p9AinBUsZVxSaEGhRTLPoXWVJUChRZW9dOw4CdRoAo899phXQCGiC1/erl27Gs2SJ08CVYFA1i/ZqwID9pEESIAESIAESIAEagqBrJ/9pH4KLSi0oNAi2V1FD4JTaOFnZwu2UWjh5qb7GIUWblY4Kj5GoYWflVhQaCEkwnMKLcJZwVLGJYUWFFok8xxaV1kCFFpU2UvHjpNAjSfwyiuvqP32269owcUZZ5yh+vbtq7777rsaz5IASKDcCcjL8Kzycj9/9o8ESIAESIAESIAEahKBrJ75zHoptKDQgkKLZHcWPQhOoYWfnS3YRqGFm5vuYxRauFnhqPgYhRZ+VmJBoYWQCM8ptAhnBUsZlxRaUGiRzHNoXWUJPP3009Yg5VNPPVVlz4kdJwESqDkEPvnkE9WwYUN11FFHWe9lttksatWqpTp27Kh27txZc0DxTEmgihMwX4qn/b2K42H3SYAESIAESIAESKBaEUj7WS+uPgotKLSg0CLZrUMPglNo4WdnC7ZRaOHmpvsYhRZuVjgqPkahhZ+VWFBoISTCcwotwlnBUsYlhRYUWiTzHFpXWQJ79uxR8+fPL/isW7euyp4TO04CJFDzCGzfvl0NHjxYYZaeevXqqeuuu07VqVNHXXnllequu+5Sbdu2VQMGDFCTJk1SmzdvrnmAeMYkUMUJxL0cT2t/FcfD7pMACZAACZAACZBAtSKQ1jOerx4KLSi0oNAi2a1DD4JTaOFnZwu2UWjh5qb7GIUWblY4Kj5GoYWflVhQaCEkwnMKLcJZwVLGJYUWFFok8xxakwAJkAAJkAAJkAAJkEBGBHwvyUs9nlG3WS0JkAAJkAAJkAAJkEARBEp9tgstT6EFhRYUWiQboHoQnEILPztbsI1CCzc33ccotHCzwlHxMQot/KzEgkILIRGeU2gRzgqWMi4ptKDQIpnn0JoESIAESIAESIAESIAEMiIQ+rK8WLuMus1qSYAESIAESIAESIAEiiBQ7DNd0nIUWlBoQaFFsgGqB8EptPCzswXbKLRwc9N9jEILNyscFR+j0MLPSiwotBAS4TmFFuGsYCnjkkILCi2SeQ6tSYAESIAESIAESIAESCAjAklfmie1z6jbrJYESIAESIAESIAESKAIAkmf5Yq1p9CCQgsKLZINUD0ITqGFn50t2EahhZub7mMUWrhZ4aj4GIUWflZiQaGFkAjPKbQIZwVLGZcUWlBokcxzaE0CJEACJEACJEACJEACGREo9uV5aLmMus1qSYAESIAESIAESIAEiiAQ+gxXqh2FFhRaUGiRbIDqQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgsKLYREeE6hRTgrWMq4pNCCQotknkNrEiABEiABEiABEiABEsiIQKkv0X3lM+o2qw0ksG/fPrV79261fft2tW3bNrVr1y6FfUwkQAIkQAIkQAI1k4Dv2S2t4xRaUGhBoUWye4weBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmObQmARIgARIgARIgARIggYwIpPUyPa6ejLrNag0CEFAsXrxYffrpp2rUqFEK/6z36NFDvfHGG9ZPt27d1ODBg9X777+vPv74Y/Xll1+qHTt2GLXyKwmQAAmQAAmQQHUjEPfMlvZ+Ci0otKDQItndQw+CU2jhZ2cLtlFo4eam+xiFFm5WOCo+RqGFn5VYUGghJMJzCi3CWcFSxiWFFhRaJPMcWpMACZAACZAACZAACZBARgTSfqlu1pdRt1mtUmrdunVq8uTJuX80O3fubBVUxAkt4vYPHDhQffjhh2rVqlVkTAIkQAIkQAIkUA0JmM9qWX2n0IJCCwotkt1A9CA4hRZ+drZgG4UWbm66j1Fo4WaFo+JjFFr4WYkFhRZCIjyn0CKcFSxlXFJoQaFFMs+hNQmQAAmQAAmQAAmQAAlkRCCrl+tSb0bdrrHVYuaKGTNmqEGDBgULK7p27ap69eqlevfurTCTRZzIwtzfv3//nJADy44wkQAJkAAJkAAJVA8C8oyWdU6hBYUWFFoku2foQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgsKLYREeE6hRTgrWMq4pNCCQotknkNrEiABEiABEiABEiABEsiIQNYv2TPqdo2rdtu2bWrSpEmqe/fuVqEEZrTAP5wTJ05UuKYrVqxQEEjs27evgBX27dy5Mzdrxbx583JLhwwZMkR16dLFWjf2jx07Vm3YsKGgLu4gARIgARIgARKoWgSyfvaT+im0oNCCQotk9wY9CE6hhZ+dLdhGoYWbm+5jFFq4WeGo+BiFFn5WYgFm77zzjkIQfPjw4bmlSseNG5ebNRPLnOJHIzNnzlSzZ89WeE6QZ4YkOcqhfHVJFFoku5IyLim0oNAimefQmgRIgARIgARIgARIgAQyIpDkH9pibDPqdo2pds+ePWrKlCkKs1KYM05g38iRI9VXX32lMNNFqQltff3112rMmDGqR48eBe1BzDFhwoScSKPUtlieBEiABEiABEigcggU8zxXTBkKLSi0oNAi2RjXg+AUWvjZ2YJtFFq4uek+RqGFmxWOio9RaOFnJRYUWgiJ8JxCi3BWsJRxSaEFhRbJPIfWJEACJEACJEACJEACJJARgWJenCcpk1G3a0S1ixYtUv369SsQPAwcODD3y4/du3dnxmHv3r3qyy+/VHhBbgo8evbsWa1+QZIZRFZMAiRAAiRAAmVIIMlzXCm2FFpQaEGhRbIbgB4Ep9DCz84WbKPQws1N9zEKLdyscFR8jEILPyuxoNBCSITnFFqEs4KljEsKLSi0SOY5tCYBEiABEiABEiABEiCBjAiU8gI9pGxG3a7W1WJmCUyvaQoc8A8lxBe25UCyBIJlSIYNG1bQH7wA3rFjR5ZNs24SIAESIAESIIGUCYQ8v6VhQ6EFhRYUWiQbvHoQnEILPztbsI1CCzc33ccotHCzwlHxMQot/KzEAsy4dIjQCMsptAjjJFYyLim0oNBCfIK5QWDlypVqzpw5+Q/WjGYqJLB8+XI1depU62fjxo2FBVLag7XBMTU1ppT+7rvvUqqV1ZAACVQkgXXr1incW7du3VqRzbItEkhMYP78+da/c/j7Z/sVP/bpzxDYXrZsWeJ2a2KBNF6ku+qoiUxLOef169ert99+OyJqkBkkKlpgYZ7HwoULVf/+/SN969Onj8KzKRMJkAAJkAAJkEDVIOB6bkvzGIUWFFpQaJHsnqAHwSm08LOzBdsotHBz032MQgs3KxwVH6PQws9KLCi0EBLhOYUW4axgKeOSQgsKLZJ5Tg2xRtDv1FNPVT/4wQ8in1GjRiUiMHbs2Nxgw4AzP0uXLk1UV7kaP/300xFGOrObbroplW4jYDVixAhVv359de6556qjjz460ubBBx+c23/jjTeqFi1aqN69e/MXjamQZyUhBLBWvTm+8T1LoVFIv8rNBuK1tm3bqptvvlldfPHFBeP4pJNOUr/+9a/VHXfcoZ599llVXe6R5XYd2J/iCNxwww2Rvzv63zr4q5k+/PDDAvtjjjlGrV271jTld4NAmi/UbXUZzfGrgwDEQd27d48IGUaOHKm+/fZbR6mKPYQlRSZOnBjpY5cuXXIivortCVsjARIgARIgARIohoDteS2LfRRaUGhBoUWyEaoHwSm08LPDe0DxMcy+h/fYFFq4uek+RqGFmxWOio9RaOFnJRZgxhkthEZYTqFFGCexknFJoQWFFuITzDUCTz31VEGA5Ic//KHatWuXZuXe3LJlizriiCMK6pHgTNOmTd0VVJGj+DVj48aNY89z6NChRZ8JBC+tWrVStWrViq1feJr5ySefrF5++WWFmS+YSCBLAuedd57VP2fOnJlls1Wm7rlz56qGDRuqQw45xMrJHLvyHQKqJk2aUHBRZa509e4o/h5dddVVVh+Gb5uzXuFvIwRF4s+SN2vWrHqDSuHssnixrteZQhdrRBULFixQECzIciFdu3ZV5RygWLJkierVq1e+v+j39OnTa8S14kmSAAmQAAmQQFUmoD+nZbldzs8xSa+fvNQfMmSIGj58uIIQ9oMPPsiJTz/99NPcM9Dnn3+uZs+enfsUyxXlq0sSZgiEgBmC4PhxHATyYDZjxgyFdzg4Z/hKMcxQrjox04PgFFr4R4LuYxRa+HnBQvcxCi38zMTHKLTwsxILMKPQQmiE5RRahHESKxmXFFpQaCE+wfx7Avj13mGHHVYQHMEL2yQJL3slsGLLjz322Goz6wICSo0aNbKeL2YG2bRpUxJ0OVv8ETz99NOtddp4xu074YQTVPv27ROJZBJ3lgWqPAGMe7ykMD8ff/yx99wotLAjwn3hnnvuUfvtt19J4xiCCwjTdu7caW/I2IuXJOZ1xHcsM1TdEpjYzhX/oDKlTwBiiyuuuMLqz7/97W8VfF5P+OfX/Nt04IEH5pYU0e24HSVQzEvNJGWirfGbjQAEciKwQI7lOKrCbCwYo4MGDYr0ffLkybZT5D4SIAESIAESIIEyIZDkOa4UWwotOKOFzDZAoUXY4NeD4BRa+JnZgm2c0cLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmOTXA+s477ywIjGB2hB07diQ6e0yBbwZYzO9Y87q6JASY8Kt18xzxHTNehCbU07x5c2s9trpD991yyy0FQbDQPtGu+hOAsMfmS3Xr1vWePIUWdkRYxsfGtNh9t956q70hY+/f//53a7sDBgwwLKv+11WrVlnPFUI+pmwIYLaq3/zmN1buPXv2jDSKv2e1a9cusMUyJEzxBEp5gR5SNr5lHgGBRYsWqc6dO+fFCgMHDlTw+6qSsKwJXjzpQhH8opOJBEiABEiABEigPAmEPL+lYUOhBYUWFFokuwfoQXAKLfzsbME2Ci3c3HQfo9DCzQpHxccotPCzEgsKLYREeE6hRTgrWMq4pNCCQotknlPNrTHFsO3X1x07dkx05vgnMCSYePXVVyeqt9yNv/vuO1W/fv2CcwdTrJ/tS3v27FE2oUsIyxCbhx9+2NcFHq+hBCi0SPfCYxaZkDGZ1Oa5557zdpRCix8oCi28blKSAYLONjEluEP8oifbrBbwe0xTy2QnkMaLdFcd9la5FwRWrlypsESIiBQGDx4cPJtQORHcu3evwstgOQ/k8+fPL6cusi8kQAIkQAIkQALfE3A9t6V5jEILCi0otEh229GD4BRa+NnZgm0UWri56T5GoYWbFY6Kj1Fo4WclFhRaCInwnEKLcFawlHFJoQWFFsk8p5pb//nPfy4IDiJwgqmIk6RHH320oB7rOXnAAAAgAElEQVRbQBEChIULFyapuuxtIbaoV69ewfmfe+65Cr8ydKUmTZoUlDO5YVkX/LL9+eefV3379lXdunVT4H3TTTepQw891Fu+U6dOri7wWA0lQKFFehf+3Xff9Y7DSy+9VLVt21b17t1b9evXT0FAAZFWrVq1nGVxzxw6dKizsxRaUGjhdJCUDm7evFldfvnlBf76t7/9LdICZrW48MILC+w4q0UEU+RLmi/UbXVFGuOXPIHt27fn7skiTujfv7/CvqqaIN7F0kpyPm+++WaVWP6kqvJmv0mABEiABEigWAK257Us9lFoQaEFhRbJRqkeBKfQws/OFmyj0MLNTfcxCi3crHBUfIxCCz8rsaDQQkiE5xRahLOCpYxLCi0otEjmOdXYGr/iw9rpZmAfy2EkSbt371ZYasSsJ+77k08+maT6KmELscVdd91VwAC/co9LeGiPY4T9+++/v0L5TZs2xVWhvvnmG9WyZUt15JFHxtaFQO3o0aNj6+CBmkmgFKHFuHHjFJYMMD/r1q2rkTCvueaa2PEHwRVemsWlbdu25aasP/roo2PrOOGEExTus3GJQgsKLeJ8I+39EFtcdtllBb6Klyl6wqxY5t83/C366quvdDNuf08gixfrep0EXUgAgqBhw4blRQm9evVyPm8V1lCee3bu3KmwTJ+ILbAMiuvvR3meBXtFAiRAAiRAAtWbgP6cluU2hRYUWlBokexeogfBKbTws7MF2yi0cHPTfYxCCzcrHBUfo9DCz0osKLQQEuE5hRbhrGAp45JCCwotknlONbbGDAlmIATfzYCJD8Hw4cOt9djqxr4zzjhDQZhQ3RLOaerUqWrKlCn5D9b9tqU1a9aok046KZbbwQcfnPtVoq2sbd+CBQuc9V111VW2YtxXgwmUIrSowdgKTh2CNQSQbfe7c845J/jXxKNGjVIHHHCAtR7UjX/y4xKFFhRaxPlGFvuxjIj+dw7bq1evjjS1ZMkS67h45JFHInb88m8CWb5gR91MhQSmTZuWFyNAlLB06dJCoyq6Z8OGDbnZz0RskfS5voqeNrtNAiRAAiRAAlWGQNbPflI/hRYUWlBokey2oAfBKbTws7MF2yi0cHPTfYxCCzcrHBUfo9DCz0osKLQQEuE5hRbhrGAp45JCCwotknlONbXGL/nOOuv/Z+89wO4ozrv9hMSO8YcLrjHGjltMHBsSw2eMbdyNC7jEMR1jwJhi04xNMx1sQBRTAgIBokqQPx9OpATRZBAIISEBoimhiF6ERFEBBBJC0v6v+9jPYc6cmdnZc86e99X7/ua6zjV7dqf+dnbPnnnufebDbUY9PFOwznOV8P3vf7+tHAyDRx11VPGWt7wleOzqq6+uUsWQS3vggQcGdUE3NOtkLfs777yzeNvb3hYt9/bbbx9yOqpDnSsg0KJz7dycN910U/SaO/zww92kpdssJxICNtjHMkOxINBCoEVsbAzk/tAyIyyVsyovzVCXnjYZXldcV7tX1XLxFHbGGWc0QYtbbrllVe1KtN333Xdfs38AF08++WQ0rQ6sOgoAdQNrA7MtXLhw1Wm4WioFBkABrpG77rqrYIk/PjNnzizmzp07JF/4GAB5VWWXCtT1zOeXK9BCoIVAi2oXq2sEF2hRrl3I2CbQIq2bO8YEWqS14qiNMYEW5VpZCoEWpkR+LNAiXytS2nUp0EKgRbWRM0RTs5REyKC3xx57VOoxkxWh5Ud4w5u3A7fffvtgPRgGh2t46aWXire//e1BXTgnN954Y8fSnH322dFyAV+qBoCcadOmFRdccEFxzDHHFL/61a8aAM35559fsHxEXe6oH3/88cZNm6VTqPPEE08s8JzCxMHSpUurdiOY/v777y8uueSSRtn77bdfccghhzTeAJ0wYUJt7sNZWgPPBccee2yx7777Fr/5zW9KzzdrrvPmLX/yOL+cR/LikYb15PkT89RTTwX7mNo5WEALjAU80Jx22mnFwQcfXPDGO/qMHj26uOGGG2obY2jDeLr44ouLo48+ulEvbbjqqquKBx98MBs4YwyF7qXsYyxVCbQnVtZmm20WLapu0OKVV14pbr755sY5YuwBil100UXR9tiBe++9twCq4/5h1zLwCeMYbTheNfCbE9KIe2o3gT7S1lGjRhW0kfvO8ccf37hH3HHHHd0U3ZIXt/7Uc+aZZxYso8V45/7GNfDcc8+1pF3Vv5xyyinBc8W1rdCqgD8p3uvvrbXpG7+n5u2B38Kh6GWNs8zzhvWTJUQGez/xEMX/EPvcfffdGqx/VgAPeSNGjCh23HHHxlKFLFfIpxMwW6IOLwV4xrBriv8NwyHcc889jec4u078mGU3ATAUpMBAKtDrZ71YeQItBFoItKh2pbtGcIEW5dqFjG0CLdK6uWNMoEVaK47aGBNoUa6VpRBoYUrkx1yX/F7+4Q9/aNhfmLO+7rrriilTpjTsYgDb/H/gf0bsmats/6xZs/IbNMhT2nUp0EKgxSAfqv1p3tZbbx00gGBMqxJC67BjBPvSl77UKAajZcgoxtIYGJ3LAg9oa6+9dvCz/vrrF7gwLwsHHHBAMD/ldgIflNVXdhxjbkgT9n3hC18oy548jrtotA2Vv+mmmybzugd54xjd3v/+9wfLsvLf9a53FXvttVe2y20miP3zuc466zSrBijAQ0pqCYV3vvOdjTdRARCqBsCRkSNHFuutt16yX29605uKrbbaqpg+fXpWFZTp94vvQAQE9DzssMMKyjXtLAbyCAV+xPfZZ5/i3e9+d1sey2sxYNMmm2zSeCh49dVXQ8UVGJNYtsfa+Y53vCNYLm20NBbTDjdsvvnmbWlIy0NFTsDYc/LJJxef+tSngm2wfhHj4QWQ4IEHHsgpupHm85//fFv7vvvd7zbzc1/aeOONk3Xj8YcHrLIAdOS2190+99xzy7K3HY+d709/+tPNtDvssENL/1ZfffVgGzjHdg4tBrKzwPj+0Ic+1JaGsULgegGoeN/73tdW/oYbbmjFtMQAdoAy//AP/9CWx9XGttddd90GwDF//vyWcuwLyyJ99KMfbbYx1BbK4hqwPlqMR4Wy8PDDDxfbbLNNscYaayTbS3+ARToFvXgDmftfzMsTfQBaZJzaWMcwan1x43POOafRLYAgVxs3DX8SqgSADze/bXM/7jQAgIWW1XGvxU7LHmr5yv6QdXt8qOnVTX8wWBt8QOwve9NN2YMt7+LFi1uWEOklNFZHX/G64RpEeQ6qOwATAw7zAcAdjIHfqZ122qlFG9Np4sSJg7HJatMgUuCggw5qjp2zzjqr9pY9+uijzWsKYLqfgRcAxo4d2+yvXSexGLhWQQoMlALdPtvl5hdoIdBCoEW1q9w1ggu0KNcuZGwTaJHWzR1jAi3SWnHUxphAi3KtLIVAC1MiPxZoka8VKe26FGgh0KLayBmiqUPGPAxAVd92ixnTbOICYzjGeDOquTFvu5YFQAoMSW4+d3uXXXZJFsHbfCFDD2X87d/+7YBMsH/xi1+M9ifHsJvscFE0QAVXI9vGQJkTeMv8k5/8ZLSNVp4bv+c972kQfmXlf+Yzn2krFwMn4fTTT49CIm5dtv2P//iPRRUaEAgltsyNlenHb3jDGxqeFcr6xVv+fl6+P/TQQw3YIrRMj6X3QQsmCQEZ7HjV+GMf+1gQfOHt/KplWXo807ghdt2zfE1ZQBOAIis7N37zm9/cAGww/peF//N//k9b+YAB3I8wKOfWSTqgsZQhjrdJY+Vx78LQVSVQHg94/gc4xELoOoq1wd/PHzkL48aNC7YdeASg4Nvf/nbwOGWGQAvAu9VWWy2ax2+L+51zFnozF5f+broq23/3d39nXQ3G/FFLLbcUqgt4Y968ecHyYjunTp1aCq25daEFD62/+MUvgn3//e9/36jqhRdeKLgu3Ly2/Z3vfCfWnLb9qd/pbmFEQBprk8VvfetbG9diW0OG8Y7cyfJO0w1jadu6zrVloAXG9aEegCusv8B/nUCq/dJoIEALvBeZEfa8887rV1cr1cOyYtZGiw286Lchu1LDlXhQKNBv0ILJNnec9lMEnp2tbotZeg9vMDyj4tnD9lscevbsZ5tV1/BVoNNnuqr5BFoItBBoUe0+w28JL54wVyDQoly7kLFNoEVaN3eMCbRIa8VRG2MCLcq1shRoxn2M53K8g1955ZUNEHry5MmNF0p5oYH5e2wqPCdUfbYgPfmq2GSsbYM15rqUR4v8s2PXpUALgRb5o2aIpuSNLTN4uPGXv/zlSj3GeOTmt22M0663ip///OfBdHgVyAl4OaBMK9+PccMeCrxBDEzhp+c7xkBcAPU74J4+5nECo+Dy5cu7bhJwCm8S+x9cMpcF3gIKGalDGvr7/uZv/qbxFlGqjpCBGNDipJNOCp4nvw7/O2MoZ/kSxhBv7vv5c78zEZ+CkGKgxU033ZQEhajfBS3wRvGDH/yg43Zaf+grb5S5YTCAFiwZ0en4sr7huaNsqZRQHYABP/3pTzvS9l//9V9dKVu28VpibQvFeO3gD3ovQ+g6CtUd2pcDWnCevve97yX75YMWeHsI1VdlH545XI8baFYHaME945e//GXH7f3gBz9Y5Lq0ByhM/X7F9OF3As8soeMGWqAPhoJQGrxj5C5FEltKDEiRt/+7CbH2cV4VXlegkz+2VfK8XtPw3mJZMoMOWL6HZ7KhHnh2Yfkm63fuvWsgdBFo0a46z4UGVXA/xYscwCr/FwA5e/G/ob1W7RlKCgwX0IKl5dxrhW1AJBfQ5nryYYyf/exnRcyr2lAaB+rL4FOgynNcN2kFWgi0EGhR7fp3jeACLcq1CxnbBFqkdXPHmECLtFYctTEm0KJcK0sh0MKUyI8FWuRrRUq7LgVaCLSoNnKGYGreaAsZZjAmVwk777xzsBzfLTjG5lB97Lv11luzqkwZ4lneYuHChW3lpAyFhxxySFv6fuwA7ohp8bvf/a4fTYjWccwxx0TbFmtzaH9K25iBOLVUSKgOdx9LcqQCD/kxuMUtp2ybcf3SSy8Fq4qBFrH+unUZaMFEYFWPG245/jbeFNw3VwcatOCNTL+NnX4HoFq0aFHwXLAzBFp0Wpfl4yEiFDhvn/jEJ0r7htGcPwapdofKD+3LGVfWbj/OAS1yyndBi9gSUn7dOd8BtmzpDPrea9CC8/X1r3+99HyVtRVA7Iorrgidnua+XuritscFLTAiuMfcbQzJOSEGINkSYDllxNIAmrhtsm1+bxReV6CbCfScvK/XNLy3+BNowMGNN944bMRgLVHr94UXXpgERwdSFIEW7eoDrtub98SxZ5H2nNojBf6kwHABLVia071WUl728KLops1dKlJjSgr0UoGc57depBFoIdBCoEW1K9c1ggu0KNcuZGwTaJHWzR1jAi3SWnHUxphAi3KtLAWayaOFqZEXC7TI08lS2XUp0EKghY2JYRszsWDGDje+9NJLszXB4Bxb094vB8PWBz7wgWCduPPMCZSRcmP/4x//uKUY1qB1++Zus2zBQL0BljJ2uwbQls704QveD970pjdFNcPwihv7k08+udhzzz2LDTbYIJoWrS+++OJgq3MMuO985zuLLbbYojj22GMbni5404g33d1z6G7ztviSJUuC9fHmemyZC8oARthhhx2KE088sfjNb35TfO1rX0u+fb7rrrsG64mBFm47Y9sGWrA0RCwN+9dee+3GshdnnHFGcdFFFzW0Af5InTd3KRquy6985SvND0uvxOpz07HNA60bYprGJjXx+pA6h3iY+fSnP13ss88+BQZYvHq84x3viLaPdu+9995uk1q2c0AL7kksiQLEhTeGrbbaKrnsxTrrrNNSh/uFB4yYlv5+oKLPfe5zxeGHH14AoeV4ZHHrYpv7pnuOQktBUS+AkZuOe6jrDSS2dIjf5tB3Ay3wmpA6t/xOAOUBBzBuR44c2Zjc5joPlcs+99wywej2IeblgXxuOraPOOIIX7pizJgx0Xq5l3zzm98sDjzwwMa44LcST0OxdnLtPfzww211sAOPSiyREctLXfwWcd9heQ6u5dgyW34ZLmjBb+NHPvKRYD0bb7xxsG3uTsbfmmuuGcw/evRoN2lH2xiz/fbznXutwusK9GIiPVXG6zUN3y0gN4MNMLKx9M5wCUCX55xzTrP//CYPxiDQov2s8BvrGoTxJqggBaooMFxAi9122615rQB3pwLPbu51hRFSQQr0W4HUc1svjwm0EGgh0KLa1e0awQValGsXMrYJtEjr5o4xgRZprThqY0ygRblWlgLNBFqYGnmxQIs8nSyVXZcCLQRa2JgYtvGHP/zhoOFj9uzZ2ZrghjhkPMHAiStbP2BMDqV/29velu26+ZlnnokuBULZXNyE++67L7puPcbbJ554wm9e377/+te/DupA+wfSnfPmm28ebBcGOB+cMbEwWMYM2u95z3uCXkbKQAveNJ83b55V0Yx5wz3lNSCm3amnnhrsF8ZuPGGEjNx4WYldI7jSD7m8zwUt1l133eKAAw4oLr/88oaRHW1t0jzlzQLDagwOou8xYzDjLRZ46Apdk7SjLFQFLX74wx8G66L+9ddfvwgta4MBGWMYEEaonZzDe+65J9jU2Li0cnbcccfi5Zdfbst78803FzFogfqWLl3alocduGbfaKONgu20OmMxbf3Od77TABE4l/S7agBMCpUfA56s/FzQ4n3ve1/BElDc94FDyGcQT8rb0Lbbbhs1ZuKmGWN7qN3cJ2IB19ChPG9/+9tjWZr7+W3CA1IoP0u8hEAh7hGpZUY4d6EAmBaqh31f/OIXg55NMIbGPEW5ZbmgBXUfffTRwbq4X7FUQipMmDAhmBd4pheGaIzbtMNtP9tAKrF7Wqq9Q/VYLyfUQ2UNVd2q9IvfdgMter2cU6gdeJEAGsv98Jxc51ImU6ZMafZ/4sSJoSb3ZR/3OUAPlr9wlxmk8k5BC+7t5OX5n7IpN/f+gjc/M7ied955lTTgtx+PehhteU4FZOzFfdNtRC9AC9pI+0Le/9y6qmyzBMOcOXMamqeW1qtSJr+3LFfFJ+ZBrkp5dfSbZzT6DaBeNsb4/WNsMNZpSyfPd25/uXb4TWeMs50bOgUtqIN+0ocq7ef/uF1TLN/RSeD8M2a5rkPP636ZaG11EuPtKxXom5ueFwkUpEC/FQg9r9WxT6CFQAuBFtWubtcILtCiXLuQsU2gRVo3d4wJtEhrxVEbYwItyrWyFAItTIn8WKBFvlaktOtSoIVAi2ojZ4ilZiLCN3jw/S1veUulCSDelA2Vg2EtFO64445gesrAYJ8beGALGW0oBwMpk5y8GR9qG/vGjx+fW1Ut6fCeEGtb7uQsRmkm2qp+3DfZ3c7F3jhmTDC5lgoYhmPLcoSWQkmBFrxtn5qsxTAQ0w5owA9MtGN8DeXBUJwKTCh+7GMfC+alnX7IAS1IEwI7rKyYAXj//fe3JNH4kksuCbZ1yy23jObpF2hx7bXXBtvGefnGN75RvPjii9E2cgAoheUkQufxy1/+cjBvCrTAaJ4KMTiH+mfNmhXNyqQw3hBC7ayyD0iJNobgk1jldYIWnCO8M8TCNttsE+wzvxFlhgAm0EPasDRMLHQDWgBXherDO0cMorF2AP2E8rLPdzmNse+v//qvg+kZsyEY0eohxttJrC72+6AFvwUxIAkvSqmAV5dQXZzXXoUYuBaC6npV56pWTh0T626Zq5oedbSXZ00DLTDg1R2A0VxDXs42zx51Be7j1n+8vpXdn3vZDkBpwL8jjzyyYKkiVwuejTAAAJlUAS247+F1B09jbnm2DRzIUokY7d0AIMASd/bBEOzmsf3EXEN+4Dn1tttua3hdA9q0vG6MVyTOf6ewAHodeuihjTZSlls2zwfWRvQMBc4tS1vxW7HXXnu15McrHYAkk7poEQvcn60eYuBIAnqyRAP/Z6xdZb+fsTrYD4QA4EJ/3XNB2Zxb6vLPYaw8nrHpN/3z+833nH6jCb/B1nfz/nL99dc39GRcWb/xuIf3Pf6fuBAFUBP5LZ3FgJTnn39+9JkKgMPqJWaM87zAtUOb3GuHsvCGNXbs2Gh5plMV0IJ7EN7HqM8/HwCkTKiF7lPst7YzxqzPxLafmPbGAtcbXvuAztz8VsakSZOi/xN57nLzlBmWuTbd9Dz7K0iBfivgPqfVuV12PfS7393UZ5P6zA8wr3f11Vc37sG8CMD/sdtvv70AdOU/O59OdU395++m/QOR1zTDEIJmeFHlN23y5MkNzWbOnNl42YA+M1Y60Yx8Q0kz1wgu0KJ81LpjjHlWxphAi7Ru7hgTaJHWiqM2xgRalGtlKdBMHi1MjbxYoEWeTpbKrkuBFgItbEwMy5gJrZBRhSUUcgMT1KEy2MfbsbGA6/1QPly8VwlMGIXKKdvHJNtAh8022yzY9py3sa3tqSUfyjS48sorrZhmjJExlI/JrpyA6/tQ/o9//ONt2WOgBW7077///rb0/o5Y30OTzbylGGrX1ltv7Rcb/I5Wofx4NvCN4GWgRZmWwAahuth37733Btvn7mTSP5T/X/7lX9xkLdv9Ai1YJiPUNsCo3Ld3WdojVAb7mHj1Qwy0AGIoA5owGMSWYylzLcwkPxPRMfgo1ofQftrAZHVoQtvvb12gBcb2FPxEO2Jg26hRo/xmtn3HMPHmN7+57dzieSgWOgUtMFyFljjh3pMzMURbP/vZz7a1lXOH4cUNMQ9OAEP+G9xuPtumrti9jvp80IJ8m2yySbBt//zP/2zFtsWM9djyJkxc9irEvL3k6N6rNgz2cjqZ1KySZ7D3v+72cR/tN2TAdeoa8nK2c+733Wjlwia8qd6PgMGD5a7K+r/HHns0PHy56Zj8DwX+1LvpUtsYpF3vV9z3UundYxhs3MCb9QABbprU9sEHH1z6zOGWb9s896XKtWMY+v3AbyRQoaVJxbQP434o+NALoA7Pmq6x38ruFLQAUPCN+VamH/McnXoe4bk899xg8I/1G7DBrZv/vBdeeGHLPve4bZs3FNebgx3z41122aXtfwTnwD/vgPAh6MAvj2eQlCE1F7TgWuU69Mv3v/P/yn+WAUb104W+n3LKKW3DDc8g/Cdx4Z1QXvadeeaZwXHAMx5l2IcXS1LBBzNi3htTZeiYFOhWgSrPcd2kTd0fuu1Dv/PbpL5Ai3zlTTOBFvmauUZwgRblurljTKBFuV6kcMeYQItyzWyMCbQo18pSoBnPxXbvx77B3LkgO1OoPRZo0a5Jao9dlwItBFqkxsmQPwbpHTLqbbDBBtl9j4EO73znO5Nv7GMMD9WNhwoAkNzAm1oxg1eofPZhDOx0IjC3XTnpcDMfaiPa5YaUAS5UtrvP9+TAG2vucdv+0Ic+1PJ2VqptTDyvscYawXL8SfIYaJELP8QMyiEvBX//938fbFOVpWNw8W+auDFv2LkhBVqst956wUlBNz8Getzc+h8mWXMCb9S57bPtgQYtAEhib/aH4JhYXzE+xcYYE+Z+iIEWLLGQEz75yU8G9WSN+5yAQQI4hOvIzkWn8f/9v/+3FLaIXRfdLB0ClBDzguNqMGPGjLZxyzguA1oog6VaQrrUAVrEvL5gNMoNvP0Ta6/7Nuumm24aTFfFSwRvYofqYl8ItMBIEEsfg7X4PQjlYamYMpfouZqRDi9AoXrQU+FPCnQzgZ6Td7jrjJHBQIt+LBuC3u4b9RgQ8U5V9inz8NTteXSXD+H+W3fgjbaYwTTHwO4/Q9JeJoliZQI6hsrlPm+ehKqAFm79PKcdc8wxwbqp0/V04LYPLwpVg29wd8tzt33QguWvMOK7aWw7BEhwjDIAKPzggxYsmxczhFf9f8XvJQZza5sf0yZ/H9/xBhEKnKdYnlS/3fNr5fqgRQh0iJV5wgkntLU7dj6AXHxwJOe8h8Y32nBurrvuOutGS5wDWvCWc0jzWF+BLVjWxkIuaOH/f8KDCJ45QnUDSYX2x2ALa0tZzPjD66JbNpCJghTotwI5z2+9SCPQQkuHaOmQale3awQXaFGuXcjYJo8Wad3cMSbQIq0VR22MCbQo18pSCLQwJfJjgRb5WpHSrkuBFgItqo2cIZY6th477uFzAsaXtdZaK2g04Y21VEh5wggZS1Nl4Ub2bW97W7AdvkEHA20/3ESn2mvHfvzjH0fbnLMGLeX0ErTgxujrxfcqBkHa9NWvfjVYDsZCN8RAixEjRrjJotsx7xk+aBFbkuADH/hAtOzQgdhSA0xouiEFWmBoqCMwQcsbWbvttlsUZhho0IK34kPjC28N7gRtjj6scx8qiyUq/BADLXINbD/4wQ+CdeWCFtYezhHEMG9Z8lY/3lBCfSjbB2yRMsDVAVowMV9XAOBgSYvY0j51gBZM2Id0trdQc/q6ZMmSAg8YoXLct8NjgE3I+0qsXuoKeeCg7hBoQfqYntzHQoH7fKgvGJZ6GbbaaqtgPfz+KPxJgV5MpKfKGO46s4SVgRYh42qv9QEOdI14GFUHQ+DZ2XTgDZc6A7/xvlEYgypwHvrw+8jSCEzExjxe+OcKd/+usZ9tIDrSGdyH4RZPFP7yBWZIpV6ABPu4b/Bzr7T9xC5wBkDonlOe+/hPxf8LW4KDfgGwuekwtFNnlUA/rR0Yz93yzj777OYx6xNlAzu4cA950BVg17wPEONeHSDFLRMNfA9jPmjhLtGC7vxvGzlyZKO/rk45/WQMuPWzTb9YjtCAGLRkjPrLs5DXDfz2+f0GeuHZy+03330YhjHi99sHLaydLOHCuOLccD6BtmMeNNATqIm0BMrkv4DfF7yPuCEGWtBuxgHnBEiAfvHihL+sDFCE9dkttwy04Dp0ryvayUQ27aM+/p9ybvgPZnoQ//rXv24uQcQzkI1ZH6Kx/cT+UnT+9bLPPvs0+mbXM/3B84kPrHDddxp8WAt96KeCFOi3Aqnntl4eE2gh0L6ogrUAACAASURBVEKgRbWr2zWCC7Qo1y5kbBNokdbNHWMCLdJacdTGmECLcq0sBZrJo4WpkRcLtMjTyVLZdSnQQqCFjYlhGeP+NGRY2XzzzbP0iIEalMnkXVlYf/31g/WvvfbaLROaZeVwnJtgqC/+vrK3unPq6lUagAC/ffadP9Q5oZegRQwkwJ08xtvcT8z4yES0G2KgBWsq54TYEhI+aIFRxXT149w+ke79739/sBz64YYYaLHmmmu6yTraZqL21ltvbazRzKQuRks8tMSWt3D7O9CgBZOtbnts29cvRxjetrP8bsw58kMMtHj44Yf9pMHv22+/fbCuqqCFXziujPmzznj51Kc+FazD7Zu7nfIAwlh109p22b0v5tGA/K6rdb8fOd8xPDGxh2tX3gJm4v4LX/hCwTVh7YvFdYAWsSVs8DhT5Z4QazMT9wQMEnhpCqXLhelM39i9PgRakAdjTKjej33sY1ZkM8a4FLtOuj33zUr+vAEMFmqX/2arn284fe/lhHqorOGkZaivPPsaYIAnr7oDBnDXIOlDp3XXHysfY7zpwBvoVQ3ksXJD++mzqwFwXczzAcs4YLR107PtgxYYut00Ka84Dz74YEtafotCgTfzrcwUeHfWWWc103FPS40jPAxZmcSPPfZYqOqsfQArbllTp04N5mOCw03H82LI6E7m+fPnF4cffnhLen9pNB+0sLIB8ap4IfQbC6TgAwI838UCzzFWN7G/FN8f/vCHluP8r4n1m/1+v/1xEQIteIYJ/X4Dg/gwERAL+0OBySi3Lz40EgItAA9i3sVoK/+L3DJDXj/KQAvXuwNQKtdOKODVxfdcwf8TP7hjEX1iAejC9VpxxBFHNEEbPw9pAa6tr4AXQDZVgw8uAae4oGzV8pReCnSjQOh5rY59Ai0EWgi0qHalukZwgRbl2oWMbQIt0rq5Y0ygRVorjtoYE2hRrpWlQDOBFqZGXizQIk8nS2XXpUALgRY2JoZljAvbkMHDdz8bE+eHP/xhMD9l4i59s802S35Cddu+Tt78p92WPxTzZvpgCkxmhdrJPjPUlbU3tqxBrFx3P4ZVN/C2m3u819tAAW6IgRY5kA7l5IIWY8eOrbVfvnE/BlpsuOGGbvezt3HjjNEUDxzdnJOBBi1YqiPU/i233DJbC0vI23Shsv7mb/7GkjTjmAE5NvnezPjnjbpAC78eJneZtP7mN79ZvPGNbwz2z/qMtwJ7w88vp9egBaCA/5anX2foO29F8sYygEBsyRjrTyquA7QANkjV2e0xM6TecccdwXo6ga5iS03FQAsMHrF++MYQjEuhtEBcvQ4HHHBAsC4MgQp/UqCOiXW3zOGsMzBBv+AC09l3w89k42AJLnSCwb2OgFHUfXufZ80YZGH183toRlSLfdCCZzs7hgHXPElYGW7MG+quETwGUeSCFhi8re4ySIx2W1ribuC1HNCCZwN36Qy8E/B7nArALe45wuDtAgIh0ALgsxPjttsOlqxxteEZKBXw5gXYYnnYZglJQqjftDsVOO56b6DfQLAWfNCCMeR7YbC0xCeeeGKzbbQxteQf58T6QYzXNzeEQIsyj4w8q7n6hNqbAi38sVrm+Q19XOCB5VL8kAtajBo1qqkH7S47d3jEcPXDy0yVgFcTNz/jAM8gClJgoBRwn9Pq3BZoIdBCoEW1q9w1ggu0KNcuZGwTaJHWzR1jAi3SWnHUxphAi3KtLIVAC1MiPxZoka8VKe26FGgh0KLayBliqXkrJ2Rcwc1pWXjmmWeibtNDZVbd96Mf/aisCW3HmaBL1YPLfZuQa8s8ADt4iIq19+STT+5Zi2LLu/igRcxAG2tj1f0YrN3QL9CCSfCqba2S/sMf/rDbrYaHglD+7bbbriVd2Rcm49ddd92etX2gQYsYgIJho2rAABDSmH0+FLCqgBauBrihZgmnWB/Zz6R0KMSu4049WlRdYgcjxXe/+91itdVWS7Y/1Tf3WB2gRY4nDbcNVbcvuuiixqnBXXgo7zrrrBM6dcl9AEmhsmKgBYXFPKX4Xn/wYhUq+5RTTkm2qZODMc9JndwHOql/VchT5wQ7ZQ/nAExgoAWQQT8CzyCuQc88ANAWvF1g9LBlBfrRHrcOIBDTI9fLk5s/Zxvjpdt/AImc4L+d74MWGKoxrvLxvQH45aO524ZuQQvaYnWzBEsqMOng1l03aAGI6tY3evToVPOax7ge3Hyu3iHQopt+WKV4BnPrzLk/cc3wPGMfg059zzGxc2x1W3zBBRe0tAEDvgUftMAzWyrgQcLtTwro5Zp305aBFnh4yAkY0NxyeQ5xQwq0cMcq3h3wWlEW+C/r1ucvBZgLWriQE/eknOAu15Ly9OaXxVhxARu2gX4UpMBAKlD3s5+VL9BCoIVAi2pXumsEF2hRrl3I2CbQIq2bO8YEWqS14qiNMYEW5VpZCjSTRwtTIy8WaJGnk6Wy61KghUALGxPDMsb1bci44hvEQ+Jg3Anl7dU+3uj2J2tC7bB9s2fPLtZYY43SNg2WtbFpN8bimDESA1kvwoIFC6Ka+KAFk2q9On+hcnDt6oZ+gRZMfIba06t9n/jEJ9xuRUELXBTnBt5ke8973lOp3Xhz+NrXvlYAVIT6NtCgBe6hQ+3i7daqgUn/UFl4X/Bhqn6BFvyBZKLX/+A5qJPAG7i4nQ71k32sQx4KvQYtvvKVr4SqCe7jbdONNtoo2uZQX7gHAhTtv//+wXx1gBYf/OAHg3WF2tfJPv7EEHARH8r/7ne/O6hfaucXv/jFYFkp0CL2Ow18h8t2Asae1Vdfva1svJAAVPY68CZ4SJPf/va3va5qlS3PJsPrildZYXrQcIziBhaklijoQVXNIoAMzRCJ1wCgAGAn22cx+1j6oM4lPJqN+vMGb9ybHq5h3U/XzXffEJsLdGAgNm2Iq7SP+xv3L5YXwSDvLklAWTEjvGvsjaUp0wLPGtz7aT9v+Lt9YLsbQCHHowXL5bl1YlTOCRjf3HyuZz0ftKjyPJuqm/u+1clvQzfhmmuuaZZFmbk6z5o1qyWfCzz4oIV7LNRWd5mYMu+QQAzWd2K/bN+jxcSJE0NVtu3DO4lbLvcUN6RAC55XLS/tBzop+zAJaXmI/es0B7TAw41bBtdNWb0cx2ua5cMLRk7AC4t//xVkkaOc0tStQF3PfH65Ai0EWgi0qHY1u0ZwgRbl2oWMbQIt0rq5Y0ygRVorjtoYE2hRrpWlEGhhSuTHAi3ytSKlXZcCLQRaVBs5Qyw1ky8hg8f3v//90p52s2RFqM7QvlyvDkxW4a0iVIa/D6Me7kIHS8A1u99G+84Dabch9kY1dfigxYgRI4Jt4VwzmdXtx3fJ2i/Qggk009SNAXO67RP5/TWdY54bjj322KzTyfrLf/u3fxtsM+3HAPrZz362wCBw9tlnF6wxjJttM87wA+f207YHGrTApbK1xY2/9a1vZeniJmJ5GbcM22ZJDT/0C7TYdtttg22iba4Lbr99qe/kiy0jwhIjodBr0OLb3/52qJq2fYAhMRjAzs8//MM/FLvuumtx6qmnFldccUVx3333NV3IYxywdG5cB2gR8xbC8ka9uCeYa3GuydiyKRhwqoQPfehDQX1SoEXK89T111/fqB7DkKu3beOVpI7Am6NWhxsDfir8SQF/UrzX34ezzmhpYEEvnrHKtPTfWjejYCrmzfU6IKdQW1lGyPSYOnVqKEnX+1hKye0vQF5OYJkEN59vwHXL4J6Lhwk8JBxyyCFtYIVbDtsxiKIqaMHvHqA3v2d4APr1r3/d8qa8Xy/fcwEAt3+2nQNa+J4p5s2bZ9mTMd4X3Pa6GvmgRa+8wQCMWp3dwna+Zwr7HU52uigaUL+1gRg424IPWtjvph33Yxe0YMm/VKgKWuQCM8DGrreGM844o6UZKdDCHf+uJlW2uQ7dkANaAMBVqSOWNue5CqDFzc9/JgUpMBgU6PWzXqw8gRYCLQRaVLviXSO4QIty7ULGNoEWad3cMSbQIq0VR22MCbQo18pSoJk8WpgaebFAizydLJVdlwItBFrYmBiWMW+yuYYO2/7Sl76U1IO38SxtnXGuV4fYm/KxtvE2c6eGz6QwHRzkrbBYOzfbbLMOSmzNgtEwVr4PWnBDDKXNWUqmtda8b/0CLZhsDfXrn/7pn/IaWjFVt6AFRpZQe9m3zTbbNKCKVJP4gQvlH2jQgknwULs++tGPproTPBbzUvKxj32sLX2/QIsDDjgg2D/6XDY539ZoZ8dHPvKRYLkbbrihk+r1zYECLehj6Pyyj2t92rRprzcysNVP0CLmKcS/JwaaWXlXDJCoYtRkKZmY96MUaEFjYx5u7G3bH/zgB8HzxiRcHQGQMzROfGCtjrpXlTJjk+O92r+q6FBHOzFWGljAM3DdwX9b3jXwpbZ5NsSIX3fohx5AvG5fc/vEs5ubLwRaAKaybKBrWHbz2HYdHi34LwTUYXXkxnWDFujhtsW8F5XpznjDK4Dl5bxZ8EELwJJuA54/rC5iHwioWr6/RE+VfuNpxtpy/PHHN6seTKAFS+XkBn7frT/+khox0AIw1PJ0E2MgcEMOaOEvL9Rp/U8//bRbdXDbHSc8C/rLDQYzaacU6IMCvXrGKytHoIVAC4EW1S5o1wgu0KJcu5CxTaBFWjd3jAm0SGvFURtjAi3KtbIUaCbQwtTIiwVa5Olkqey6FGgh0MLGxLCM+SMWMniUGaB32223YD4MQbypzBq2VT4xgzttK1t3edKkSVEDVKhvto83lwdDmDt3bsGSD9YuN2YZBM5RpwHXxW9+85uDZVOPb1SMjYevfvWrnTYhmS923vFWkBNYv9vVy7ZxCeuHNddcsy0t2vjLTPj5OvneLWgR83KCQTTH8HLRRRe19RVtBhq0wKBj58iPc8+5nY+Y5wQgAz/0C7TAeOf3y767Bgu/fWXf8ehg5bhxzPPQQIEWsSUhAEXmz59f1s0GQOT2z7br8GjBRLuV78bHHHNMaTurJvjyl78crGvrrbfOLgpjnttOd7sMtODPupvetrknYsgM/f5wDFfedQRATmuDG/tvwdZR96pSZtkkebfHVxUd6mjnbbfd1gQtqsBOnbYFg7RvNMTQecsttxQ8/wGY8fvnvtlv6fFIVndgLBl4UpeHj5EjR7ZowJv8OQHDsmlB7IMWeGrAUOqmYRsj89FHH12MGjWq4P7HOceziPu2vuutwW1LThrSc7/y6+X73nvvXWCox+MDSz2w/MNDDz3UkrZu0IL/X27b6HtOwODs5gPYsOCDFr24dnzPC/x/7Cb44yzHuwH1vfzyyy39doGPwQRa4AEsJ/A/gaUg7Vz6z58x0IKy3euJ64jlNqt+3CVnKDMHtOA+ZO0l5jqqWi/pc2AUnlWtLp4FFaTAYFGg22e73PwCLQRaCLSodtW7RnCBFuXahYxtAi3SurljTKBFWiuO2hgTaFGulaUQaGFK5McCLfK1IqVdlwItBFpUGzlDLHXsTf+/+7u/i/aUCam3vvWtQUNJpwb5MWPGBMvDCIOb+VjAePf+978/mPdd73pXgdvhtddeO3icsjFID4bAG2Suwcndpv38ce4kxN4ctvJ90ALDWuitafbxVmZu2H333YuPf/zjLZ/111+/8N0X9xO0YKkN67cbs/RGbsD9td+vddZZp20pmm5Bi3e/+93BtrJESE5gctTto213AlrkLB/AchBWhxuzfrIbmPytCg24+W075VGHiXY/9Au0wJjj9t/dfuc731nkrkvvtj8FpzAhHgox0KLM1Tf3A7fNtp27dMiPfvSjYP7ctdwvvvjiYP5OQAt+o1IB19HWPzfmt4+3bHMC90u8ivj3hM0337wl+5577hmsiyVFcowCtOe9731vsAzaXgZaYMyK5Y+dM2DKusK6664b7EuV35i62jZYys2dLO803WDp50C0w10qo8zLTi/a5xt/MfKFwLNFixYV++23X9MAiCEQL0l1B0AAAy0AA+oILFNohk1i4JKcwDOEm88HLXxvEoceemiBASkG0OZAFDlp8KLhekCgjYAbwAihwNJubj/qBi34LXfre/DBB0PNatvnL9/gehnyQQv/XLQVlrnD1fuwww7LzFUUeKuwj2VyDfr0H8AlJ/Bs5urFeLUwmECLXPDqhRdeaOkP3uTckAItWL7FtOh2KRer0z0v/N8NBe5/Vi/xNddcE0rWk32udxsmUBWkwGBRoNNnuqr5BFoItBBoUe2qd43gAi3KtQsZ2wRapHVzx5hAi7RWHLUxJtCiXCtLIdDClMiPBVrka0VKuy4FWgi0qDZyhlhq3ISGDOt/9Vd/FXWlGTOGYfDBEN1J4G2rmOcFDGbAHaHwwx/+MGiwoS02ecJDHZ4hXGOabb/lLW/pyPgZaks3+wBC3vSmNwXbSFsxNPL2Y25gkpkJMutnLPZBC8rHcBhKnzLSu+3iz3toTGHo899i7CdowWRuqF+ALEuWLHG7ENwmzVprrRUsgwkON3QLWsTGKwaisoBRNgYfpc4hbsRC+uTAU7mgBW2PQSD0+eabby7rXmMMffOb3wy2lTfzQ4brfoEWNJ6lS0I6so+lkHLfLKUsxtx6660XLW/06NFBvWKgRQhCcQvoFrSIeW446aST3Gqi2zGjfyegBb9hqfDMM88Uq6++elBb923WVBkxDyZbbrllS7bZs2cH74mMCQCwkNHVCgDm+N73vhdsp42zMtCCsjDgWvqcuBdvK1sf3JhnjtD1yPU/WJbzcts7UNtVJ82rph+ofg2GejHeG1gwefLk2puE0fO5555rfmLPszQE8MM1NrIcRi741WlH7r777qYedXmV4bfd7VfuUlpjx45tyeca931jMkBfmVbu2/rdeLQAenX7w2RCKgCzuOnrBi34v+DWlwvQ4CHQzeca9usCLU444YRmnTwfpq4P05j+uO00oMK/fnLhZMajW577LDqYQItzzjnHJEjG/vn3PUykQAuuC9MCLzs5gf+cPMfYxwedckAL6gHSt7qZa8gJeGGxenOfIX7zm980XuLgRY7x48fnVKM0UqAvClR9lus0vUALgRYCLapd0q4RXKBFuXYhY5tAi7Ru7hgTaJHWiqM2xgRalGtlKQRamBL5sUCLfK1IadelQAuBFtVGzhBM/Y//+I9BA0xsyY6vfOUrwfQYOXMnOUIybrPNNsFyMQqFPE/giSBmMPrXf/3Xlir22GOPaNqNNtoo+vZbSyE1f4m5src+AqLwp6hs6Qgm2FLGWSuPOARasGa5m8bdZnIKQ1ks4LHiE5/4RDA/bx76oZ+gxfPPP1+8/e1vD7Zts802S45dJg1jRmCMy37oFrT40Ic+FGwnb8KmAhPUeB9wz5m7nfJMEDOyY+T2J039NlQBLRgjMY84jPGrrrrKL775nQnvVP94mzUUQoZddGFM5ITtt98+qGlo0rsMcOJtfh7YUtcRbQKqiS2xQNvXWGONKLSx3XbbBdsbe5PQNIiNgdS4sbzETJC74822gQnKDGCcO0vvx5y/WGCC3U9v332PKn4ZsToB8PjTlgq4+o+Nq5CxkqWqrF1+/MlPfrJgmSc/0LdvfOMb0XxWTg5owWSspS+L//7v/95vSs++M7kbqh8NFF5XoNPJ89x8r9c0/LbQyEALJv0GUwBGBa4wYyPxE088UWsT+7GUCvc3t0+AX3gjSAUMqBhC3XwuaIG3J/cYS7Skgg8KdANaAJW7dQPupYJraCZf3aCFv+QKz45lS0HxG82zq9svPFxY8PVzz4Wl6STm/51bJ96mygK/eZYH47yNJX+c0e+yZw+Os9yglUfs/h4PJtCCZ7ic/9ksgeb2x38WSoEWeJJw88bmAtxz5AM6LInkBnf8p55DXW8anFe0Lwss02PtZekQBSmwKiuQ+wzXbTqBFgItBFpUu1O4RnCBFuXahYxtAi3SurljTKBFWiuO2hgTaFGulaUQaGFK5McCLfK1IqVdlwItBFpUGzlDMHUMQmBtYz/w1lDsbXu8S3QTJkyYEDTAYJTxjdmsUxvzgIGLfn+JCgzQGI9CBh725bq276Z/ZXkBKGJv6rvtxrU9BkJu+rx1xYc323/9618X3/rWt6JvTrtl2HYItKCdgCqWxo+//vWvF7zt7L51xkQlyxJ89KMfDebj7fKQsaCfoAX9Ovnkk4Pto48f+chHCibqfeM7fwpSBm88QfihW9Bi6623jraTCUXejnQDBglcA8dc8ts5xHuH71XEysGwb+n8GE8YTL5iHODNP9+7ShXQgvpOOeWUaF1veMMbiqOOOqoBGhjgwaQtOse8rdDeD37wgy1j0vpFHDOI++fazeNuVwEtOBex68DVlTSASwBjaIvhnrd36fumm24a1cfKOPDAA90mtmzjbt7SuTFLVfzud79r3DMwUjFRgAt0C92CFqwL79bnbnPueDvWDCLUyT2Pvuf09/7777dmtsUxb0BAhDzk0VfedOU3xg1M4se81NB2vOAw5l0ohjfTOUeALm7/bJs6Q4G3xmO/neTlGHnNyPpP//RP2ffyHNCCNsWWT7K2W3z00UeHutCTffxOWD1ujFFF4XUFup1EL8v/ek3Db4tlFAy04B442MLee+/dNBzye+8bSXvdXn57TI/bb7+918U3yzvuuONa+pUCI/ht4JmG/rsf17jve8ngtyQW+N1xjbiUGQIlye8uZRFLwzOM264FCxbEqi6efvrphicvN30355TfILesmPch1wBN+tCzqttof3kXjPVuqAu04Hp0+xNbWsfawr3NfifJ53vqGjFiREt5GJNSgeVR3PoZp24YTKCF9dd9JnHbyjbglNsfoCY/fQq0wOua61li//33jz5bUx///9wlfELLHbmgBecu9sLA9OnTW9oeesnC7S9AkTsW3KVu3HTuNucTgMg+ucsYuWVoWwrUpUDZs1uvjgu0EGgh0KLaVewawQValGsXMrYJtEjr5o4xgRZprThqY0ygRblWlkKghSmRHwu0yNeKlHZdCrQQaFFt5AzB1Pw4uQYP2+ZNMj/E3gAmT84Eh1+e+x0D8Lve9a5gWzBC2RrDTOp8+tOfDqajHZdeeqlbbHMb4zAGf+ufG7PfdRXbzNTnDSZr8bDhtq3O7RhowXrFeChJ1Y1mGNjXWWedqAt+y8/bYqHQb9CCMfbxj3882S/ajNEeaCHmAcP69bnPfS4ILnQLWpx66qmlbfzABz7QAA84BzFDs7XTjd/3vvc1xpjvUhmYwU2X2gY8cENV0AKAgjfYU3VwDGM2/SxLx/HU/aefoAW68HYfUENOuztJA4jjAgvuuWD79NNPz66bP3IWugUt7rjjjtJ68ZCywQYbFIAEb3vb20rTmz6AdV/4whcKjEd+SEF0lp8YSM0PMcO/m4+68RJE/tR55Z7o6unXFfM04tbVyXYuaAE8WVY+v7WPPvqo3/SefccVeagNl1xySc/qGAoF9WoyPVbOUNCo0z48++yzTbBgzJgxnRaTlQ+DIm+EGxRL7Bs9/YJ8Lw6uVwE/bS++M2FsoAXLHNUVfIM6xmDgQv+3jGd8oD3XWGzbLmgBvGv7iQEk8ALkB9L5b/iTHlgiFAAgrVwM0qG36vnfZGmIubf6/aBsIAjueW5atrv5v5ELWvhGaOpFV2BQN7BEGcCn30b/d6Au0IK28Mzi1s9/BhcCtfYCLPp6+tBKqN9nnXVWW7/RgfPm1ovR3vVmQb2DDbSgvTwHhcYlMKsLHpA2NNZSoAV9BoJydeHasuVZ7FwQs3yPDx2FluJg6RK3vJhHF+6XRxxxREtayg8tucf/VB9Ky4Em/LYI8nTPqLYHWoHYM1uv9wu0EGgh0KLa1e4awQValGsXMrYJtEjr5o4xgRZprThqY0ygRblWlkKghSmRHwu0yNeKlHZdCrQQaFFt5AzB1LzVHXrTFiO4G5gc5o34kJEEgxmTdd2Gn//858HyqdNcguK5IdQG9pV51aCMWF6Wa2DSaKADk2c57uJj/QjtZ5I55JUhBlqgAd4fVltttaheoXpC+3bcccfo20v9Bi3oF0bw2NIVofbH9q2//vrFokWLgsOlW9ACN9TAHrG6e7GftxfdwATnpz71qaw6uwUtqJc3197znvdk1VfW35133tntStt2v0ELGgD4kTLKl/UpdpxlPGJeSazjTKDlXrsuGNAtaIGhKbW0S6xPVfYzse6H1O+GW3YItGDcf//73+96HPIbCrSRCvyGYrBw25S7Dejx05/+NJg3F7TgfrX66qsHy7B2+N6jUv3p5BhwmtXlxiGPR52UP1Ty9HpS3S9vqOjUST+4fxpYcMYZZwQN5J2UG8rDcg08A7lGxpDB0vICCrhp2e7Fs7WVH4qBTUwPIJQ6g29Qp3+AJXghwIMFXie4z/ka2HcXtOD3ZpdddmlJy7MAHg6YFMG4fthhh7UZnq0sljAgjW+oP+mkk1rKxHDNb8yee+5ZYOgnkMfKsRg4gN8AoDGen13PGJbGYtKydEnsGTJ1DnJBC8oIeQXZbbfdGoZ6vAWccMIJLd4LrH0sjeKHOkELvBByPqx+i4Fe0InPkUce2XY8tvwL+60MizGoAyik+h0qbzCCFvSJ+wrjmzYDI/ziF79o6zOeJkIAUBloAezEGDXtiLkO8FbB9cUY557B9eamiYFJwGZuOra57rmmfK8xeOzz01IP55/xzPnDM5uf5uKLL/aHbPC7D5GEXioJZtROKdAHBfxntbq+C7QQaCHQotoF7RrBBVqUaxcytgm0SOvmjjGBFmmtOGpjTKBFuVaWQqCFKZEfc13ye4ntxO79vLAK3I7HZOYm8J4MRN7pM9usWbPyGzTIU9p1KdBCoMUgH6r9aR5vF7tGD7Z5S95984l1c/009j215mqVHvDmjZXpx+9///sL2hCCQkjLm9L+kiF+3Uyw//M//3O0Dt44HgyByXkmyMq8Svga+d95w9re2mMCzD+eAi3QYfLkNLr1qQAAIABJREFUyV0Z/Lfccsvk25sDAVrQL97U23jjjdv08PWJfccbA5PdsdAtaEG5TOTHAIFYu2z/e9/73ujSBpbGBy2oEzjAjqfiXoAW1IdRh2VJUnWljrFMUKgf/nmJ6VjH0iFu3RMnTmx4Qkj1ocqxr371q0kXzm7dW221VZauvQQtqB/DUczDSVlf3/jGN5Z6MAmBFhjpc+6VIdDCNMMAWAYhpNrPm8K5AWNcTnutvk022aRxv8GQYvvcOBe0oH1lXjVChqbcfpWlw2Ac0jh1XsrKHKrHO/2jlptvqOqW2y/GucEFIS8IueXkpGNpOtcomDII8kfeTYvb/zoD3qWATUyLMoiv27YAm9F/t4+pbR96cEEL2sIERyq/ewwjMfdKdx/bvjcsliDx09h3W1oFQA/NbH9ZDLgArOGn870n5OhbBbTAyI6HAR/28dth3zGm80wVMs7XCVrQb5aE9I371q5QzHUFEBAKtJ//N753h1A57CMdE0Khfg8m0ALIIdYHfz/XTsjrBXqVgRak4b4Y8gTj12Pf8TQS+19EWT/72c+Cbbf/qO55BGhiWVMruyymjNC5c8u0bYEWpoTiwahA7jNct+kEWgi0EGhR7Q7gGsHN2MZyumZs4/mwW2PbULwuXWObQIv0mHPHmECLtFYcNYOuQItyrSyFQAtTIj8WaJGvFSntunTv/bzojF2RF235rcTOBVzCp5vn2Wot63/qv+h/lXk1diN6Wd68FgyfVLG3bF0j5hZbbBE08mDw8Zch6FQ5Ji/xLOEakdztNddcM3os1/U4tFnKyBVbeqTTPnWTD1fL3/3ud6N9drXxtz/72c+2vKnHA5ufpgy0oO0YTrfddtu2vH5Z7ndgFsYO5zMVugUteAvSrde2mawtC0z4M4n4hje8IViGleXGLLvBm4ovv/xysvhegBZUcMMNNzSWWHDbkNqmLz/+8Y8LPGIwjlNp3WvbOsP5YiIXaCmVNxe04A9nTuAttapeRjbbbLOC5U5yQregBZO8IT38N/FCbUFTrjOWywiVUbYPzxTAKIyFKoEJbya2yzxb9Bq0oI24uv/e975Xqb94UsCIhuv62PlCqxBoQZ38ef/EJz6RrLPMoM+blKllqfxzBfTHuTHjW5XzwxueeGBKLfvDskxcj2ZA4K1Ovw18Z6mh3MBvdagM9rFEyosvvphbVOV0/BEO1Z1zv65c2SqeoewZttvjq7g8XTcf9/EGF8Tc2HddyZ8LYHkM31DI/dx/PgI09t8QZxK3zgCkZjrQzn4FJqZ5m93Xxb7z24UevnHf9z5Be9HIX0LAyiFGU56HMDqH3pb3QQvutzyT+OeCslgeywJA9OjRo4OeGKx+7m30g3MdAkw6AS18rycsi1gW+C9x4IEHRvWmvfvvv38DdoiVxbIM1i/i0LmI5c3dz7M10GIKkABY4feeZ/iywPNETr/vv//+aFFVQQsm5Ewn4MhUAGyytMS8TOAGf7zSn9tuu60AwHLzudt4eQGu8e8vbrkuaMHyKbHAtcBEWehasDo5xr1j4cKFsWIa+3nmwSOl5bP4tNNOC+ajvBNPPDE5Fvivxb0UYCw3CLTIVUrpBkKBbp/tcvMPRYMuv+Xc+7iP8qLDTTfd1JzUZz6i20n9ofrGKZpdddVVjWcpM4Twf9wMIYyV3HHlpiPfUNLMNYILtCi/O4aMbQIt0rq5Y0ygRVorjtoYE2hRrpWlEGhhSuTHAi3ytSKlXZcCLeTRotrIGaKpeRAOGUCAKyxgmMWtr/859thjm4YgS9tNzCSIXwffWfZjn332CR7DGFUl8KciVAf7+JMx2AJrDvPGzhe+8IXkcgS84c/kFTc2M85ZXxYsWNDW5yru2tGFSS2Mf/6SCBjJWUqDt+h5MExN8Fl7iPnhwgWs/ykDGayMBx54oC0vZbmT4ZY2FvMWHecdMMV/2xogB+MtSwvw1meuC2/W5fb7xPfUZG6sfWiJoZ4lGYCQXMM5QMTnP//5hqttxocPHvDm/Le+9a3iLW95S/P6pk9480hNkjORj0ttXExvvvnmjboBfgBuMBxwjbrBXPm6fea+UOXt2KeffrqxTjf9ZCkiux/hlYVtIJKPf/zjjXtAVbALbwVu29gGmMkNGEr8/Hyvcv1Ql60Njf5rrbVW0DsPxnuAno022qgxKQ200E3gzUDOBfcFoADGAzFvuOKW23Vjj1Er1E8mrDoJTNRss802jWvIhdsw6ANjbb311sVRRx3VNhGD3njDQQcbB4z7ddddt2Ewi7WFyXbuKdynKHvTTTctvvOd7zTKwuDBOCgLvCF72WWXFcBE1O97UMJbDOcPd9PmRr6szNRx1h7HUAgoyNvWuDbnATUEb+DRxPRwY4yCuQFDjZvX3eb6rjNwL3Hrs22MSQqtCriTlXVst9Y2/L7x+2eAgW/c7LUa/C7zW2qGRYsPPfTQxlITXL9HHHFE23EM3znG5G7ai5HedKgK83VTr+XFqxQGWO7b3AMNrrDnV+7HDz/8cPMT82DAvZ97Jr+xAA3cQymL32jfCEudEyZMaNTHs1rMQAxIAVzAbzC/k3xC9ZMfcITnNM4l/y94BvU9ZvEsx/0X6INndAw/VZ6RTDNit020Mzfwe4PxA51oKzH//3KWTaT9nIuUFrntKEtHn6iHN2BY2obzyfjked31tFhWjh2P9TsHLGQsumOwTCuOm0aMn1QwTa18fyyGQAvKo03AM4xj9AF0YLxTn107qXq5LqxO/huWBcqkbO4XPB9xjXHf5BmvyvI3lIMnOwAj04j/G6nAWKCvPCdRL/cKxgXj2L+2U+XYMTS2vhPj4VBBCgwWBep43guVyfUzVIJN6gu0yD+jphnPIgIt8nTjt4ffP4y6Ai3KNXPHGM/HwDwCLdK6uWNMoEVaK47aGBNoUa6VpUAz7mN27+d/oOttQJCdKfV6zHWppUNe16Nsy65Lxpjd+90xJo8WZQr24Xjoj0Gv9vWh+atcFSEjDgaxmOvRVa6DQ6TBTFThsYBJ2muvvbbxwWiAoTpngq0XMjA5yOQYk8a0ZSgFJl6ZfANu6ZeeVfRjop8Jyiq6Y6xhopLJ1boNN1X6kkrL5CrtZVKWscaYG2oBcAf4huuYSWTOa8iQMxT6zbXENcWnyrkkPddjLuTUa62YyMdQCtSVY5Tpdf1ueWuvvXYQVKgyYRrzAgT0gMv8ugKGLh9ko06gFYV2BXr1rBsrp73G4bWH3xUDDPBMVPdvPRMXBljkxLy1zz2n7sBki+nA85yCFJACg0eBGGgxeFqolkgBKdBLBWLPbL3eX+V/Qy/7V0dZNqkv0CJfXdPMjG3yaFGunWsEF2hRrpc7xszYJtAirZs7xgRapLXiqI0xgRblWlkKNBNoYWrkxQIt8nSyVHZdCrSQRwsbE8M+5iHI3jB1Yy4WBSkgBaSAFJACUqC6ArxtCrTof/DqkRumTZsW/H1mOa0q4Mp6660XLOfDH/5wrcZmNHCfK2ybN1QV2hXo9aS6X157jcNrD9fMeeed14QMOlnCoapirEvJMn1loAWeLgBB6g68iW6QRRWPXXW3S+VLASnwJwUEWmgkSIHhpYD/rFbXd4EW/1t5OYyhtAyGawiRR4u8e4xrBBdoUa6ZO8YEWpTrRQp3jAm0KNfMxphAi3KtLAWaCbQwNfJigRZ5Olkquy4FWgi0sDEx7GPedGcNezOAWPyDH/xg2GsjAaSAFJACUkAKdKIAa6rb76kf53iRwCj8mc98JlgGy6PkBury67fvxx13XG4xHaXbbLPN2uoGEhkoTyUddaKPmeqaXLdy+9iVQVsVrvYNNMCrUD8CHnJYiomlqw488MBip512anwOP/zwxjIiLEHRL69GLNlh/feXA+uHFqpDCkiBtAICLdL66KgUGGoK2DNa3bFAC4EWuEKXR4v8O4hrBBdoUa5byNgmjxZp3dwxJtAirRVHbYwJtCjXylIItDAl8mOBFvlakdKuS4EWAi2qjZwhnvqEE05oM4b81V/9VWOJiCHedXVPCkgBKSAFpEDPFcBwusYaa7T9tgI5vOtd7ypuvPHGaJ2PPPJIAUxhQIQfn3rqqcG8Tz75ZIuHCupYa621guW88Y1vrPUNepZAWG211drq3m+//YJt186i8pt2VSflpXHRGPMGGpx55pkDAv2wZAnwRb8D9V544YVN0ELLhvT7DKg+KVCugECLco2UQgoMJQWqPst1ml6ghUALgRbV7hyuEVygRbl2IWObQIu0bu4YE2iR1oqjNsYEWpRrZSkEWpgS+bFAi3ytSGnXpUALgRbVRs4QT8066u973/vaDCLbb7/9EO+5uicFpIAUkAJSoB4FDj744LbfVYMmgBm/9KUvFcccc0xxwQUXFKNHjy5Iv8UWWxSrr756NN9GG20UNdK+4Q1vKN70pjcVH/nIR4p3vOMd0TJow957711Pp/9c6o477thWP21asGBBrfWuyoV3Onmem29V1qaXbb/00kubsAEeHoZLAH4yyOScc86J3keGix7qpxQYjAoItBiMZ0VtkgL1KZD7DNdtOoEWAi0EWlS7jl0juECLcu1CxjaBFmnd3DEm0CKtFUdtjAm0KNfKUgi0MCXyY4EW+VqR0q5LgRYCLaqNnGGQGkOPGYAsxhDExKyCFJACUkAKSAEpUE2BRYsWFRtuuGHbb6v9xlaN3/rWtxZ4u4gFQIucMvGosXDhwlgxXe9/9NFHi7/+679ua8tpp53WddlDuYBuJ9HL8g9l7ar0zQcOli1bViX7Kpt2uAImq+wJU8OHpQICLYblaVenh7ECZc9uvTou0EKghUCLajca1wgu0KJcu5CxTaBFWjd3jAm0SGvFURtjAi3KtbIUAi1MifxYoEW+VqS061KghUCLaiNnGKRmPfgNNtigzTCy3XbbDYPeq4tSQApIASkgBXqvwOLFi4tNNtmk7bc1B4hw06y55prF+PHjkw3MBS3OP//8ZDndHtxtt93a+rvOOuvoDfoSYXs1mR4rp6T6YXPYX0JjOHi1cOGSgVoyZdgMMHVUCnShAF4m77jjjuaHZwgFKSAFhq4CsWe2Xu8XaCHQQqBFtfuIawQXaFGuXcjYJtAirZs7xgRapLXiqI0xgRblWlkKgRamRH4s0CJfK1LadSnQQqBFtZEzTFJPmTKlzTjCGuv333//MFFA3ZQCUkAKSAEp0FsFXn311WL33XdvLOvhwhM52ywFcsABB2R5oCgDLViSZMyYMb3tnFfak08+WbzxjW9se5a44oorvJT66ivQ60l1vzy/vuH8HYODLaMxcuTI4oUXXhiycnD/Oe+885r9vfnmm4dsX9UxKSAFpIAUkAKrkgL+s1pd3wVaCLQQaFHtzuAawQValGsXMrYJtEjr5o4xgRZprThqY0ygRblWlkKghSmRHwu0yNeKlHZdCrQQaFFt5Ayj1EceeWSxzTbbtHxuvfXWYaSAuioFpIAUkAJSoPcKsFzHqFGjio022qhgaa4QaPGXf/mXxVprrVVsvPHGxV577VUALuSGGGjx3ve+t9h0002LmTNn5hbVcbo5c+YU22+/fcszxP77799xecMpY12T61bucNKyrK94ceNPtMEWQxkEAqywfo4ePboAvFCQAlJACkgBKTBYFLjqqquK22+/fbA0p6/tsGe0umOBFgItBFpUu7RdI7hAi3LtQsY2gRZp3dwxJtAirRVHbYwJtCjXylIItDAl8mOBFvlakdKuS4EWAi2qjRyllgJSQApIASkgBaRAjxRYvnx58fTTTzcmljHyMsl83333FUuWLOm4hvnz5xcsETBt2rTCygR8UFg1FKh7kn3VUKF/rZw7d24TQABEQP+hFp566qni9NNPb/ZTHuqG2hlWf6SAFJACq74CRxxxRAM+/t73vjfsgIu6n/2sfIEWAi0EWlS7V7pGcIEW5dqFjG0CLdK6uWNMoEVaK47aGBNoUa6VpRBoYUrkxwIt8rUipV2XAi0EWlQbOUotBaSAFJACUkAKSAEpIAVqUsAmw+uKa2r2Kl3spEmTmhDCmWeeWTz//POrdH/cxr/yyistS4bw51dBCkgBKSAFpMBgU8BAC/P0NpyAi7qe+fxyBVoItBBoUe3O5xrBBVqUaxcytgm0SOvmjjGBFmmtOGpjTKBFuVaWQqCFKZEfC7TI14qUdl0KtBBoUW3kKLUUkAJSQApIASkgBaSAFKhJAX9SvNffa2r2Kl3sa6+9VowdO7YJW4wZM6ZYunTpKt0nGo/HnHHjxjX7de655xaLFy9e5fulDkgBKSAFpMDQU8AHLYYTcNHrZ71YeQItBFoItKh273SN4AItyrULGdsEWqR1c8eYQIu0Vhy1MSbQolwrSyHQwpTIjwVa5GtFSrsuBVoItKg2cpRaCkgBKSAFpIAUkAJSQArUpEBscrxX+2tq9ipfLEvu4M2C5UP4XH755QUAxqoaVq5cWVxzzTXN/tCnxx9/fFXtjtotBaSAFJACQ1yBGGgxHICLXj3jlZUj0EKghUCLajdS1wgu0KJcu5CxTaBFWjd3jAm0SGvFURtjAi3KtbIUAi1MifxYoEW+VqS061KghUCLaiNHqaWAFJACUkAKSAEpIAWkQE0KlE2Sd3u8pmYPiWIfeOCBFjCBCdUVK1askn2bPHlyS19uvfXWVbIfarQUkAJSQAoMDwXKQIuhDFx0+2yXm1+ghUALgRbV7qeuEVygRbl2IWObQIu0bu4YE2iR1oqjNsYEWpRrZSkEWpgS+bFAi3ytSGnXpUALgRbVRo5SSwEpIAWkgBSQAlJACkiBmhTInSzvNF1Nze5bsWZoqSv+0pe+1AIojB8/vli2bFnf+tdtRYAh119/fUsfNt9886IuvVTuX0jbv5AGug40BjQG+j8Gvvvd7xa33357tz+bgyJ/p890VfMJtBBoIdCi2iXvGsEFWpRrFzK2CbRI6+aOMYEWaa04amNMoEW5VpZCoIUpkR8LtMjXipR2XQq0EGhRbeQotRSQAlJACkgBKSAFpIAUqEmBqpPmVdPX1Oy+FdsPY9Zmm23WAirwR/vll1/uWx87rYilTpgEtuVPiHfYYYfiL//yLwUDCAbQGNAY0BjQGBhyY4Dft7POOqvTn81Bk6/qs1yn6QVaCLQQaFHtsneN4AItyrULGdsEWqR1c8eYQIu0Vhy1MSbQolwrSyHQwpTIjwVa5GtFSrsuBVoItKg2cpRaCkgBKSAFpIAUkAJSQArUpECnk+e5+Wpqdt+K7QdoQR3f/va3W4CF888/v5gzZ07f+lm1ogULFhSXXnppS5u32267YrXVVhtyhrV+jQHV0/831KW5NNcY0BjIHQN4tLjtttuq/lwOyvS5z3DdphNoIdBCoEW1W4BrBBdoUa5dyNgm0CKtmzvGBFqkteKojTGBFuVaWQqBFqZEfizQIl8rUtp1KdBCoEW1kaPUUkAKSAEpIAWkgBSQAlKgJgW6nUQvy19Ts4dksRgkTj/99Ca8wPaMGTOKlStXDqr+cs7PPPPMZjvxZDFt2rRB1UY1RgpIASkgBaRASoEjjjgiCwwcSoCF6VH27Nar4wItBFoItLCrLi92jeACLco1CxnbBFqkdXPHmECLtFYctTEm0KJcK0sh0MKUyI8FWuRrRUq7LgVaCLSoNnKUWgpIASkgBaSAFJACUkAK1KRArybTY+XU1OwhW+yjjz5anHPOOS0QA54jBoN3i/nz5xfjxo1radvIkSOLoWRIGbIDSx2TAlJACkiBFgXKQIuhCFiYALFntl7vH0rPBzapf/nllxfjx48vrr766mLixInFTTfdVEyfPr24/fbbi7vuuquYNWtW49OpluQfKsE0wxCCZldddVVx/fXXF5MnT25oNnPmzOLOO+9s6MVY6UQz8g0lzVwjuECL8ivBHWP8R2GMCbRI6+aOMYEWaa04amNMoEW5VpYCzS677LLC7v1XXnllMWnSJN37TaBALNAiIEpil12XAi0EWiSGiQ5JASkgBaSAFJACUkAKSIH+KdDJpGaVPP3rydCp6aWXXiqYzMFThPu55pprioULF/a9o4sXL25MjLjeNmjX2LFji+eff77v7VGFUkAKSAEpIAW6VSAGWgxlwMI0q/Ic101agRbyaCGPFnbV5cWuEVygRblmIWObQIu0bu4YE2iR1oqjNsYEWpRrZSkEWpgS+bFAi3ytSGnXpUALgRbVRo5SSwEpIAWkgBSQAlJACkiBmhToZgI9J29NzR7yxbJcCGvB+0t0ADjwVsjcuXNr1wAPFtddd11xxhlntAAfABe8jfjaa6/V3gZVIAWkgBSQAlKgDgV80ALAAq8EwyHkPL/1Io1AC4EWAi2q3VFcI7hAi3LtQsY2gRZp3dwxJtAirRVHbYwJtCjXylIItDAl8mOBFvlakdKuS4EWAi2qjRyllgJSQApIASkgBaSAFJACNSnQi4n0VBk1NXvYFPviiy823FO7ni1se8yYMcWMGTN66uUCbxq4ccbdp9XjxvyZlReLYTP81FEpIAWkwJBVwECL4QRY2MlMPbf18phAC4EWAi3sqsuLXSO4QItyzULGNoEWad3cMSbQIq0VR22MCbQo18pSCLQwJfJjgRb5WpHSrkuBFgItqo0cpZYCUkAKSAEpIAWkgBSQAjUp0MsJ9VBZNTV72BX79NNPF0y4utCDu33hhRc21grHqDFv3rxiyZIlpRq9+uqrxbPPPlvcf//9jXVTATfcMt1tJsofeeSR0jKVQApIASkgBaTAqqDAVVddNWw8WPjnI/S8Vsc+gRYCLQRa+Fdf+rtrBBdokdaKoyFjm0CLtG7uGBNokdbKHWMCLcq1shQCLUyJ/FigRb5WpAzd+ydNmtTwujp9+vTG8z0vD82aNavx6eYZt1rL+p/6L/pfZV6N3YheljevBUolBaSAFJACUkAKSAEpIAX6p0DZM2y3x/vXk+FRE94kmEA866yzolCEARLnnHNOATyBdwqj/dkeO3ZsMXr06NL8LBnCMiVz5swZHuKql1JACkgBKSAFhoEC3T7b5eYXaCHQQqBFtRuKawQXaFGuXcjYJtAirZs7xgRapLXiqI0xgRblWlkKgRamRH4s0CJfK1LadWlzXMDTAi2qaVh76tw/C52kq73xqkAKSAEpIAWkgBSQAlJAClRUoJPn2ip5KjZHyTMVeO2114rZs2cXEyZMKM4888xSaMLgi7IYuGLcuHEFxpGlS5dmtkbJpIAUkAJSQApIgVVFgSrPcd2kFWgh0EKgRbW7gmsEF2hRrl3I2CbQIq2bO8YEWqS14qiNMYEW5VpZCoEWpkR+LNAiXytS2nUp0EJLh1QbOUotBaSAFJACUkAKSAEpIAVqUqCbCfScvDU1W8U6CqxYsaKYO3duMXPmzIYHiksuuSQLvgCqwOPFFVdcUcyYMaN46qmnCgAOBSkgBaSAFJACUmDoKpDz/NaLNAItBFoItKh2H3GN4AItyrULGdsEWqR1c8eYQIu0Vhy1MSbQolwrSyHQwpTIjwVa5GtFSrsuBVoItKg2cpRaCkgBKSAFpIAUkAJSQArUpEAvJtJTZdTUbBWbocDixYuL+fPnNyCMJ554onj88ccb2yw/8tJLLxUrV67MKEVJpIAUkAJSQApIgaGkQOq5rZfHBFoItBBoUe3O4RrBBVqUaxcytgm0SOvmjjGBFmmtOGpjTKBFuVaWQqCFKZEfC7TI14qUdl0KtBBoUW3kKLUUkAJSQApIASkgBaSAFKhJgV5OqIfKqqnZKlYKSAEpIAWkgBSQAlKgAwVCz2t17BNoIdBCoEW1C9Q1ggu0KNcuZGwTaJHWzR1jAi3SWnHUxphAi3KtLIVAC1MiPxZoka8VKe26FGgh0KLayFFqKSAFpIAUkAJSQApIASlQkwJ1TKy7ZdbUbBUrBaSAFJACUkAKSAEp0IEC7nNandsCLQRaCLSodoG6RnCBFuXahYxtAi3SurljTKBFWiuO2hgTaFGulaUQaGFK5McCLfK1IqVdlwItBFpUGzlKLQWkgBSQAlJACkgBKSAFalKgzgl2ylaQAlJACkgBKSAFpIAUGDwK1P3sZ+ULtBBoIdCi2nXvGsEFWpRrFzK2CbRI6+aOMYEWaa04amNMoEW5VpZCoIUpkR8LtMjXipR2XQq0EGhRbeQotRSQAlJACkgBKSAFpIAUqEkBmwyvK66p2SpWCkgBKSAFpIAUkAJSoAMF6nrm88sVaCHQQqBFtQvUNYILtCjXLmRsE2iR1s0dYwIt0lpx1MaYQItyrSyFQAtTIj8WaJGvFSntuhRoIdCi2shRaikgBaSAFJACUkAKSAEpUJMC/qR4r7/X1GwVO0AKLFuxrFi45PnmZ+nyJQPUksFb7YoVK4pnn322eOyxx4qFCxcO3oYmWrZi6eJi+YvPt3xWvPJCIkf5oRVLXmwpj/JXrlxZnlEppIAUkAJSoKcK9PpZL1aeQAuBFgItql26rhFcoEW5diFjm0CLtG7uGBNokdaKozbGBFqUa2UpBFqYEvmxQIt8rUhp16VAC4EW1UaOUksBKSAFpIAUkAJSQApIgZoUiE2O92p/Tc1WsQOkwD3Pzig2/8/1m5+Jj/zHALVk8FX7yCOPFCNGjCh23HHH4ic/+Unzc/311w++xpa0aMF/HVs8cdB6LZ+nfveVYuXy10pyhg8DVMwZ8a2W8ih/0XWjwhm0d9ApMHny5GKPPfZofgCKFOpRAFDL1XrmzJn1VPTnUk855ZRmfeedd16tdanwwaFAr57xysoRaCHQQqBFtWveNYILtCjXLmRsE2iR1s0dYwIt0lpx1MaYQItyrSyFQAtTIj8WaJGvFSntuhRoIdCi2shRaikgBaSAFJACUkAKSAEpUJMCZZPk3R6vqdkqdoAUGAjQ4oK7TyrOvXNE4zNYwY6HH3642GmnnZpwhQtaTJw4cYDOVufVhkALwIhX7r2ho0KXPDS9DbKgvPndu8HDAAAgAElEQVSXH9ZRecrUfwWuuOKKlvFdN2jxyiuvFJMmTWp+nnnmmf53uqTGxx9/vNk+2torDy3z5s1r0Xr69OklLenu8KGHHtqs7/TTT++uMOVeJRTo9tkuN79AC4EWAi2q3RJcI7hAi3LtQsY2gRZp3dwxJtAirRVHbYwJtCjXylIItDAl8mOBFvlakdKuS4EWAi2qjRyllgJSQApIASkgBaSAFJACNSmQO1neabqamq1iB0iBgQAtth3/uaYHjRHTfjlAPU9X+9vf/rZpqDTIwsCLG27oDE5I11jv0Rho8dyYfTuq+PnLDhZo0ZFygydTv0GLfsMGnSh95ZVXtlz3y5cv76SYtjz97rtAi7ZTMOR3dPpMVzWfQAuBFgItqt1OXCO4QIty7ULGNoEWad3cMSbQIq0VR22MCbQo18pSCLQwJfJjgRb5WpHSrkuBFgItqo0cpZYCUkAKSAEpIAWkgBSQAjUpUHXSvGr6mpqtYgdIAYEW7cK/+uqrLd4s9tprr+Khhx4qMLouXry4EbfnGtx7YqDFE4esXyxfvLBS41cseal48rANBVpUUm3wJRZo0X5O+gVazJgxo73yHu4RaNFDMVeRoqo+y3WaXqCFQAuBFtVuCq4RXKBFuXYhY5tAi7Ru7hgTaJHWiqM2xgRalGtlKQRamBL5sUCLfK1IadelQAuBFtVGjlJLASkgBaSAFJACUkAKSIGaFOh08jw3X03NVrEDpIBAi3bhn3/++Za32vnjv6qHKGhx0HrFi1MvrdS9l279jyBkoaVDKsk44IkFWrSfgrpAC+Cte++9t/lZsmRJe+U93CPQoodiriJF5T7DdZtOoIVAC4EW1W4KrhFcoEW5diFjm0CLtG7uGBNokdaKozbGBFqUa2Up0Oyyyy4rMIKPHz++4HmZJfYmT55csBzezJkzizvvvLOYNWtWwXNCJ88a5CP/UAkCLaqdSbsuBVoItKg2cpRaCkgBKSAFpIAUkAJSQArUpEAnf2yr5Kmp2Sp2gBQQaNEu/HPPPdcCWkydOrU90Sq2JwVazD19q0q9mXfWTwRaVFJscCYWaNF+XuoCLdprqnePQIt69R2MpVd5jusmrUALgRYCLardAVwjuECLcu1CxjaBFmnd3DEm0CKtFUdtjAm0KNfKUgi0MCXyY4EW+VqR0q5LgRYCLaqNHKWWAlJACkgBKSAFpIAUkAI1KdDNBHpO3pqarWJrUmD5iteKRxbeX1z/6Pji2kf+UNw654Zi0dL5zdo6AS2efumJYtaztxaTH7+yuPKhfy9ueOy/i9uenlw89eKjzXJTG9uO/1yx+X+u3/iMmPbLVNKWY68uX1o8tmh2MXPulOKPj/xHcfXDlxVTnri6uHPe1OKlV19oSdvNl16AFgsXLiweeOCBgrhXgbfi58yZU9x3333FihUrKhXrgxZPHfP1Flhi2dzZWeUte+6xlnx+OfMvPyyrnKqJnnnmmYaenJuqfffrQseHH364ePLJJ7suyy37xRdfbLSR5WVSYenSpcVTTz1V3H///cXcuXOLZcuWpZJnHcMLy+zZsxtL22RlKIqiG9Di2WefbfR13rx52e0n7U9+8pPmhzfgqobXXnuteOyxxxpL+XBtdTsW/Pp7BVowBh5//PHikUce8auo9P2VV15pjBWuefrNeUaDslAVtGBMcj0wJhmbL730UrFy5cqyanR8ECmQ8/zWizQCLQRaCLSoduG7RnCBFuXahYxtAi3SurljTKBFWiuO2hgTaFGulaUQaGFK5McCLfK1IqVdlwItBFpUGzlKLQWkgBSQAlJACkgBKSAFalKgFxPpqTJqaraK7bEC05+6vjj4xh0KF2owuIH48Jt2KR5c8D9FLmixdPmSBtyw7x+3aEISbnm2/cs/bl5c8/D/a+nNvMVPJfNYXuKJj/xHS16+PPvy08WYWacWO1zx5Wg5W43bsPjtzXs0+tRWQMYODPkYJw855JDiwAMPbBqDMQz/8pe/bOzn2JFHHhksDeMnhuvf//73xV577dWSf8899yxOOumkgslPjPyxgCGaOuwzf/6fgBiMtaeddlqxww47NMvFMFol+KDFwmtOawEmFk44Kau4hdf+W2s+r5xegRYvv/xycfnllxcjRowodt9992a/OR877rhjQ6Obbropy+hMx+66665i1KhRxW9+85sWHXfeeefGOb3wwgsbEEtKBFzm2rnBbS4BYOPcc88t9t9//5Y2HnTQQcUFF1xQvPDC6wAQBmzO40477dSSlj4dddRRjTbG6j/11FObdTOOCNdff31xwgknFL/4xS9ayqMt9BU3vqlQBbQAaJg4cWKwPsblKaec0gCA/PpYLsM0O+CAA1ra6V5XpIldG2g4ZsyYxnn66U9/2lIGY+OSSy4p7Frx68/5/oc//KHZRv/aPfjgg5vHOJ8WgESsX5wDC7fddlujnQaUHH744Y1DgAuWnviee+6xLG0xMBXj0R/3Vuauu+5anHXWWQ3QpS3zn3fkgBbAIFdffXXb2LV6qP+iiy5qACOxerR/8CiQem7r5TGBFgItBFpUu+5dI7hAi3LtQsY2gRZp3dwxJtAirRVHbYwJtCjXylIItDAl8mOBFvlakdKuS4EWAi2qjRyllgJSQApIASkgBaSAFJACNSnQywn1UFk1NVvF9kiB5SuXF2NmnRYFElyoge1Tbz24JW0IdACyOPjGHVvS+eX43//9f0c2e1QFtMDrhhvwxvHj/944u27S3vtc2sDslm/bGITNwJiKf/azn1mWZoxXgsMOOywrP4ZbDKmhwBvlbt14DcBw6xuXSdMtaLFk9rRizohvNaGJp373lWLl8vSb8itXrCjmHLdJS56lj85sfn/ioPWKXoAWeALYb7/9WrRwdXG3991336ieaIy3CIz0bp7YNueWtYZjAYjG8mJ0x1hOHtsXioEJAAWAZX7+858n05IfI0wo7LPPPs28gB1nn31283uoXtvHpFXM60MuaLFgwYLiuOOOK60P4OLmm29uaT6wh7WlLF6yZElLXr5g1PXhh1A56AOo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" - } - }, - "cell_type": "markdown", - "metadata": { - "originalKey": "f85ac1dc-8678-4b68-a31b-33623c95fd89" - }, - "source": [ - "This scheme summarizes how the scheduler interacts with any external system used to run trial evaluations:\n", - "\n", - "![image-2.png](attachment:image-2.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "72643e42-f7e8-4aec-a371-efa5d1991899" - }, - "source": [ - "## 2. Set up a mock external execution system " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "d8e139e3-c453-43f3-8211-0a85453bab54" - }, - "source": [ - "An example of an 'external system' running trial evaluations could be a remote server executing scheduled jobs, a subprocess conducting ML training runs, an engine running physics simulations, etc. For the sake of example here, let us assume a dummy external system with the following client:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646325042150, - "executionStopTime": 1646325042183, - "hidden_ranges": [], - "originalKey": "1dd579d5-2afa-4cad-b6c0-a54343863579", - "requestMsgId": "1dd579d5-2afa-4cad-b6c0-a54343863579" - }, - "outputs": [], - "source": [ - "from random import randint\n", - "from time import time\n", - "from typing import Any, Dict, NamedTuple, Union\n", - "\n", - "from ax.core.base_trial import TrialStatus\n", - "from ax.utils.measurement.synthetic_functions import branin\n", - "\n", - "\n", - "class MockJob(NamedTuple):\n", - " \"\"\"Dummy class to represent a job scheduled on `MockJobQueue`.\"\"\"\n", - "\n", - " id: int\n", - " parameters: Dict[str, Union[str, float, int, bool]]\n", - "\n", - "\n", - "class MockJobQueueClient:\n", - " \"\"\"Dummy class to represent a job queue where the Ax `Scheduler` will\n", - " deploy trial evaluation runs during optimization.\n", - " \"\"\"\n", - "\n", - " jobs: Dict[str, MockJob] = {}\n", - "\n", - " def schedule_job_with_parameters(\n", - " self, parameters: Dict[str, Union[str, float, int, bool]]\n", - " ) -> int:\n", - " \"\"\"Schedules an evaluation job with given parameters and returns job ID.\"\"\"\n", - " # Code to actually schedule the job and produce an ID would go here;\n", - " # using timestamp in microseconds as dummy ID for this example.\n", - " job_id = int(time() * 1e6)\n", - " self.jobs[job_id] = MockJob(job_id, parameters)\n", - " return job_id\n", - "\n", - " def get_job_status(self, job_id: int) -> TrialStatus:\n", - " \"\"\" \"Get status of the job by a given ID. For simplicity of the example,\n", - " return an Ax `TrialStatus`.\n", - " \"\"\"\n", - " job = self.jobs[job_id]\n", - " # Instead of randomizing trial status, code to check actual job status\n", - " # would go here.\n", - " if randint(0, 3) > 0:\n", - " return TrialStatus.COMPLETED\n", - " return TrialStatus.RUNNING\n", - "\n", - " def get_outcome_value_for_completed_job(self, job_id: int) -> Dict[str, float]:\n", - " \"\"\"Get evaluation results for a given completed job.\"\"\"\n", - " job = self.jobs[job_id]\n", - " # In a real external system, this would retrieve real relevant outcomes and\n", - " # not a synthetic function value.\n", - " return {\"branin\": branin(job.parameters.get(\"x1\"), job.parameters.get(\"x2\"))}\n", - "\n", - "\n", - "MOCK_JOB_QUEUE_CLIENT = MockJobQueueClient()\n", - "\n", - "\n", - "def get_mock_job_queue_client() -> MockJobQueueClient:\n", - " \"\"\"Obtain the singleton job queue instance.\"\"\"\n", - " return MOCK_JOB_QUEUE_CLIENT" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "d3127829-507d-46ff-bd4f-81ea1bd21066", - "showInput": false - }, - "source": [ - "## 3. Set up an experiment according to the mock external system\n", - "\n", - "As mentioned above, using a `Scheduler` requires a fully set up experiment with metrics and a runner. Refer to the \"Building Blocks of Ax\" tutorial to learn more about those components, as here we assume familiarity with them. \n", - "\n", - "The following runner and metric set up intractions between the `Scheduler` and the mock external system we assume:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646325042214, - "executionStopTime": 1646325042307, - "hidden_ranges": [], - "originalKey": "62b96030-89c2-45a6-9250-0f1b529bbd38", - "requestMsgId": "62b96030-89c2-45a6-9250-0f1b529bbd38" - }, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "from typing import Iterable, Set\n", - "\n", - "from ax.core.base_trial import BaseTrial\n", - "from ax.core.runner import Runner\n", - "from ax.core.trial import Trial\n", - "\n", - "\n", - "class MockJobRunner(Runner): # Deploys trials to external system.\n", - " def run(self, trial: BaseTrial) -> Dict[str, Any]:\n", - " \"\"\"Deploys a trial based on custom runner subclass implementation.\n", - "\n", - " Args:\n", - " trial: The trial to deploy.\n", - "\n", - " Returns:\n", - " Dict of run metadata from the deployment process.\n", - " \"\"\"\n", - " if not isinstance(trial, Trial):\n", - " raise ValueError(\"This runner only handles `Trial`.\")\n", - "\n", - " mock_job_queue = get_mock_job_queue_client()\n", - " job_id = mock_job_queue.schedule_job_with_parameters(\n", - " parameters=trial.arm.parameters\n", - " )\n", - " # This run metadata will be attached to trial as `trial.run_metadata`\n", - " # by the base `Scheduler`.\n", - " return {\"job_id\": job_id}\n", - "\n", - " def poll_trial_status(\n", - " self, trials: Iterable[BaseTrial]\n", - " ) -> Dict[TrialStatus, Set[int]]:\n", - " \"\"\"Checks the status of any non-terminal trials and returns their\n", - " indices as a mapping from TrialStatus to a list of indices. Required\n", - " for runners used with Ax ``Scheduler``.\n", - "\n", - " NOTE: Does not need to handle waiting between polling calls while trials\n", - " are running; this function should just perform a single poll.\n", - "\n", - " Args:\n", - " trials: Trials to poll.\n", - "\n", - " Returns:\n", - " A dictionary mapping TrialStatus to a list of trial indices that have\n", - " the respective status at the time of the polling. This does not need to\n", - " include trials that at the time of polling already have a terminal\n", - " (ABANDONED, FAILED, COMPLETED) status (but it may).\n", - " \"\"\"\n", - " status_dict = defaultdict(set)\n", - " for trial in trials:\n", - " mock_job_queue = get_mock_job_queue_client()\n", - " status = mock_job_queue.get_job_status(\n", - " job_id=trial.run_metadata.get(\"job_id\")\n", - " )\n", - " status_dict[status].add(trial.index)\n", - "\n", - " return status_dict" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325042364, - "executionStopTime": 1646325042596, - "originalKey": "66cfd1c1-541a-4206-964c-25dbfafecd2a", - "requestMsgId": "66cfd1c1-541a-4206-964c-25dbfafecd2a" - }, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "from ax.core.metric import Metric, MetricFetchResult, MetricFetchE\n", - "from ax.core.base_trial import BaseTrial\n", - "from ax.core.data import Data\n", - "from ax.utils.common.result import Ok, Err\n", - "\n", - "\n", - "class BraninForMockJobMetric(Metric): # Pulls data for trial from external system.\n", - " def fetch_trial_data(self, trial: BaseTrial) -> MetricFetchResult:\n", - " \"\"\"Obtains data via fetching it from ` for a given trial.\"\"\"\n", - " if not isinstance(trial, Trial):\n", - " raise ValueError(\"This metric only handles `Trial`.\")\n", - "\n", - " try:\n", - " mock_job_queue = get_mock_job_queue_client()\n", - "\n", - " # Here we leverage the \"job_id\" metadata created by `MockJobRunner.run`.\n", - " branin_data = mock_job_queue.get_outcome_value_for_completed_job(\n", - " job_id=trial.run_metadata.get(\"job_id\")\n", - " )\n", - " df_dict = {\n", - " \"trial_index\": trial.index,\n", - " \"metric_name\": \"branin\",\n", - " \"arm_name\": trial.arm.name,\n", - " \"mean\": branin_data.get(\"branin\"),\n", - " # Can be set to 0.0 if function is known to be noiseless\n", - " # or to an actual value when SEM is known. Setting SEM to\n", - " # `None` results in Ax assuming unknown noise and inferring\n", - " # noise level from data.\n", - " \"sem\": None,\n", - " }\n", - " return Ok(value=Data(df=pd.DataFrame.from_records([df_dict])))\n", - " except Exception as e:\n", - " return Err(\n", - " MetricFetchE(message=f\"Failed to fetch {self.name}\", exception=e)\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "98c546ac-4e5d-4cee-9ea0-68b4d061c65f", - "showInput": false - }, - "source": [ - "Now we can set up the experiment using the runner and metric we defined. This experiment will have a single-objective optimization config, minimizing the Branin function, and the search space that corresponds to that function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325042616, - "executionStopTime": 1646325042623, - "originalKey": "d2d49a52-1b22-469b-8e09-0e68f59000d5", - "requestMsgId": "d2d49a52-1b22-469b-8e09-0e68f59000d5" - }, - "outputs": [], - "source": [ - "from ax import *\n", - "\n", - "\n", - "def make_branin_experiment_with_runner_and_metric() -> Experiment:\n", - " parameters = [\n", - " RangeParameter(\n", - " name=\"x1\",\n", - " parameter_type=ParameterType.FLOAT,\n", - " lower=-5,\n", - " upper=10,\n", - " ),\n", - " RangeParameter(\n", - " name=\"x2\",\n", - " parameter_type=ParameterType.FLOAT,\n", - " lower=0,\n", - " upper=15,\n", - " ),\n", - " ]\n", - "\n", - " objective = Objective(metric=BraninForMockJobMetric(name=\"branin\"), minimize=True)\n", - "\n", - " return Experiment(\n", - " name=\"branin_test_experiment\",\n", - " search_space=SearchSpace(parameters=parameters),\n", - " optimization_config=OptimizationConfig(objective=objective),\n", - " runner=MockJobRunner(),\n", - " is_test=True, # Marking this experiment as a test experiment.\n", - " )\n", - "\n", - "\n", - "experiment = make_branin_experiment_with_runner_and_metric()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "d28afea7-6c3f-4813-af4e-253692718015", - "showInput": false - }, - "source": [ - "## 4. Setting up a `Scheduler`" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "db14819c-a219-483d-ba06-60d30294ad94", - "showInput": false - }, - "source": [ - "### 4A. Auto-selecting a generation strategy\n", - "\n", - "A `Scheduler` requires an Ax `GenerationStrategy` specifying the algorithm to use for the optimization. Here we use the `choose_generation_strategy` utility that auto-picks a generation strategy based on the search space properties. To construct a custom generation strategy instead, refer to the [\"Generation Strategy\" tutorial](https://ax.dev/tutorials/generation_strategy.html).\n", - "\n", - "Importantly, a generation strategy in Ax limits allowed parallelism levels for each generation step it contains. If you would like the `Scheduler` to ensure parallelism limitations, set `max_examples` on each generation step in your generation strategy." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325042632, - "executionStopTime": 1646325042699, - "originalKey": "d699d3e9-85d3-40f3-822f-ece6a6cc58e3", - "requestMsgId": "d699d3e9-85d3-40f3-822f-ece6a6cc58e3", - "scrolled": true - }, - "outputs": [], - "source": [ - "from ax.generation_strategy.dispatch_utils import choose_generation_strategy\n", - "\n", - "generation_strategy = choose_generation_strategy(\n", - " search_space=experiment.search_space,\n", - " max_parallelism_cap=3,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "452f36d1-c7d8-477a-87d9-1b9767ace072", - "showInput": false - }, - "source": [ - "Now we have all the components needed to start the scheduler:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646325042718, - "executionStopTime": 1646325042829, - "hidden_ranges": [], - "originalKey": "139e2f4d-ee86-425b-bece-697ed21c2316", - "requestMsgId": "139e2f4d-ee86-425b-bece-697ed21c2316" - }, - "outputs": [], - "source": [ - "from ax.service.scheduler import Scheduler, SchedulerOptions\n", - "\n", - "\n", - "scheduler = Scheduler(\n", - " experiment=experiment,\n", - " generation_strategy=generation_strategy,\n", - " options=SchedulerOptions(),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4B. Optional: Defining a plotting function" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "from ax.plot.trace import optimization_trace_single_method\n", - "from ax.utils.notebook.plotting import render, init_notebook_plotting\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"\n", - "\n", - "\n", - "def get_plot():\n", - " best_objectives = np.array(\n", - " [[trial.objective_mean for trial in scheduler.experiment.trials.values()]]\n", - " )\n", - " best_objective_plot = optimization_trace_single_method(\n", - " y=np.minimum.accumulate(best_objectives, axis=1),\n", - " title=\"Model performance vs. # of iterations\",\n", - " ylabel=\"Y\",\n", - " )\n", - " return best_objective_plot" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "f8a2cc5b-f289-497b-80b5-6807d85137b5", - "showInput": false - }, - "source": [ - "## 5. Running the optimization\n", - "\n", - "Once the `Scheduler` instance is set up, user can execute `run_n_trials` as many times as needed, and each execution will add up to the specified `max_trials` trials to the experiment. The number of trials actually run might be less than `max_trials` if the optimization was concluded (e.g. there are no more points in the search space)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "scheduler.run_n_trials(max_trials=3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_objective_plot = get_plot()\n", - "render(best_objective_plot)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e3740875-5b3c-456d-a674-c2c78dab0e0d", - "showInput": false - }, - "source": [ - "We can examine `experiment` to see that it now has three trials:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325045492, - "executionStopTime": 1646325045752, - "originalKey": "0ff23f6f-3011-4962-a691-9187f3e8b222", - "requestMsgId": "0ff23f6f-3011-4962-a691-9187f3e8b222" - }, - "outputs": [], - "source": [ - "from ax.service.utils.report_utils import exp_to_df\n", - "\n", - "exp_to_df(experiment)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "c2888bcc-0c82-4f24-bcb6-105c7e9c4e77", - "showInput": false - }, - "source": [ - "Now we can run `run_n_trials` again to add three more trials to the experiment (this time, without plotting)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325045788, - "executionStopTime": 1646325048325, - "originalKey": "e76eb807-0a6c-45bc-a00f-e753ae8ef6db", - "requestMsgId": "e76eb807-0a6c-45bc-a00f-e753ae8ef6db", - "scrolled": true - }, - "outputs": [], - "source": [ - "scheduler.run_n_trials(max_trials=3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_objective_plot = get_plot()\n", - "render(best_objective_plot)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "bee52b5d-a5fe-4554-b294-da9b83e8ff02", - "showInput": false - }, - "source": [ - "Examiniming the experiment, we now see 6 trials, one of which is produced by Bayesian optimization (GPEI):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325048364, - "executionStopTime": 1646325048529, - "originalKey": "39204bbb-757b-4dfb-a685-5d540e621ec9", - "requestMsgId": "39204bbb-757b-4dfb-a685-5d540e621ec9" - }, - "outputs": [], - "source": [ - "exp_to_df(experiment)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "bf89e55c-08cf-480c-914a-2f0c682f74fd", - "showInput": false - }, - "source": [ - "For each call to `run_n_trials`, one can specify a timeout; if `run_n_trials` has been running for too long without finishing its `max_trials`, the operation will exit gracefully:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325048565, - "executionStopTime": 1646325049269, - "originalKey": "5b07d1f4-af03-4652-8ed2-bb772b077305", - "requestMsgId": "5b07d1f4-af03-4652-8ed2-bb772b077305" - }, - "outputs": [], - "source": [ - "scheduler.run_n_trials(max_trials=3, timeout_hours=0.00001)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "best_objective_plot = get_plot()\n", - "render(best_objective_plot)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "6363db46-3b18-4a8b-8c0f-3e290806592b", - "showInput": false - }, - "source": [ - "## 6. Leveraging SQL storage and experiment resumption\n", - "\n", - "When a scheduler is SQL-enabled, it will automatically save all updates it makes to the experiment in the course of the optimization. The experiment can then be resumed in the event of a crash or after a pause. The scheduler should be stateless and therefore, the scheduler itself is not saved in the database.\n", - "\n", - "To store state of optimization to an SQL backend, first follow [setup instructions](https://ax.dev/docs/storage.html#sql) on Ax website. Having set up the SQL backend, pass `DBSettings` to the `Scheduler` on instantiation (note that SQLAlchemy dependency will have to be installed – for installation, refer to [optional dependencies](https://ax.dev/docs/installation.html#optional-dependencies) on Ax website):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646325049292, - "executionStopTime": 1646325049522, - "hidden_ranges": [], - "originalKey": "c89a6d00-b660-4370-93a6-b46edfc58e07", - "requestMsgId": "c89a6d00-b660-4370-93a6-b46edfc58e07" - }, - "outputs": [], - "source": [ - "from ax.storage.registry_bundle import RegistryBundle\n", - "from ax.storage.sqa_store.db import (\n", - " create_all_tables,\n", - " get_engine,\n", - " init_engine_and_session_factory,\n", - ")\n", - "from ax.storage.sqa_store.decoder import Decoder\n", - "from ax.storage.sqa_store.encoder import Encoder\n", - "from ax.storage.sqa_store.sqa_config import SQAConfig\n", - "from ax.storage.sqa_store.structs import DBSettings\n", - "\n", - "bundle = RegistryBundle(\n", - " metric_clss={BraninForMockJobMetric: None}, runner_clss={MockJobRunner: None}\n", - ")\n", - "\n", - "# URL is of the form \"dialect+driver://username:password@host:port/database\".\n", - "# Instead of URL, can provide a `creator function`; can specify custom encoders/decoders if necessary.\n", - "db_settings = DBSettings(\n", - " url=\"sqlite:///foo.db\",\n", - " encoder=bundle.encoder,\n", - " decoder=bundle.decoder,\n", - ")\n", - "\n", - "# The following lines are only necessary because it is the first time we are using this database\n", - "# in practice, you will not need to run these lines every time you initialize your scheduler\n", - "init_engine_and_session_factory(url=db_settings.url)\n", - "engine = get_engine()\n", - "create_all_tables(engine)\n", - "\n", - "stored_experiment = make_branin_experiment_with_runner_and_metric()\n", - "generation_strategy = choose_generation_strategy(search_space=experiment.search_space)\n", - "\n", - "scheduler_with_storage = Scheduler(\n", - " experiment=stored_experiment,\n", - " generation_strategy=generation_strategy,\n", - " options=SchedulerOptions(),\n", - " db_settings=db_settings,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "6939cf6e-5f6b-4a61-a807-f2fea1c7f5ea", - "showInput": false - }, - "source": [ - "To resume a stored experiment:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646325049666, - "executionStopTime": 1646325049932, - "hidden_ranges": [], - "originalKey": "351e7fca-4332-41ec-ad7d-6a143e0000ef", - "requestMsgId": "351e7fca-4332-41ec-ad7d-6a143e0000ef" - }, - "outputs": [], - "source": [ - "reloaded_experiment_scheduler = Scheduler.from_stored_experiment(\n", - " experiment_name=\"branin_test_experiment\",\n", - " options=SchedulerOptions(),\n", - " # `DBSettings` are also required here so scheduler has access to the\n", - " # database, from which it needs to load the experiment.\n", - " db_settings=db_settings,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e4064b5c-3dc0-4be5-bd34-63804ab19047", - "showInput": false - }, - "source": [ - "With the newly reloaded experiment, the `Scheduler` can continue the optimization:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325049943, - "executionStopTime": 1646325050416, - "originalKey": "6dddf6e6-1fd3-4e23-a88b-7b964db9b20d", - "requestMsgId": "6dddf6e6-1fd3-4e23-a88b-7b964db9b20d" - }, - "outputs": [], - "source": [ - "reloaded_experiment_scheduler.run_n_trials(max_trials=3)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e3f24c9e-3da1-4ee0-ab1c-741f624a6014", - "showInput": false - }, - "source": [ - "## 7. Configuring the scheduler with `SchedulerOptions`, like early stopping\n", - "\n", - "`Scheduler` exposes many options to configure the exact settings of the closed-loop optimization to perform. A few notable ones are:\n", - "- `trial_type` –– currently only `Trial` and not `BatchTrial` is supported, but support for `BatchTrial`-s will follow,\n", - "- `tolerated_trial_failure_rate` and `min_failed_trials_for_failure_rate_check` –– together these two settings control how the scheduler monitors the failure rate among trial runs it deploys. Once `min_failed_trials_for_failure_rate_check` is deployed, the scheduler will start checking whether the ratio of failed to total trials is greater than `tolerated_trial_failure_rate`, and if it is, scheduler will exit the optimization with a `FailureRateExceededError`,\n", - "- `ttl_seconds_for_trials` –– sometimes a failure in a trial run means that it will be difficult to query its status (e.g. due to a crash). If this setting is specified, the Ax `Experiment` will automatically mark trials that have been running for too long (more than their 'time-to-live' (TTL) seconds) as failed,\n", - "- `run_trials_in_batches` –– if `True`, the scheduler will attempt to run trials not by calling `Scheduler.run_trial` in a loop, but by calling `Scheduler.run_trials` on all ready-to-deploy trials at once. This could allow for saving compute in cases where the deployment operation has large overhead and deploying many trials at once saves compute. Note that using this option successfully will require your scheduler subclass to implement `MySchedulerSubclass.run_trials` and `MySchedulerSubclass.poll_available_capacity`.\n", - "- `early_stopping_strategy` -- determines whether a trial should be stopped given the current state of the experiment, so that less promising trials can be terminated quickly. For more on this, see the Trial-Level Early Stopping tutorial: https://ax.dev/tutorials/early_stopping/early_stopping.html\n", - "- `global_stopping_strategy` -- determines whether the full optimization should be stopped or not, so that the run terminates when little progress is being made. A `global_stopping_strategy` instance can be passed to `SchedulerOptions` just as it is passed to `AxClient`, as illustrated in the tutorial on Global Stopping Strategy with AxClient: https://ax.dev/tutorials/gss.html\n", - "\n", - "The rest of the options are described in the docstring below:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325050451, - "executionStopTime": 1646325050569, - "originalKey": "b9645271-88cd-43f1-9e07-83afe722696d", - "requestMsgId": "b9645271-88cd-43f1-9e07-83afe722696d" - }, - "outputs": [], - "source": [ - "print(SchedulerOptions.__doc__)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "eef1a121-1eee-4302-b586-85958f177b04", - "showInput": false - }, - "source": [ - "## 8. Advanced functionality\n", - "\n", - "### 8a. Reporting results to an external system\n", - "\n", - "The `Scheduler` can report the optimization result to an external system each time there are new completed trials if the user-implemented subclass implements `MySchedulerSubclass.report_results` to do so. For example, the folliwing method:\n", - "\n", - "```\n", - "class MySchedulerSubclass(Scheduler):\n", - " ...\n", - " \n", - " def report_results(self, force_refit: bool = False):\n", - " write_to_external_database(len(self.experiment.trials))\n", - " return (True, {}) # Returns optimization success status and optional dict of outputs.\n", - "```\n", - "could be used to record number of trials in experiment so far in an external database.\n", - "\n", - "Since `report_results` is an instance method, it has access to `self.experiment` and `self.generation_strategy`, which contain all the information about the state of the optimization thus far." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "12b60db0-52d8-4337-ad1c-77fdc3c2452b", - "showInput": false - }, - "source": [ - "### 8b. Using `run_trials_and_yield_results` generator method\n", - "\n", - "In some systems it's beneficial to have greater control over `Scheduler.run_n_trials` instead of just starting it and needing to wait for it to run all the way to completion before having access to its output. For this purpose, the `Scheduler` implements a generator method `run_trials_and_yield_results`, which yields the output of `Scheduler.report_results` each time there are new completed trials and can be used like so:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1646325050601, - "executionStopTime": 1646325050672, - "hidden_ranges": [], - "originalKey": "77bf9ea5-5ec2-4d65-a723-3c0dfeea144b", - "requestMsgId": "77bf9ea5-5ec2-4d65-a723-3c0dfeea144b" - }, - "outputs": [], - "source": [ - "class ResultReportingScheduler(Scheduler):\n", - " def report_results(self, force_refit: bool = False):\n", - " return True, {\n", - " \"trials so far\": len(self.experiment.trials),\n", - " \"currently producing trials from generation step\": self.generation_strategy._curr.model_name,\n", - " \"running trials\": [t.index for t in self.running_trials],\n", - " }" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1646325050680, - "executionStopTime": 1646325057409, - "originalKey": "c037044e-79d8-4c36-92e9-d9f360a9f5fe", - "requestMsgId": "c037044e-79d8-4c36-92e9-d9f360a9f5fe" - }, - "outputs": [], - "source": [ - "experiment = make_branin_experiment_with_runner_and_metric()\n", - "scheduler = ResultReportingScheduler(\n", - " experiment=experiment,\n", - " generation_strategy=choose_generation_strategy(\n", - " search_space=experiment.search_space,\n", - " max_parallelism_cap=3,\n", - " ),\n", - " options=SchedulerOptions(),\n", - ")\n", - "\n", - "for reported_result in scheduler.run_trials_and_yield_results(max_trials=6):\n", - " print(\"Reported result: \", reported_result)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Clean up to enable running the tutorial repeatedly with\n", - "# the same results. You wouldn't do this if you wanted to\n", - "# keep adding data to the same experiment.\n", - "from ax.storage.sqa_store.delete import delete_experiment\n", - "\n", - "delete_experiment(\"branin_test_experiment\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "custom": { - "cells": [], - "metadata": { - "fileHeader": "", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.15" - } - }, - "nbformat": 4, - "nbformat_minor": 2 - }, - "indentAmount": 2, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/sebo/sebo.ipynb b/tutorials/sebo/sebo.ipynb deleted file mode 100644 index ec8cc8c0bbc..00000000000 --- a/tutorials/sebo/sebo.ipynb +++ /dev/null @@ -1,661 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "customInput": null, - "jupyter": { - "outputs_hidden": true - }, - "originalKey": "d3a0136e-94fa-477c-a839-20e5b7f1cdd2", - "showInput": false - }, - "source": [ - "# Sparsity Exploration Bayesian Optimization (SEBO) Ax API \n", - "\n", - "This tutorial introduces the Sparsity Exploration Bayesian Optimization (SEBO) method and demonstrates how to utilize it using the Ax API. SEBO is designed to enhance Bayesian Optimization (BO) by taking the interpretability and simplicity of configurations into consideration. In essence, SEBO incorporates sparsity, modeled as the $L_0$ norm, as an additional objective in BO. By employing multi-objective optimization techniques such as Expected Hyper-Volume Improvement, SEBO enables the joint optimization of objectives while simultaneously incorporating feature-level sparsity. This allows users to efficiently explore different trade-offs between objectives and sparsity.\n", - "\n", - "\n", - "For a more detailed understanding of the SEBO algorithm, please refer to the following publication:\n", - "\n", - "[1] [S. Liu, Q. Feng, D. Eriksson, B. Letham and E. Bakshy. Sparse Bayesian Optimization. International Conference on Artificial Intelligence and Statistics, 2023.](https://proceedings.mlr.press/v206/liu23b/liu23b.pdf)\n", - "\n", - "By following this tutorial, you will learn how to leverage the SEBO method through the Ax API, empowering you to effectively balance objectives and sparsity in your optimization tasks. Let's get started!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customOutput": null, - "executionStartTime": 1689117385062, - "executionStopTime": 1689117389874, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "cea96143-019a-41c1-a388-545f48992db9", - "requestMsgId": "c2c22a5d-aee0-4a1e-98d9-b360aa1851ff", - "showInput": true - }, - "outputs": [], - "source": [ - "import math\n", - "import os\n", - "import warnings\n", - "\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "\n", - "import numpy as np\n", - "import torch\n", - "from ax import Data, Experiment, ParameterType, RangeParameter, SearchSpace\n", - "from ax.core.objective import Objective\n", - "from ax.core.optimization_config import OptimizationConfig\n", - "from ax.metrics.noisy_function import NoisyFunctionMetric\n", - "from ax.generation_strategy.generation_strategy import GenerationStep, GenerationStrategy\n", - "from ax.modelbridge.registry import Generators\n", - "from ax.models.torch.botorch_modular.sebo import SEBOAcquisition\n", - "from ax.models.torch.botorch_modular.surrogate import Surrogate\n", - "from ax.runners.synthetic import SyntheticRunner\n", - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from botorch.acquisition.multi_objective import qNoisyExpectedHypervolumeImprovement\n", - "from botorch.models import SaasFullyBayesianSingleTaskGP, SingleTaskGP\n", - "from pyre_extensions import assert_is_instance" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "matplotlib.rcParams.update({\"font.size\": 16})\n", - "\n", - "warnings.filterwarnings('ignore')\n", - "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")\n", - "\n", - "torch.manual_seed(12345) # To always get the same Sobol points\n", - "tkwargs = {\n", - " \"dtype\": torch.double,\n", - " \"device\": torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "7f07af01-ad58-4cfb-beca-f624310d278d", - "showInput": false - }, - "source": [ - "# Demo of using Developer API" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "c8a27a2f-1120-4894-9302-48bfde402268", - "showInput": false - }, - "source": [ - "## Problem Setup \n", - "\n", - "In this simple experiment we use the Branin function embedded in a 10-dimensional space. Additional resources:\n", - "- To set up a custom metric for your problem, refer to the dedicated section of the Developer API tutorial: https://ax.dev/tutorials/gpei_hartmann_developer.html#8.-Defining-custom-metrics.\n", - "- To avoid needing to setup up custom metrics by Ax Service API: https://ax.dev/tutorials/gpei_hartmann_service.html." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "executionStartTime": 1689117390036, - "executionStopTime": 1689117390038, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "e91fc838-9f47-44f1-99ac-4477df208566", - "requestMsgId": "1591e6b0-fa9b-4b9f-be72-683dccbe923a", - "showInput": true - }, - "outputs": [], - "source": [ - "aug_dim = 8 \n", - "\n", - "# evaluation function \n", - "def branin_augment(x_vec, augment_dim):\n", - " assert len(x_vec) == augment_dim\n", - " x1, x2 = (\n", - " 15 * x_vec[0] - 5,\n", - " 15 * x_vec[1],\n", - " ) # Only dimensions 0 and augment_dim-1 affect the value of the function\n", - " t1 = x2 - 5.1 / (4 * math.pi**2) * x1**2 + 5 / math.pi * x1 - 6\n", - " t2 = 10 * (1 - 1 / (8 * math.pi)) * np.cos(x1)\n", - " return t1**2 + t2 + 10" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689117390518, - "executionStopTime": 1689117390540, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "850830c6-509f-4087-bce8-da0be4fd48ef", - "requestMsgId": "56726053-205d-4d7e-b1b5-1a76324188ee", - "showInput": true - }, - "outputs": [], - "source": [ - "class AugBraninMetric(NoisyFunctionMetric):\n", - " def f(self, x: np.ndarray) -> float:\n", - " return assert_is_instance(branin_augment(x_vec=x, augment_dim=aug_dim), float)\n", - "\n", - "\n", - "# Create search space in Ax \n", - "search_space = SearchSpace(\n", - " parameters=[\n", - " RangeParameter(\n", - " name=f\"x{i}\",\n", - " parameter_type=ParameterType.FLOAT, \n", - " lower=0.0, upper=1.0\n", - " )\n", - " for i in range(aug_dim)\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "executionStartTime": 1689117391899, - "executionStopTime": 1689117391915, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "d039b709-67c6-475a-96ce-290f869e0f88", - "requestMsgId": "3e23ed64-7d10-430b-b790-91a0c7cf72fe", - "showInput": true - }, - "outputs": [], - "source": [ - "# Create optimization goals \n", - "optimization_config = OptimizationConfig(\n", - " objective=Objective(\n", - " metric=AugBraninMetric(\n", - " name=\"objective\",\n", - " param_names=[f\"x{i}\" for i in range(aug_dim)],\n", - " noise_sd=None, # Set noise_sd=None if you want to learn the noise, otherwise it defaults to 1e-6\n", - " ),\n", - " minimize=True,\n", - " )\n", - ")\n", - "\n", - "# Experiment\n", - "experiment = Experiment(\n", - " name=\"sebo_experiment\",\n", - " search_space=search_space,\n", - " optimization_config=optimization_config,\n", - " runner=SyntheticRunner(),\n", - ")\n", - "\n", - "# target sparse point to regularize towards to. Here we set target sparse value being zero for all the parameters. \n", - "target_point = torch.tensor([0 for _ in range(aug_dim)], **tkwargs)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "e57edb00-eafc-4d07-bdb9-e8cf073b4caa", - "showInput": false - }, - "source": [ - "## Run optimization loop" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689117395051, - "executionStopTime": 1689117395069, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "c4848148-bff5-44a7-9ad5-41e78ccb413c", - "requestMsgId": "8aa87d22-bf89-471f-be9f-7c31f7b8bd62", - "showInput": true - }, - "outputs": [], - "source": [ - "N_INIT = 10\n", - "\n", - "if SMOKE_TEST:\n", - " N_BATCHES = 1\n", - " BATCH_SIZE = 1\n", - " SURROGATE_CLASS = None # Auto-pick SingleTaskGP\n", - "else:\n", - " N_BATCHES = 4\n", - " BATCH_SIZE = 5\n", - " SURROGATE_CLASS = SaasFullyBayesianSingleTaskGP\n", - "\n", - "print(f\"Doing {N_INIT + N_BATCHES * BATCH_SIZE} evaluations\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689117396326, - "executionStopTime": 1689117396376, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "b260d85f-2797-44e3-840a-86587534b589", - "requestMsgId": "2cc516e3-b16e-40ca-805f-dcd792c92fa6", - "showInput": true - }, - "outputs": [], - "source": [ - "# Initial Sobol points\n", - "sobol = Generators.SOBOL(search_space=experiment.search_space)\n", - "for _ in range(N_INIT):\n", - " experiment.new_trial(sobol.gen(1)).run()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689117396900, - "executionStopTime": 1689124188959, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "7c198035-add2-4717-be27-4fb67c4d1782", - "requestMsgId": "d844fa20-0adf-4ba3-ace5-7253ba678db2", - "showInput": true - }, - "outputs": [], - "source": [ - "data = experiment.fetch_data()\n", - "\n", - "for i in range(N_BATCHES):\n", - "\n", - " model = Generators.BOTORCH_MODULAR(\n", - " experiment=experiment, \n", - " data=data,\n", - " surrogate=Surrogate(botorch_model_class=SURROGATE_CLASS), # can use SAASGP (i.e. SaasFullyBayesianSingleTaskGP) for high-dim cases\n", - " search_space=experiment.search_space,\n", - " botorch_acqf_class=qNoisyExpectedHypervolumeImprovement,\n", - " acquisition_class=SEBOAcquisition,\n", - " acquisition_options={\n", - " \"penalty\": \"L0_norm\", # it can be L0_norm or L1_norm. \n", - " \"target_point\": target_point, \n", - " \"sparsity_threshold\": aug_dim,\n", - " },\n", - " torch_device=tkwargs['device'],\n", - " )\n", - "\n", - " generator_run = model.gen(BATCH_SIZE)\n", - " trial = experiment.new_batch_trial(generator_run=generator_run)\n", - " trial.run()\n", - "\n", - " new_data = trial.fetch_data(metrics=list(experiment.metrics.values()))\n", - " data = Data.from_multiple_data([data, new_data])\n", - " print(f\"Iteration: {i}, Best so far: {data.df['mean'].min():.3f}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "7998635d-6750-4825-b93d-c7b61f74c3c5", - "showInput": false - }, - "source": [ - "## Plot sparisty vs objective \n", - "\n", - "Visualize the objective and sparsity trade-offs using SEBO. Each point represent designs along the Pareto frontier found by SEBO. The x-axis corresponds to the number of active parameters used, i.e.\n", - "non-sparse parameters, and the y-axis corresponds the best identified objective values. Based on this, decision-makers balance both simplicity/interpretability of generated policies and optimization performance when deciding which configuration to use." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689124189044, - "executionStopTime": 1689124189182, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "416ccd12-51a1-4bfe-9e10-436cd88ec6be", - "requestMsgId": "5143ae57-1d0d-4f9d-bc9d-9d151f3e9af0", - "showInput": true - }, - "outputs": [], - "source": [ - "def nnz_exact(x, sparse_point):\n", - " return len(x) - (np.array(x) == np.array(sparse_point)).sum()\n", - "\n", - " \n", - "df = data.df\n", - "df['L0_norm'] = df['arm_name'].apply(lambda d: nnz_exact(list(experiment.arms_by_name[d].parameters.values()), [0 for _ in range(aug_dim)]) )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689124189219, - "executionStopTime": 1689124189321, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "97b96822-7d7f-4a5d-8458-01ff890d2fde", - "requestMsgId": "34abdf8d-6f0c-48a1-8700-8e2c3075a085", - "showInput": true - }, - "outputs": [], - "source": [ - "result_by_sparsity = {l: df[df.L0_norm <= l]['mean'].min() for l in range(1, aug_dim+1)}\n", - "result_by_sparsity" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "customOutput": null, - "executionStartTime": 1689134836494, - "executionStopTime": 1689134837813, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "7193e2b0-e192-439a-b0d0-08a2029f64ca", - "requestMsgId": "f095d820-55e0-4201-8e3a-77f17b2155f1", - "showInput": true - }, - "outputs": [], - "source": [ - "fig, ax = plt.subplots(figsize=(8, 6))\n", - "ax.plot(list(result_by_sparsity.keys()), list(result_by_sparsity.values()), '.b-', label=\"sebo\", markersize=10)\n", - "ax.grid(True)\n", - "ax.set_title(f\"Branin, D={aug_dim}\", fontsize=20)\n", - "ax.set_xlabel(\"Number of active parameters\", fontsize=20)\n", - "ax.set_ylabel(\"Best value found\", fontsize=20)\n", - "# ax.legend(fontsize=18)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "1ba68dc9-d60b-4b39-8e58-ea9bdc06b44c", - "showInput": false - }, - "source": [ - "# Demo of Using GenerationStrategy and Service API \n", - "\n", - "Please check [Service API tutorial](https://ax.dev/tutorials/gpei_hartmann_service.html) for more detailed information. " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "45e5586c-55eb-4908-aa73-bca4ee883b56", - "showInput": false - }, - "source": [ - "## Create `GenerationStrategy`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "executionStartTime": 1689124192972, - "executionStopTime": 1689124192975, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "7c0bfe37-8f1f-4999-8833-42ffb2569c04", - "requestMsgId": "bbd9058a-709e-4262-abe1-720d37e8786f", - "showInput": true - }, - "outputs": [], - "source": [ - "gs = GenerationStrategy(\n", - " name=\"SEBO_L0\",\n", - " steps=[\n", - " GenerationStep( # Initialization step\n", - " model=Generators.SOBOL, \n", - " num_trials=N_INIT,\n", - " ),\n", - " GenerationStep( # BayesOpt step\n", - " model=Generators.BOTORCH_MODULAR,\n", - " # No limit on how many generator runs will be produced\n", - " num_trials=-1,\n", - " model_kwargs={ # Kwargs to pass to `BoTorchModel.__init__`\n", - " \"surrogate\": Surrogate(botorch_model_class=SURROGATE_CLASS),\n", - " \"acquisition_class\": SEBOAcquisition,\n", - " \"botorch_acqf_class\": qNoisyExpectedHypervolumeImprovement,\n", - " \"acquisition_options\": {\n", - " \"penalty\": \"L0_norm\", # it can be L0_norm or L1_norm.\n", - " \"target_point\": target_point, \n", - " \"sparsity_threshold\": aug_dim,\n", - " },\n", - " },\n", - " )\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "e4911bc6-32cb-42a5-908f-57f3f04e58e5", - "showInput": false - }, - "source": [ - "## Initialize client and set up experiment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "executionStartTime": 1689124192979, - "executionStopTime": 1689124192984, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "47938102-0613-4b37-acb2-9f1f5f3fe6b1", - "requestMsgId": "38b4b17c-6aae-43b8-aa58-2df045f522fe", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client = AxClient(generation_strategy=gs)\n", - "\n", - "experiment_parameters = [\n", - " {\n", - " \"name\": f\"x{i}\",\n", - " \"type\": \"range\",\n", - " \"bounds\": [0, 1],\n", - " \"value_type\": \"float\",\n", - " \"log_scale\": False,\n", - " }\n", - " for i in range(aug_dim)\n", - "]\n", - "\n", - "objective_metrics = {\n", - " \"objective\": ObjectiveProperties(minimize=False, threshold=-10),\n", - "}\n", - "\n", - "ax_client.create_experiment(\n", - " name=\"branin_augment_sebo_experiment\",\n", - " parameters=experiment_parameters,\n", - " objectives=objective_metrics,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "6a7942e4-9727-43d9-8d8d-c327d38c2373", - "showInput": false - }, - "source": [ - "## Define evaluation function " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "executionStartTime": 1689124192990, - "executionStopTime": 1689124192992, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "4e2994ff-36ac-4d48-a789-3d0398e1e856", - "requestMsgId": "8f74a775-a8ce-462d-993c-5c9291c748b9", - "showInput": true - }, - "outputs": [], - "source": [ - "def evaluation(parameters):\n", - " # put parameters into 1-D array\n", - " x = [parameters.get(param[\"name\"]) for param in experiment_parameters]\n", - " res = branin_augment(x_vec=x, augment_dim=aug_dim)\n", - " eval_res = {\n", - " # flip the sign to maximize\n", - " \"objective\": (res * -1, 0.0),\n", - " }\n", - " return eval_res" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "4597531b-7ac8-4dd0-94c4-836672e0f4c4", - "showInput": false - }, - "source": [ - "## Run optimization loop\n", - "\n", - "Running only 1 BO trial for demonstration. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "customInput": null, - "executionStartTime": 1689124193044, - "executionStopTime": 1689130398208, - "jupyter": { - "outputs_hidden": false - }, - "originalKey": "bc7accb2-48a2-4c88-a932-7c79ec81075a", - "requestMsgId": "f054e5b1-12eb-459b-a508-6944baf82dfb", - "showInput": true - }, - "outputs": [], - "source": [ - "for _ in range(N_INIT + 1): \n", - " parameters, trial_index = ax_client.get_next_trial()\n", - " res = evaluation(parameters)\n", - " ax_client.complete_trial(trial_index=trial_index, raw_data=res)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "fileHeader": "", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tutorials/submitit/submitit.ipynb b/tutorials/submitit/submitit.ipynb deleted file mode 100644 index d671326c11c..00000000000 --- a/tutorials/submitit/submitit.ipynb +++ /dev/null @@ -1,7624 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Hyperparameter Optimization on Slurm via SubmitIt\n", - "\n", - "This notebook serves as a quickstart guide for using the Ax library with the SubmitIt library in an ask-tell loop. [SubmitIt](https://github.com/facebookincubator/submitit/) is a Python toolbox for submitting jobs to [Slurm](https://slurm.schedmd.com/quickstart.html). \n", - "\n", - "The notebook demonstrates how to use the Ax client in an ask-tell loop where each trial is scheduled to run on a Slurm cluster asynchronously.\n", - "\n", - "To use this script, run it on a slurm node either as an interactive notebook or export it as a Python script and run it as a Slurm job.\n", - "\n", - "## Importing Necessary Libraries\n", - "Let's start by importing the necessary libraries." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import plotly.io as pio\n", - "if 'google.colab' in sys.modules:\n", - " pio.renderers.default = \"colab\"\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from ax.utils.notebook.plotting import render\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "from submitit import AutoExecutor, LocalJob, DebugJob" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Defining the Function to Optimize\n", - "We'll define a simple function to optimize. This function takes two parameters, and returns a single metric." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def evaluate(parameters):\n", - " x = parameters[\"x\"]\n", - " y = parameters[\"y\"]\n", - " return {\"result\": (x - 3)**2 + (y - 4)**2}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note: SubmitIt's [CommandFunction](https://github.com/facebookincubator/submitit/blob/main/docs/examples.md#working-with-commands) allows you to define commands to run on the node and then redirects the standard output.\n", - "\n", - "## Setting up Ax\n", - "We'll use Ax's Service API for this example. We start by initializing an AxClient and creating an experiment." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 17:57:00] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n", - "[INFO 01-11 17:57:00] ax.service.utils.instantiation: Inferred value type of ParameterType.FLOAT for parameter x. If that is not the expected value type, you can explicitly specify 'value_type' ('int', 'float', 'bool' or 'str') in parameter dict.\n", - "[INFO 01-11 17:57:00] ax.service.utils.instantiation: Inferred value type of ParameterType.FLOAT for parameter y. If that is not the expected value type, you can explicitly specify 'value_type' ('int', 'float', 'bool' or 'str') in parameter dict.\n", - "[INFO 01-11 17:57:00] ax.service.utils.instantiation: Created search space: SearchSpace(parameters=[RangeParameter(name='x', parameter_type=FLOAT, range=[-10.0, 10.0]), RangeParameter(name='y', parameter_type=FLOAT, range=[-10.0, 10.0])], parameter_constraints=[ParameterConstraint(1.0*x + 1.0*y <= 2.0)]).\n", - "[INFO 01-11 17:57:00] ax.modelbridge.dispatch_utils: Using Models.BOTORCH_MODULAR since there are more ordered parameters than there are categories for the unordered categorical parameters.\n", - "[INFO 01-11 17:57:00] ax.modelbridge.dispatch_utils: Calculating the number of remaining initialization trials based on num_initialization_trials=None max_initialization_trials=None num_tunable_parameters=2 num_trials=None use_batch_trials=False\n", - "[INFO 01-11 17:57:00] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=5\n", - "[INFO 01-11 17:57:00] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=5\n", - "[INFO 01-11 17:57:00] ax.modelbridge.dispatch_utils: `verbose`, `disable_progbar`, and `jit_compile` are not yet supported when using `choose_generation_strategy` with ModularBoTorchModel, dropping these arguments.\n", - "[INFO 01-11 17:57:00] ax.modelbridge.dispatch_utils: Using Bayesian Optimization generation strategy: GenerationStrategy(name='Sobol+BoTorch', steps=[Sobol for 5 trials, BoTorch for subsequent trials]). Iterations after 5 will take longer to generate due to model-fitting.\n" - ] - } - ], - "source": [ - "ax_client = AxClient()\n", - "ax_client.create_experiment(\n", - " name=\"my_experiment\",\n", - " parameters=[\n", - " {\"name\": \"x\", \"type\": \"range\", \"bounds\": [-10.0, 10.0]},\n", - " {\"name\": \"y\", \"type\": \"range\", \"bounds\": [-10.0, 10.0]},\n", - " ],\n", - " objectives={\"result\": ObjectiveProperties(minimize=True)},\n", - " parameter_constraints=[\"x + y <= 2.0\"], # Optional.\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Other commonly used [parameters types](https://ax.dev/docs/glossary.html#parameter) include `choice` parameters and `fixed` parameters. \n", - "\n", - "Tip 1: you can specify additional information for parameters such as `log_scale`, if a parameter operates at a log-scale and `is_ordered` for choice parameters that have a meaningful ordering.\n", - "\n", - "Tip 2: Ax is an excellent choice for multi-objective optimization problems when there are multiple competing objectives and the goal is to find all Pareto-optimal solutions.\n", - "\n", - "Tip 3: One can define constraints on both the parameters and the outcome.\n", - "\n", - "## Setting up SubmitIt\n", - "We'll use SubmitIt's `AutoExecutor` for this example. We start by initializing an `AutoExecutor`, and setting a few commonly used parameters." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Log folder and cluster. Specify cluster='local' or cluster='debug' to run the jobs locally during development.\n", - "# When we're are ready for deployment, switch to cluster='slurm' \n", - "executor = AutoExecutor(folder=\"/tmp/submitit_runs\", cluster='debug') \n", - "executor.update_parameters(timeout_min=60) # Timeout of the slurm job. Not including slurm scheduling delay.\n", - "executor.update_parameters(cpus_per_task=2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Other commonly used Slurm parameters include `partition`, `ntasks_per_node`, `cpus_per_task`, `cpus_per_gpu`, `gpus_per_node`, `gpus_per_task`, `qos`, `mem`, `mem_per_gpu`, `mem_per_cpu`, `account`.\n", - "\n", - "## Running the Optimization Loop\n", - "Now, we're ready to run the optimization loop. We'll use an ask-tell loop, where we ask Ax for a suggestion, evaluate it using our function, and then tell Ax the result.\n", - "\n", - "The example loop schedules new jobs whenever there is availability. For tasks that take a similar amount of time regardless of the parameters, it may make more sense to wait for the whole batch to finish before scheduling the next (so ax can make better informed parameter choices).\n", - "\n", - "Note that `get_next_trials` may not use all available `num_parallel_jobs` if it doesn't have good parameter candidates to run." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 17:57:00] ax.service.ax_client: Generated new trial 0 with parameters {'x': -1.756784, 'y': -4.021679}.\n", - "[INFO 01-11 17:57:00] ax.service.ax_client: Generated new trial 1 with parameters {'x': -9.300127, 'y': -4.654682}.\n", - "[INFO 01-11 17:57:00] ax.service.ax_client: Generated new trial 2 with parameters {'x': 4.881288, 'y': -7.929573}.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING 01-11 17:57:03] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n", - "[INFO 01-11 17:57:03] ax.service.utils.report_utils: No results present for the specified metrics `[Metric('result')]`. Returning arm parameters and metadata only.\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
trial_indexarm_nametrial_statusgeneration_methodxy
000_0RUNNINGSobol-1.756784-4.021679
111_0RUNNINGSobol-9.300127-4.654682
222_0RUNNINGSobol4.881288-7.929573
\n", - "
" - ], - "text/plain": [ - " trial_index arm_name trial_status generation_method x y\n", - "0 0 0_0 RUNNING Sobol -1.756784 -4.021679\n", - "1 1 1_0 RUNNING Sobol -9.300127 -4.654682\n", - "2 2 2_0 RUNNING Sobol 4.881288 -7.929573" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 17:57:33] ax.service.ax_client: Completed trial 0 with data: {'result': (86.974325, None)}.\n", - "[INFO 01-11 17:57:33] ax.service.ax_client: Completed trial 1 with data: {'result': (226.196643, None)}.\n", - "[INFO 01-11 17:57:33] ax.service.ax_client: Completed trial 2 with data: {'result': (145.853961, None)}.\n", - "[INFO 01-11 17:57:33] ax.service.ax_client: Generated new trial 3 with parameters {'x': 2.752141, 'y': -8.223596}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[INFO 01-11 17:57:33] ax.service.ax_client: Generated new trial 4 with parameters {'x': 9.275037, 'y': -7.347285}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[WARNING 01-11 17:57:35] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
trial_indexarm_nametrial_statusgeneration_methodresultxy
000_0COMPLETEDSobol86.974325-1.756784-4.021679
111_0COMPLETEDSobol226.196643-9.300127-4.654682
222_0COMPLETEDSobol145.8539614.881288-7.929573
333_0RUNNINGSobolNaN2.752141-8.223596
444_0RUNNINGSobolNaN9.275037-7.347285
\n", - "
" - ], - "text/plain": [ - " trial_index arm_name trial_status generation_method result x \\\n", - "0 0 0_0 COMPLETED Sobol 86.974325 -1.756784 \n", - "1 1 1_0 COMPLETED Sobol 226.196643 -9.300127 \n", - "2 2 2_0 COMPLETED Sobol 145.853961 4.881288 \n", - "3 3 3_0 RUNNING Sobol NaN 2.752141 \n", - "4 4 4_0 RUNNING Sobol NaN 9.275037 \n", - "\n", - " y \n", - "0 -4.021679 \n", - "1 -4.654682 \n", - "2 -7.929573 \n", - "3 -8.223596 \n", - "4 -7.347285 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 17:58:05] ax.service.ax_client: Completed trial 3 with data: {'result': (149.477736, None)}.\n", - "[INFO 01-11 17:58:05] ax.service.ax_client: Completed trial 4 with data: {'result': (168.136982, None)}.\n", - "[INFO 01-11 17:58:11] ax.service.ax_client: Generated new trial 5 with parameters {'x': 0.590279, 'y': -1.398661}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[INFO 01-11 17:58:11] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting.\n", - "[INFO 01-11 17:58:17] ax.service.ax_client: Generated new trial 6 with parameters {'x': -2.248477, 'y': 1.686329}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[INFO 01-11 17:58:17] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting.\n", - "[INFO 01-11 17:58:23] ax.service.ax_client: Generated new trial 7 with parameters {'x': 1.439472, 'y': -3.621688}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[WARNING 01-11 17:58:26] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
trial_indexarm_nametrial_statusgeneration_methodresultxy
000_0COMPLETEDSobol86.974325-1.756784-4.021679
111_0COMPLETEDSobol226.196643-9.300127-4.654682
222_0COMPLETEDSobol145.8539614.881288-7.929573
333_0COMPLETEDSobol149.4777362.752141-8.223596
444_0COMPLETEDSobol168.1369829.275037-7.347285
555_0RUNNINGBoTorchNaN0.590279-1.398661
666_0RUNNINGBoTorchNaN-2.2484771.686329
777_0RUNNINGBoTorchNaN1.439472-3.621688
\n", - "
" - ], - "text/plain": [ - " trial_index arm_name trial_status generation_method result x \\\n", - "0 0 0_0 COMPLETED Sobol 86.974325 -1.756784 \n", - "1 1 1_0 COMPLETED Sobol 226.196643 -9.300127 \n", - "2 2 2_0 COMPLETED Sobol 145.853961 4.881288 \n", - "3 3 3_0 COMPLETED Sobol 149.477736 2.752141 \n", - "4 4 4_0 COMPLETED Sobol 168.136982 9.275037 \n", - "5 5 5_0 RUNNING BoTorch NaN 0.590279 \n", - "6 6 6_0 RUNNING BoTorch NaN -2.248477 \n", - "7 7 7_0 RUNNING BoTorch NaN 1.439472 \n", - "\n", - " y \n", - "0 -4.021679 \n", - "1 -4.654682 \n", - "2 -7.929573 \n", - "3 -8.223596 \n", - "4 -7.347285 \n", - "5 -1.398661 \n", - "6 1.686329 \n", - "7 -3.621688 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 17:58:56] ax.service.ax_client: Completed trial 5 with data: {'result': (34.952299, None)}.\n", - "[INFO 01-11 17:58:56] ax.service.ax_client: Completed trial 6 with data: {'result': (32.899584, None)}.\n", - "[INFO 01-11 17:58:56] ax.service.ax_client: Completed trial 7 with data: {'result': (60.525376, None)}.\n", - "[INFO 01-11 17:59:03] ax.service.ax_client: Generated new trial 8 with parameters {'x': 0.308729, 'y': 1.691271}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[INFO 01-11 17:59:03] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting.\n", - "[INFO 01-11 17:59:09] ax.service.ax_client: Generated new trial 9 with parameters {'x': 0.3043, 'y': 1.6957}.\n", - "/private/home/marton/miniconda3/envs/axenv/lib/python3.10/site-packages/ax/core/data.py:284: FutureWarning:\n", - "\n", - "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - "\n", - "[WARNING 01-11 17:59:11] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
trial_indexarm_nametrial_statusgeneration_methodresultxy
000_0COMPLETEDSobol86.974325-1.756784-4.021679
111_0COMPLETEDSobol226.196643-9.300127-4.654682
222_0COMPLETEDSobol145.8539614.881288-7.929573
333_0COMPLETEDSobol149.4777362.752141-8.223596
444_0COMPLETEDSobol168.1369829.275037-7.347285
555_0COMPLETEDBoTorch34.9522990.590279-1.398661
666_0COMPLETEDBoTorch32.899584-2.2484771.686329
777_0COMPLETEDBoTorch60.5253761.439472-3.621688
888_0RUNNINGBoTorchNaN0.3087291.691271
999_0RUNNINGBoTorchNaN0.3043001.695700
\n", - "
" - ], - "text/plain": [ - " trial_index arm_name trial_status generation_method result x \\\n", - "0 0 0_0 COMPLETED Sobol 86.974325 -1.756784 \n", - "1 1 1_0 COMPLETED Sobol 226.196643 -9.300127 \n", - "2 2 2_0 COMPLETED Sobol 145.853961 4.881288 \n", - "3 3 3_0 COMPLETED Sobol 149.477736 2.752141 \n", - "4 4 4_0 COMPLETED Sobol 168.136982 9.275037 \n", - "5 5 5_0 COMPLETED BoTorch 34.952299 0.590279 \n", - "6 6 6_0 COMPLETED BoTorch 32.899584 -2.248477 \n", - "7 7 7_0 COMPLETED BoTorch 60.525376 1.439472 \n", - "8 8 8_0 RUNNING BoTorch NaN 0.308729 \n", - "9 9 9_0 RUNNING BoTorch NaN 0.304300 \n", - "\n", - " y \n", - "0 -4.021679 \n", - "1 -4.654682 \n", - "2 -7.929573 \n", - "3 -8.223596 \n", - "4 -7.347285 \n", - "5 -1.398661 \n", - "6 1.686329 \n", - "7 -3.621688 \n", - "8 1.691271 \n", - "9 1.695700 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 17:59:41] ax.service.ax_client: Completed trial 8 with data: {'result': (12.573169, None)}.\n", - "[INFO 01-11 17:59:41] ax.service.ax_client: Completed trial 9 with data: {'result': (12.576597, None)}.\n", - "[WARNING 01-11 17:59:41] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
trial_indexarm_nametrial_statusgeneration_methodresultxy
000_0COMPLETEDSobol86.974325-1.756784-4.021679
111_0COMPLETEDSobol226.196643-9.300127-4.654682
222_0COMPLETEDSobol145.8539614.881288-7.929573
333_0COMPLETEDSobol149.4777362.752141-8.223596
444_0COMPLETEDSobol168.1369829.275037-7.347285
555_0COMPLETEDBoTorch34.9522990.590279-1.398661
666_0COMPLETEDBoTorch32.899584-2.2484771.686329
777_0COMPLETEDBoTorch60.5253761.439472-3.621688
888_0COMPLETEDBoTorch12.5731690.3087291.691271
999_0COMPLETEDBoTorch12.5765970.3043001.695700
\n", - "
" - ], - "text/plain": [ - " trial_index arm_name trial_status generation_method result x \\\n", - "0 0 0_0 COMPLETED Sobol 86.974325 -1.756784 \n", - "1 1 1_0 COMPLETED Sobol 226.196643 -9.300127 \n", - "2 2 2_0 COMPLETED Sobol 145.853961 4.881288 \n", - "3 3 3_0 COMPLETED Sobol 149.477736 2.752141 \n", - "4 4 4_0 COMPLETED Sobol 168.136982 9.275037 \n", - "5 5 5_0 COMPLETED BoTorch 34.952299 0.590279 \n", - "6 6 6_0 COMPLETED BoTorch 32.899584 -2.248477 \n", - "7 7 7_0 COMPLETED BoTorch 60.525376 1.439472 \n", - "8 8 8_0 COMPLETED BoTorch 12.573169 0.308729 \n", - "9 9 9_0 COMPLETED BoTorch 12.576597 0.304300 \n", - "\n", - " y \n", - "0 -4.021679 \n", - "1 -4.654682 \n", - "2 -7.929573 \n", - "3 -8.223596 \n", - "4 -7.347285 \n", - "5 -1.398661 \n", - "6 1.686329 \n", - "7 -3.621688 \n", - "8 1.691271 \n", - "9 1.695700 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "total_budget = 10\n", - "num_parallel_jobs = 3\n", - "\n", - "jobs = []\n", - "submitted_jobs = 0\n", - "# Run until all the jobs have finished and our budget is used up.\n", - "while submitted_jobs < total_budget or jobs:\n", - " for job, trial_index in jobs[:]:\n", - " # Poll if any jobs completed\n", - " # Local and debug jobs don't run until .result() is called.\n", - " if job.done() or type(job) in [LocalJob, DebugJob]:\n", - " result = job.result()\n", - " ax_client.complete_trial(trial_index=trial_index, raw_data=result)\n", - " jobs.remove((job, trial_index))\n", - " \n", - " # Schedule new jobs if there is availablity\n", - " trial_index_to_param, _ = ax_client.get_next_trials(\n", - " max_trials=min(num_parallel_jobs - len(jobs), total_budget - submitted_jobs))\n", - " for trial_index, parameters in trial_index_to_param.items():\n", - " job = executor.submit(evaluate, parameters)\n", - " submitted_jobs += 1\n", - " jobs.append((job, trial_index))\n", - " time.sleep(1)\n", - " \n", - " # Display the current trials.\n", - " display(exp_to_df(ax_client.experiment))\n", - "\n", - " # Sleep for a bit before checking the jobs again to avoid overloading the cluster. \n", - " # If you have a large number of jobs, consider adding a sleep statement in the job polling loop aswell.\n", - " time.sleep(30)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Finally\n", - "\n", - "We can retrieve the best parameters and render the response surface." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[INFO 01-11 18:00:11] ax.service.ax_client: Retrieving contour plot with parameter 'x' on X-axis and 'y' on Y-axis, for metric 'result'. Remaining parameters are affixed to the middle of their range.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best set of parameters: {'x': -2.2484768683250875, 'y': 1.6863286966529074}\n", - "Mean objective value: {'result': 32.90128530853501}\n" - ] - }, - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "linkText": "Export to plot.ly", - "plotlyServerURL": "https://plot.ly", - "showLink": false - }, - "data": [ - { - "autocolorscale": false, - "autocontour": true, - "colorbar": { - "tickfont": { - "size": 8 - }, - "ticksuffix": "", - "x": 0.45, - "y": 0.5 - }, - "colorscale": [ - [ - 0, - "rgb(247,252,253)" - ], - [ - 0.125, - "rgb(229,245,249)" - ], - [ - 0.25, - "rgb(204,236,230)" - ], - [ - 0.375, - "rgb(153,216,201)" - ], - [ - 0.5, - "rgb(102,194,164)" - ], - [ - 0.625, - "rgb(65,174,118)" - ], - [ - 0.75, - "rgb(35,139,69)" - ], - [ - 0.875, - "rgb(0,109,44)" - ], - [ - 1, - "rgb(0,68,27)" - ] - ], - "contours": { - "coloring": "heatmap" - }, - "hoverinfo": "x+y+z", - "ncontours": 25, - "type": "contour", - "x": [ - -10, - -9.591836734693878, - -9.183673469387756, - -8.775510204081632, - -8.36734693877551, - -7.959183673469388, - -7.551020408163265, - -7.142857142857142, - -6.73469387755102, - -6.326530612244898, - -5.918367346938775, - -5.5102040816326525, - -5.1020408163265305, - -4.6938775510204085, - -4.285714285714286, - -3.8775510204081627, - -3.4693877551020407, - -3.0612244897959187, - -2.6530612244897958, - -2.244897959183673, - -1.8367346938775508, - -1.4285714285714288, - -1.020408163265305, - -0.612244897959183, - -0.204081632653061, - 0.204081632653061, - 0.612244897959183, - 1.0204081632653068, - 1.4285714285714288, - 1.8367346938775508, - 2.2448979591836746, - 2.6530612244897966, - 3.0612244897959187, - 3.4693877551020407, - 3.8775510204081627, - 4.2857142857142865, - 4.6938775510204085, - 5.1020408163265305, - 5.510204081632654, - 5.918367346938776, - 6.326530612244898, - 6.73469387755102, - 7.142857142857142, - 7.551020408163264, - 7.95918367346939, - 8.367346938775512, - 8.775510204081634, - 9.183673469387756, - 9.591836734693878, - 10 - ], - "xaxis": "x", - "y": [ - -10, - -9.591836734693878, - -9.183673469387756, - -8.775510204081632, - -8.36734693877551, - -7.959183673469388, - -7.551020408163265, - -7.142857142857142, - -6.73469387755102, - -6.326530612244898, - -5.918367346938775, - -5.5102040816326525, - -5.1020408163265305, - -4.6938775510204085, - -4.285714285714286, - -3.8775510204081627, - -3.4693877551020407, - -3.0612244897959187, - -2.6530612244897958, - -2.244897959183673, - -1.8367346938775508, - -1.4285714285714288, - -1.020408163265305, - -0.612244897959183, - -0.204081632653061, - 0.204081632653061, - 0.612244897959183, - 1.0204081632653068, - 1.4285714285714288, - 1.8367346938775508, - 2.2448979591836746, - 2.6530612244897966, - 3.0612244897959187, - 3.4693877551020407, - 3.8775510204081627, - 4.2857142857142865, - 4.6938775510204085, - 5.1020408163265305, - 5.510204081632654, - 5.918367346938776, - 6.326530612244898, - 6.73469387755102, - 7.142857142857142, - 7.551020408163264, - 7.95918367346939, - 8.367346938775512, - 8.775510204081634, - 9.183673469387756, - 9.591836734693878, - 10 - ], - "yaxis": "y", - "z": [ - [ - 269.278867722867, - 266.66307665070457, - 263.810649551369, - 260.7369172060047, - 257.46038590601313, - 254.00254368480972, - 250.3875750971642, - 246.64199267863637, - 242.79419705177145, - 238.87398013071822, - 234.9119870333042, - 230.93915241011211, - 226.98612634728758, - 223.0827042094827, - 219.25727409884274, - 215.53629522571217, - 211.94382048878668, - 208.5010768964983, - 205.2261179886575, - 202.13356295539836, - 199.23443752259988, - 196.53613175139225, - 194.04248962667822, - 191.75404468005507, - 189.66841487322736, - 187.78086833459832, - 186.08506857138565, - 184.57400165809605, - 183.24107455830617, - 182.08134486782043, - 181.09278387454816, - 180.27737395619914, - 179.64171774167812, - 179.19678979799056, - 178.95662707725774, - 178.93610800157262, - 179.14828244821274, - 179.60181991162156, - 180.29906451592592, - 181.23498903325353, - 182.39708440335534, - 183.7660082930508, - 185.31673036801942, - 187.01993958153275, - 188.84354796057187, - 190.7541825205459, - 192.71858677906525, - 194.70486274632154, - 196.68348801771958, - 198.62805578430073 - ], - [ - 268.4671169100186, - 265.63763103224755, - 262.5553483185915, - 259.23643651560667, - 255.70057777664874, - 251.97076487825785, - 248.072992657775, - 244.0358550768819, - 239.89006288178973, - 235.6678994193581, - 231.40263290558244, - 227.12790281374578, - 222.87709669215286, - 218.68273224030992, - 214.57585831896952, - 210.58548799407538, - 206.738076769915, - 203.05705974014205, - 199.5624622479086, - 196.27059951479066, - 193.19388130672016, - 190.34073787785542, - 187.71568313539166, - 185.31953030897438, - 183.14977457344673, - 181.20115618015944, - 179.4664165090354, - 177.9372571244225, - 176.60550566924974, - 175.46447486785647, - 174.51045306229514, - 173.7441476836815, - 173.17168625121099, - 172.8045856924115, - 172.65827950507466, - 172.74940154794987, - 173.09251213076737, - 173.69701845178423, - 174.56490727459914, - 175.68966332370485, - 177.05637054600692, - 178.6426757218457, - 180.42022484387547, - 182.3562915836033, - 184.41544295396773, - 186.561160198474, - 188.7573559469493, - 190.96972209905366, - 193.1668291600855, - 195.32090202846837 - ], - [ - 267.40222831723617, - 264.35316612500486, - 261.0346252921401, - 257.46358690746223, - 253.66091031043356, - 249.65111794851623, - 245.4620598426572, - 241.1244713319996, - 236.67144321523938, - 232.13782592743087, - 227.5595893356345, - 222.97315795607193, - 218.41473888068066, - 213.9196573033991, - 209.52171282883253, - 205.25256899876916, - 201.14118869033018, - 197.21332901826352, - 193.49111075870942, - 189.99267867305227, - 186.73197003949628, - 183.71860892261822, - 180.9579431861547, - 178.45124020577745, - 176.196056081873, - 174.18679231634596, - 172.41545361642676, - 170.87262048496774, - 169.54864946735498, - 168.43510891860376, - 167.52643628862782, - 166.82171534821964, - 166.32618480513378, - 166.0515847824408, - 166.01451295857817, - 166.23311810887716, - 166.72319635794344, - 167.4945702404709, - 168.5484718300089, - 169.87647301578534, - 171.46091447194468, - 173.27625798199836, - 175.29080725971545, - 177.4685089233626, - 179.77072709144454, - 182.1579533746559, - 184.59141989080257, - 187.03455511325, - 189.45418138602895, - 191.8213370769897 - ], - [ - 266.0721452130021, - 262.7987872321677, - 259.23889244395826, - 255.41022582696536, - 251.33482000272875, - 247.0387465873374, - 242.55174864715173, - 237.90675268014144, - 233.13928500811798, - 228.2868195638535, - 223.38808259978487, - 218.4823363068246, - 213.60865921687304, - 208.8052377127865, - 204.10868065051204, - 199.55336825240207, - 195.17084697710175, - 190.9892836858411, - 187.03299459876172, - 183.32206664277436, - 179.8720902088096, - 176.69402261042856, - 173.79420057700827, - 171.17451828877464, - 168.83278549768997, - 166.76327898157086, - 164.9575004572296, - 163.40515508960988, - 162.09536627132417, - 161.0181433391678, - 160.1661168166572, - 159.5365331694974, - 159.13329756106265, - 158.96791078272938, - 159.0576131785102, - 159.42142719195473, - 160.07577366041744, - 161.03038081722545, - 162.28524245152911, - 163.82959608292992, - 165.64282660506797, - 167.69623728475094, - 169.95498287178813, - 172.37996115194858, - 174.92963447075564, - 177.56178617468805, - 180.2352065718046, - 182.91126042105003, - 185.5552109361609, - 188.13711193252024 - ], - [ - 264.46512980327105, - 260.96405653775645, - 257.1591930593155, - 253.0690542129778, - 248.71683809365788, - 244.1301806108287, - 239.3407489587876, - 234.38369942015981, - 229.29703245836288, - 224.12087901925884, - 218.89674812009747, - 213.66675967678486, - 208.47288030761246, - 203.35617496357952, - 198.35608432656338, - 193.5097371096664, - 188.8513074790107, - 184.4114303459159, - 180.2166905867192, - 176.28920547001633, - 172.64632176025154, - 169.3004493546735, - 166.2590516625948, - 163.52480979993268, - 161.09597429309576, - 158.96691580431957, - 157.12888633597373, - 155.57100436849493, - 154.28148037990357, - 153.24910169793236, - 152.464996494246, - 151.9246956493843, - 151.63048014637008, - 151.59298226534986, - 151.82908272140097, - 152.35748460208367, - 153.19419851346782, - 154.34815152809108, - 155.8175873915172, - 157.58911004247233, - 159.63919943962821, - 161.936296016616, - 164.44281428815373, - 167.11704958543055, - 169.91500249040328, - 172.79214738620678, - 175.70516217410326, - 178.6135997924481, - 181.4813742667102, - 184.27776573653202 - ], - [ - 262.5699134629136, - 258.83912411812463, - 254.78731603282785, - 250.43371685496606, - 245.80268006872888, - 240.92341787630653, - 235.8295460349776, - 230.558476587296, - 225.15070276291675, - 219.64901876835677, - 214.09770940903235, - 208.54173472309168, - 203.0259260586082, - 197.5942037796147, - 192.28882344870982, - 187.14965676702536, - 182.21351539199603, - 177.51352947908197, - 173.07859764067177, - 168.93292986846345, - 165.0957084115111, - 161.5808922976716, - 158.39718852037248, - 155.54820762239754, - 153.0328156005471, - 150.84569034122478, - 148.97809091701458, - 147.41885188540974, - 146.1556202445354, - 145.17635713662244, - 144.47112757701802, - 144.0341979817753, - 143.86639259156627, - 143.9765973168144, - 144.3797938960864, - 145.0927931973236, - 146.1297702201598, - 147.4978230480531, - 149.19296416938852, - 151.19922042821784, - 153.49057414230813, - 156.0331203037687, - 158.78707841103866, - 161.70868873988485, - 164.75202475962067, - 167.87075349176848, - 171.019874228354, - 174.1574542848739, - 177.2462922222256, - 180.25510319794722 - ], - [ - 260.37591018755256, - 256.4149155503777, - 252.11595955070288, - 247.49894425075706, - 242.58936797644918, - 237.41802927422896, - 232.02050977336512, - 226.4364879761885, - 220.70894407683204, - 214.883309150231, - 209.00659804924027, - 203.12655084349075, - 197.29079623408342, - 191.54604309660158, - 185.93730289391436, - 180.50714560282142, - 175.29499452726623, - 170.33647047441866, - 165.66280255569205, - 161.30033005486476, - 157.27012533909027, - 153.58776930172502, - 150.2633067975852, - 147.30140073815235, - 144.70169348644177, - 142.45937773443598, - 140.56597947045597, - 139.01036266464206, - 137.77997504399806, - 136.86236093680375, - 136.24696256025257, - 135.92718556042456, - 135.9024453465737, - 136.17908153256016, - 136.76874883521808, - 137.68479274352055, - 138.93799022602101, - 140.53222655616986, - 142.46085870363106, - 144.70579442172055, - 147.2391060014448, - 150.02513581100587, - 153.02249830654478, - 156.18596564726852, - 159.46826753311277, - 162.8218381613978, - 166.20054348375467, - 169.56142203840432, - 172.8664553598877, - 176.0839793873941 - ], - [ - 257.8735160408623, - 253.68339907849492, - 249.13896724261355, - 244.2607590757014, - 239.07540852215303, - 233.61530919700607, - 227.918016832141, - 222.02546708059893, - 215.9830904768288, - 209.83888944602035, - 203.64251897853998, - 197.44439271939913, - 191.2948228204516, - 185.2431944296328, - 179.3371727500303, - 173.62194113887196, - 168.13947225228713, - 162.92784064204375, - 158.0205941833123, - 153.44621207786176, - 149.22768619496046, - 145.3822660546293, - 141.9214022265598, - 138.85090849924413, - 136.1713456873977, - 133.87861836619555, - 131.96477644583962, - 130.41902545842106, - 129.22896451740067, - 128.3820754972591, - 127.86745877033714, - 127.67769850490876, - 127.81044690615498, - 128.26890397198548, - 129.06047408725655, - 130.19379729657496, - 131.6749625423484, - 133.50365173714252, - 135.67016609399508, - 138.15448128707132, - 140.92725789264435, - 143.9516641572953, - 147.18530476461626, - 150.58208213600008, - 154.0939821768367, - 157.67280955342886, - 161.2719040982731, - 164.8478713624421, - 168.36234325731456, - 171.78338009882896 - ], - [ - 255.05452203554825, - 250.63796037957007, - 245.85166544212706, - 240.71677647111053, - 235.26105654993677, - 229.51850089795403, - 223.5286335535684, - 217.33560974582053, - 210.98723395902698, - 204.53396812558032, - 198.02796895826205, - 191.52216922880552, - 185.06940430258737, - 178.72157892907563, - 172.52886739020428, - 166.5389412461147, - 160.79622283530082, - 155.3411698436952, - 150.2096072317218, - 145.432137179988, - 141.03367239366207, - 137.03314631396958, - 133.44344744372222, - 130.2716017092093, - 127.51919589832843, - 125.18301391813877, - 123.25585797705779, - 121.72754629941372, - 120.58610151201817, - 119.81914513104923, - 119.41546348202952, - 119.36657570592583, - 119.66791396500521, - 120.31905508922785, - 121.32259576143437, - 122.6817587187477, - 124.39725203509876, - 126.46409226266354, - 128.869215042988, - 131.5905527969497, - 134.5975808670178, - 137.85273666040104, - 141.31315232941927, - 144.93243497304263, - 148.6624168988111, - 152.4548723679014, - 156.26322006252178, - 160.04422636582595, - 163.75963861961492, - 167.3773427875005 - ], - [ - 251.91267273345096, - 247.2739182985481, - 242.25133605310037, - 236.8666338427516, - 231.14870058071648, - 225.13313324077888, - 218.86139379481602, - 212.379777786522, - 205.73833620435585, - 198.98982597452869, - 192.1887173509799, - 185.39026222401543, - 178.649616875861, - 172.02100892757136, - 165.55693765316911, - 159.30739825960455, - 153.31912427950544, - 147.6348490381908, - 142.29259909544697, - 137.32505110040452, - 132.75900669493674, - 128.61505824418876, - 124.90751422905551, - 121.64461643840697, - 118.8290259097992, - 116.45851533244813, - 114.52680600659019, - 113.02452069329901, - 111.94026143540218, - 111.26182907450328, - 110.97754775140626, - 111.07753248506718, - 111.5545823350291, - 112.40430906045196, - 113.62424153218322, - 115.21195748517471, - 117.16261390993692, - 119.46644943465242, - 122.10688438204686, - 125.05967056253792, - 128.29314288783726, - 131.7692694403281, - 135.44512157304374, - 139.2745061566951, - 143.20963765377087, - 147.2028083378573, - 151.2080447005211, - 155.1827185226432, - 159.08898018993028, - 162.89471665706458 - ], - [ - 248.4444076675744, - 243.58922030754377, - 238.33786545923965, - 232.71259245252753, - 226.74341395600496, - 220.467510965533, - 213.9282083129217, - 207.17380179800728, - 200.25639938745633, - 193.23083380301432, - 186.15365547548285, - 179.08219802941184, - 172.07370358212808, - 165.18449425911945, - 158.46917682481273, - 151.97986858364175, - 145.76543512362693, - 139.8707355231243, - 134.3358813414558, - 129.1955366305864, - 124.47832012270449, - 120.20640810659388, - 116.39544485180578, - 113.05481220452076, - 110.18820983363527, - 107.79442651783141, - 105.86818767906253, - 104.40102395803163, - 103.38217205853697, - 102.79954962040125, - 102.64080612249055, - 102.89433620334712, - 103.55000697045561, - 104.59930049740363, - 106.03467641039059, - 107.84818532149728, - 110.02960558042449, - 112.56453716227885, - 115.43291319970304, - 118.60825720805637, - 122.05776711006116, - 125.74308079671997, - 129.62148507773028, - 133.6473604737993, - 137.77372903580022, - 141.95383238909875, - 146.1426906847904, - 150.29857172590272, - 154.38423381521002, - 158.36774826095154 - ], - [ - 244.6498269758033, - 239.58536168452957, - 234.11461566862275, - 228.26035937507686, - 222.05372021963024, - 215.53340020497956, - 208.74443419083812, - 201.73689750795188, - 194.56469995682818, - 187.2844834728462, - 179.95461255053272, - 172.63424175842357, - 165.38244473827066, - 158.25739003784156, - 151.31555010754627, - 144.61093066175383, - 138.19430865642872, - 132.11246945600527, - 126.40744039958629, - 121.11573616305036, - 116.26767328884864, - 111.88688007577262, - 107.99017448675124, - 104.58790784886325, - 101.68468492588359, - 99.28024553506081, - 97.3703201700808, - 95.94737710489488, - 95.0012843206093, - 94.51998112273115, - 94.49024513448961, - 94.89851725596623, - 95.73157830409062, - 96.97679975495919, - 98.62178381603391, - 100.6534033886514, - 103.05644745674817, - 105.81219946521418, - 108.89729167866511, - 112.28308685454417, - 115.9356802427201, - 119.81646344599133, - 123.88310711066268, - 128.09080900522684, - 132.39368442084248, - 136.7462094810879, - 141.10464203785872, - 145.42833173106393, - 149.6808011266451, - 153.83047112528044 - ], - [ - 240.53392397590596, - 235.26857725716428, - 229.58956916939144, - 223.52018335983968, - 217.09261785353473, - 210.346929916864, - 203.32959762613322, - 196.09217125660527, - 188.69005577583326, - 181.18140717278024, - 173.62612334134607, - 166.08491188214757, - 158.61841895347413, - 151.2864048314369, - 144.1469530067459, - 137.2557003544451, - 130.66507613542342, - 124.42353761073602, - 118.57479138417563, - 113.1569982711073, - 108.20199554140622, - 103.73467315269227, - 99.77278162325032, - 96.32737801715996, - 93.40374792654087, - 91.00243079985665, - 89.12008368291558, - 87.75008386715103, - 86.88290433206761, - 86.50642677850446, - 86.60641690580836, - 87.16723594720908, - 88.17257804527296, - 89.60589984883347, - 91.45033306567817, - 93.68808175788104, - 96.29947380151359, - 99.26192353306838, - 102.54906842129914, - 106.13027828127001, - 109.9706301127737, - 114.03133665780281, - 118.27054625956161, - 122.64440491045147, - 127.10827514975426, - 131.61801967058227, - 136.13126419895355, - 140.60854952676434, - 145.01427528144987, - 149.31734823115275 - ], - [ - 236.10810579801068, - 230.6513579925379, - 224.77680351973834, - 218.50827290424127, - 211.87886151317443, - 204.92964521547242, - 197.70817351159943, - 190.26711632822156, - 182.66304562678297, - 174.95532966005754, - 167.2051200790815, - 159.47441430320163, - 151.8251775918572, - 144.31851103609978, - 137.01385311426395, - 129.9682033725724, - 123.23535699224253, - 116.86513827001346, - 110.90261932647904, - 105.3873090276939, - 100.35230791669596, - 95.82351974259124, - 91.81932228448781, - 88.3511545361401, - 85.42470766838065, - 83.04110097414508, - 81.19775342981482, - 79.88885356455339, - 79.10543735037524, - 78.83528614992728, - 79.06308576702678, - 79.7711106474503, - 80.94013206902603, - 82.55006055422932, - 84.58009118432595, - 87.00837872556464, - 89.81140213601427, - 92.96322859941432, - 96.434882649434, - 100.19397872340403, - 104.20470300967469, - 108.42815597764165, - 112.82301031873443, - 117.34640806131755, - 121.9550107903061, - 126.60611755122576, - 131.25876691584833, - 135.87473994604443, - 140.41938426274186, - 144.86219532414538 - ], - [ - 231.39182131670105, - 225.7542774209353, - 219.69831993493062, - 213.24843757988043, - 206.4382566171725, - 199.30942992033505, - 191.9101731719532, - 184.29391063570569, - 176.5180516340492, - 168.64287744265596, - 160.73051879015526, - 152.8440063292138, - 145.04637863814034, - 137.39983435022086, - 129.9649167676577, - 122.79972062082645, - 115.95911123054958, - 109.49394589064197, - 103.45028540020338, - 97.86857986309467, - 92.78280699904174, - 88.2195608951466, - 84.19751681269764, - 80.72820011393017, - 77.81744902155923, - 75.46669042198344, - 73.67382922580593, - 72.43364801942485, - 71.73765018558365, - 71.57350491992972, - 71.92482770829817, - 72.77194464950401, - 74.09305973866627, - 75.86507557305345, - 78.06389880761938, - 80.66431877594044, - 83.63961342916883, - 86.96105391164917, - 90.59746850268318, - 94.51499180375603, - 98.67707439135637, - 103.04477457433325, - 107.5773092397034, - 112.23281109956775, - 116.96922427070743, - 121.74526429426177, - 126.52136770555175, - 131.26055840672797, - 135.92916541047174, - 140.49734253821708 - ], - [ - 226.4133728950045, - 220.60713360766707, - 214.38526914659712, - 207.77297278667714, - 200.80418205243615, - 193.52075521122734, - 185.97118713684927, - 178.20929479585868, - 170.29299477944798, - 162.28318085023977, - 154.24268737185918, - 146.2353221324695, - 138.32495338154453, - 130.57463791105704, - 123.04577903769743, - 115.79730505930893, - 108.88485985007814, - 102.35999733672355, - 96.26937019012274, - 90.65389962410165, - 85.5479070988798, - 80.97819335528752, - 76.96346787603723, - 73.51519247776604, - 70.6391358305788, - 68.33671247701028, - 66.60592101710805, - 65.4417497406991, - 64.83592182593526, - 64.77596705296713, - 65.24454717572107, - 66.22040299546961, - 67.67974341408174, - 69.59713423059537, - 71.94590028129463, - 74.69816146212494, - 77.82463513814108, - 81.29434050104392, - 85.07432996440343, - 89.1295474939414, - 93.42287797831783, - 97.91541274785165, - 102.56692149900914, - 107.33649474362348, - 112.18330438838018, - 117.06742153773287, - 121.95062797535535, - 126.79716004137795, - 131.57433131480036, - 136.25299450793452 - ], - [ - 221.20890430430472, - 215.24765034960467, - 208.87654880077133, - 202.12148621434602, - 195.01664479342628, - 187.6038851986653, - 179.93168337711487, - 172.0539243629323, - 164.0287141479721, - 155.91725934984825, - 147.7828184860035, - 139.6897146720132, - 131.70239667761533, - 123.88453596164189, - 116.29814910696398, - 109.00273705141745, - 102.05443410667088, - 95.50516047201923, - 89.4017713284915, - 83.78519383800977, - 78.68954730230088, - 74.14131853915103, - 70.15902860813688, - 66.75397034064585, - 63.931629933646796, - 61.69306775223847, - 60.03593216293805, - 58.95491578401257, - 58.44148722581295, - 58.48284493629462, - 59.061045035024655, - 60.153897759403854, - 61.73632937530849, - 63.7812817287756, - 66.2601963270298, - 69.14318885679582, - 72.39902125200109, - 75.99497767596506, - 79.89674226663692, - 84.06835838809661, - 88.4723235019778, - 93.0698450307041, - 97.82125547689469, - 102.68656302250314, - 107.626098314218, - 112.601209020446, - 117.5749502669271, - 122.51272068508442, - 127.3828004195688, - 132.15675882014855 - ], - [ - 215.820322546481, - 209.71910228126933, - 203.216366297047, - 196.3386627063994, - 189.12039142694738, - 181.60332296212545, - 173.83572639991627, - 165.87130238809016, - 157.7680662551098, - 149.58725294793706, - 141.39226726465884, - 133.24767999843792, - 125.21826193851643, - 117.36804557495773, - 109.75940512047312, - 102.45214739348447, - 95.5026083209161, - 88.9627518657844, - 82.87927053199626, - 77.29269356881767, - 72.23653993607877, - 67.73666058712209, - 63.81109745213158, - 60.47072727798401, - 57.72049145659935, - 55.560743204673756, - 53.9883368319844, - 52.99717366296989, - 52.57798234189485, - 52.71741299253364, - 53.39734412297344, - 54.595358614163914, - 56.285807159903214, - 58.44069034416136, - 61.03022249648342, - 64.02313450837968, - 67.38679672497317, - 71.08724495062222, - 75.08918691505048, - 79.35605364713876, - 83.85014157281914, - 88.53286966766633, - 93.3651548732276, - 98.30789082795835, - 103.32250127842254, - 108.37153082832147, - 113.4192318677653, - 118.43210733526344, - 123.37937407383627, - 128.2333203734766 - ], - [ - 210.29323957972792, - 204.06820857189268, - 197.4521375080763, - 190.47219022512348, - 183.16295925253098, - 175.56607634721735, - 167.7294899807303, - 159.70653460418214, - 151.55490495260037, - 143.33560815618506, - 135.11192871289379, - 126.94841714847608, - 118.90990074277377, - 111.060509764316, - 103.46271202354284, - 96.17635038009504, - 89.25768121799915, - 82.75841682348296, - 76.72478290307379, - 71.19662068243967, - 66.20660571893066, - 61.779733538924916, - 57.93328507630613, - 54.677399992469496, - 52.01614640224872, - 49.94879767675732, - 48.4709934416305, - 47.57544911737966, - 47.25192554134951, - 47.486558075490095, - 48.26125218721663, - 49.553791976345366, - 51.338515841510635, - 53.5870805381862, - 56.26906717115891, - 59.352391455696, - 62.80355713013073, - 66.58781182521392, - 70.66926581433714, - 75.01102606958854, - 79.57538461388148, - 84.32408396403491, - 89.21866596252224, - 94.2208955262504, - 99.29323917201785, - 104.39937031892501, - 109.50466952739158, - 114.57668790942782, - 119.58554559927512, - 124.50424379160702 - ], - [ - 204.67521841899423, - 198.34338741990288, - 191.63275706399412, - 184.57104779536104, - 177.1930094532079, - 169.5400961050471, - 161.65985772177422, - 153.60512897786796, - 145.43309837929786, - 137.20432100724366, - 128.98171268532482, - 120.82954270151684, - 112.81242908811669, - 104.99433392960488, - 97.43755454936695, - 90.20170849182367, - 83.34271545613124, - 76.91178815283857, - 70.954458326423, - 65.50968786447015, - 60.60915162564358, - 56.2768197758242, - 52.52897535649027, - 49.37473103626831, - 46.81697647526188, - 44.853583662831085, - 43.47865264449803, - 42.683488752190655, - 42.456868471761965, - 42.78451122437741, - 43.64842329690319, - 45.02674450007564, - 46.89411914171026, - 49.22229578823179, - 51.9807134819629, - 55.13697454703224, - 58.65719559075504, - 62.50626779190525, - 66.64806927446273, - 71.0456706366259, - 75.66156616893863, - 80.45795148047365, - 85.39705554333187, - 90.44152333379019, - 95.55483553289596, - 100.70174489420359, - 105.848705218362, - 110.96426839284773, - 116.01942738762259, - 120.98788791038524 - ], - [ - 199.01432276540174, - 192.59332562331568, - 185.80718972749193, - 178.6841202791106, - 171.258975155619, - 163.5729862856108, - 155.67323870482375, - 147.61195951479527, - 139.44567623314995, - 131.2342953431248, - 123.04013597583125, - 114.9269380031432, - 106.95885214891463, - 99.19941305089003, - 91.7104943651406, - 84.55124773271851, - 77.77703479856274, - 71.43837396785776, - 65.57994186200457, - 60.239693355437694, - 55.448189866717414, - 51.22824113923991, - 47.59495061887043, - 44.556196341587224, - 42.11349815384929, - 40.26316484709899, - 38.997607866727435, - 38.30664180363429, - 38.178110091156285, - 38.59734879772829, - 39.546411240135626, - 41.00376763407547, - 42.94448067504264, - 45.34065083881755, - 48.16193719378644, - 51.376040373827365, - 54.94910802695032, - 58.84606709403756, - 63.03090696643259, - 67.46694236083411, - 72.11708128556921, - 76.94411580611444, - 81.91104402454047, - 86.98142251581359, - 92.119740605278, - 97.29180207541894, - 102.4650965369106, - 107.6091418622027, - 112.69578057127545, - 117.699416462479 - ], - [ - 193.35793297702853, - 186.86581792694096, - 180.02333435180034, - 172.85908898556644, - 165.40798443654953, - 157.71097504535325, - 149.81461343769283, - 141.77042196597182, - 133.6341309743811, - 125.46482284042317, - 117.3240113508873, - 109.27467491078542, - 101.38025271871096, - 93.70360716667732, - 86.30595421245147, - 79.2457669548574, - 72.57766680208036, - 66.35133196405508, - 60.61047391682528, - 55.391955647843126, - 50.72514323292245, - 46.63158309327197, - 43.125071199142084, - 40.21212924317658, - 37.8928457976658, - 36.162006201641816, - 35.01044270941402, - 34.42654819573042, - 34.397218654853035, - 34.907267338100155, - 35.93861669239004, - 37.46994144351244, - 39.47671393915424, - 41.93151406242393, - 44.80446134166965, - 48.063666739322656, - 51.67565104106523, - 55.60571476273575, - 59.81826661472419, - 64.27712694929022, - 68.94582364592715, - 73.7878940963244, - 78.76720084280727, - 83.84826174011974, - 88.99658943347231, - 94.17903023665211, - 99.36408957211017, - 104.52223013636683, - 109.62612977675352, - 114.6508884106056 - ], - [ - 187.75179005468297, - 181.2068343493209, - 174.32711541439699, - 167.14154921932274, - 159.68500783691536, - 151.99810121733844, - 144.1267764338526, - 136.12175676892093, - 128.03784991181826, - 119.9331542836426, - 111.868187178634, - 103.90495091999388, - 96.10594615903834, - 88.53313668006528, - 81.2468689872726, - 74.30475379665566, - 67.7605266382669, - 61.66292202570493, - 56.05461920764543, - 50.97134239225709, - 46.441213975626894, - 42.484452758093425, - 39.11347439780988, - 36.33339824431492, - 34.14291625244863, - 32.535457735265624, - 31.50059169642536, - 31.025538438618952, - 31.096084238432567, - 31.69625233722867, - 32.807609877663964, - 34.40887437441084, - 36.47585730415041, - 38.98165572457246, - 41.89698843584003, - 45.19059115061037, - 48.82961569658795, - 52.780007007626025, - 57.00685200133435, - 61.47470573787235, - 66.14790441126263, - 70.99087412635009, - 75.9684411256444, - 81.04614472774215, - 86.19054985212546, - 91.36955238953755, - 96.55266827957449, - 101.71129616733938, - 106.81894390582892, - 111.85141075627665 - ], - [ - 182.23923289419488, - 175.65977834256552, - 168.76176217708925, - 161.5743112715527, - 154.13218331939112, - 146.47556820915656, - 138.649728802605, - 130.704495599854, - 122.69363554034197, - 114.67411615018922, - 106.70528339468282, - 98.84796667254376, - 91.16351923978995, - 83.71279859758715, - 76.55509046476371, - 69.74698341105298, - 63.341210909979935, - 57.38549545835552, - 51.921456096020215, - 46.983671696955014, - 42.59901411983415, - 38.78635762823377, - 35.5567242427843, - 32.913856870366004, - 30.855158522284185, - 29.372915033633305, - 28.45569975838069, - 28.089726686926383, - 28.259652549800336, - 28.94853834956048, - 30.137395062448064, - 31.804813917169284, - 33.926838570649736, - 36.47705649715479, - 39.426841346945864, - 42.74567876492007, - 46.40152486454045, - 50.361166427297924, - 54.590568510989364, - 59.05520623935746, - 63.72038330182986, - 68.5515413418478, - 73.51456338593057, - 78.5760720312227, - 83.70372025911527, - 88.86647018453864, - 94.03485323493871, - 99.18120440731911, - 104.27986341775795, - 109.30733662897167 - ], - [ - 176.86059884892532, - 170.26490421167557, - 163.3672418969529, - 156.19684873020466, - 148.78827961695538, - 141.18122374669403, - 133.42017837429285, - 125.55398935210738, - 117.63527228280388, - 109.71972961095719, - 101.86537761966213, - 94.13169417672052, - 86.57869442816718, - 79.26593869487218, - 72.25147579821109, - 65.59072733460906, - 59.33532609960081, - 53.53193815147486, - 48.221126847954, - 43.43635882778342, - 39.20329153470837, - 35.539482877751965, - 32.454596828477236, - 29.95107370877676, - 28.025159498581118, - 26.66816608586683, - 25.86781161033319, - 25.609407284784098, - 25.876589090778623, - 26.651466494783506, - 27.914399609797897, - 29.6437237048751, - 31.815602281998636, - 34.404047883640914, - 37.3810827289723, - 40.716993189773746, - 44.38063593147311, - 48.339765021840634, - 52.56136139038334, - 57.01195554265688, - 61.657940502505255, - 66.46587487817311, - 71.40277652574025, - 76.43640640678646, - 81.53554069571962, - 86.67022759871483, - 91.81202412265701, - 96.93420742163391, - 102.01195543755684, - 107.0224923014672 - ], - [ - 171.65276289100396, - 165.0588683313125, - 158.17982069208574, - 151.04486653348513, - 143.6882690256989, - 136.14913533263766, - 128.4711168134444, - 120.70198761578416, - 112.89311104220097, - 105.09880466489949, - 97.37561473195481, - 89.78150855051427, - 82.37499105596683, - 75.21414952470208, - 68.35562919649873, - 61.85354340818763, - 55.75832630621777, - 50.11554779489292, - 44.96473665657841, - 40.338309870624286, - 36.2607799432498, - 32.7484455453415, - 29.809672870393612, - 27.445689751012665, - 25.65170701020159, - 24.418186492127873, - 23.732093179083236, - 23.577950977885124, - 23.938529253462818, - 24.795103241363236, - 26.12740490652095, - 27.913461926653284, - 30.12947738400662, - 32.749817279455, - 35.747111429565734, - 39.092444730297416, - 42.755608773026566, - 46.70538734664741, - 50.90985652506433, - 55.33668712721984, - 59.953442736486025, - 64.72786979693103, - 69.62817782263178, - 74.62330797844544, - 79.68318777152743, - 84.77896881524822, - 89.88324395458311, - 94.9702397076645, - 100.01598009323467, - 104.99841848598221 - ], - [ - 166.64879587932413, - 160.0743948264098, - 153.23173295898826, - 146.14996998623806, - 138.862991350645, - 131.4092440123297, - 123.83145797099148, - 116.17625665151637, - 108.49366237691653, - 100.83650473490562, - 93.25973977506533, - 85.81968700146027, - 78.57318956181078, - 71.57670142802777, - 64.88530422150093, - 58.55165613865294, - 52.624876876768795, - 47.149377532092885, - 42.16366033648367, - 37.699162514362015, - 33.779337551146824, - 30.419292228837406, - 27.626165954630167, - 25.40007872412417, - 23.73533556002218, - 22.621675198593962, - 22.0454299646438, - 21.99047928118459, - 22.438901454033243, - 23.3713001413916, - 24.766876438816908, - 26.603371862507373, - 28.856997601642007, - 31.502419857705362, - 34.512826013230224, - 37.86006751852483, - 41.51486240858762, - 45.44703774116431, - 49.62579480965354, - 54.01998426407322, - 58.598382354020984, - 63.329962563786914, - 68.18415877951514, - 73.13111699695418, - 78.14193276936942, - 83.1888714453973, - 88.24556803972989, - 93.28720351758653, - 98.29065447158315, - 103.23461366183105 - ], - [ - 161.87772719120684, - 155.34004195796118, - 148.55094688388488, - 141.5394239931193, - 134.33890051581187, - 126.9870909873924, - 119.52573614815537, - 112.0002400994499, - 104.45920970856235, - 96.95390174804771, - 89.5375837128804, - 82.2648138817027, - 75.19064529890363, - 68.36975730727391, - 61.855517365581335, - 55.69897535086478, - 49.947792480330115, - 44.64510762131809, - 39.82834709681286, - 35.528006341903364, - 31.76656202604761, - 28.557998595608254, - 25.90832664720979, - 23.81671071102963, - 22.276722371247132, - 21.27753929350864, - 20.80501458680881, - 20.842549055369233, - 21.371714636028614, - 22.372620934340063, - 23.82407140797585, - 25.70359152149183, - 27.987413280513408, - 30.650477786530814, - 33.66648789805238, - 37.00801923385028, - 40.64668340602044, - 44.55333115619224, - 48.698282087638006, - 53.05156933370318, - 57.58318999684896, - 62.263354534080726, - 67.06273002901665, - 71.95267341227037, - 76.90545129288971, - 81.89444333900659, - 86.89432629055634, - 91.88123585723413, - 96.8329040523704, - 101.72876998336558 - ], - [ - 157.36440086215447, - 150.88005995599977, - 144.16101888777183, - 137.2359980977618, - 130.13789302736754, - 122.90362099266156, - 115.57387441538815, - 108.19278072578771, - 100.80747133825486, - 93.46756346468932, - 86.22455915102918, - 79.13116591144514, - 72.24054289041808, - 65.60547583105179, - 59.27748346138118, - 53.305857337448856, - 47.73663668697006, - 42.611519216896454, - 37.966707882831116, - 33.83169266994372, - 30.228018114653267, - 27.16863766746104, - 24.65861777602865, - 22.696406499190886, - 21.27506891253067, - 20.383417689519774, - 20.00700359458382, - 20.128925970151883, - 20.730434653284703, - 21.791322539682696, - 23.2901414058817, - 25.20429737494007, - 27.510087767012152, - 30.182730245117682, - 33.196416803897066, - 36.52440735918697, - 40.13916468584543, - 44.01252492223938, - 48.11589468852385, - 52.42046546052544, - 56.89743682974462, - 61.51824172395959, - 66.25476803436067, - 71.07957217294862, - 75.96608084071494, - 80.88877779683895, - 85.82337279158885, - 90.7469501656297, - 95.63809500383462, - 100.47699520521876 - ], - [ - 153.12941712843804, - 146.7143340940219, - 140.0810332838724, - 133.25789685535423, - 126.27722206511729, - 119.17507177617105, - 111.99103963675928, - 104.76792946114091, - 97.55135006372316, - 90.38922801107196, - 83.33124142788878, - 76.42817817775094, - 69.73122155165004, - 63.29116617085892, - 57.15756625534953, - 51.37781777134617, - 45.99617520333399, - 41.05270263316672, - 36.58215716522575, - 32.61280019478558, - 29.165163361169846, - 26.251367827112702, - 23.87586148453383, - 22.036679685080628, - 20.726633717524848, - 19.934381322714387, - 19.64535695748907, - 19.84253788747783, - 20.50703111934743, - 21.618484392545128, - 23.155345631327435, - 25.095011226905868, - 27.413909018657463, - 30.087556989362298, - 33.09062755047482, - 36.39703471245495, - 39.9800507747493, - 43.81245179421853, - 47.866686914494565, - 52.11506489289166, - 56.529950948345046, - 61.083967628055134, - 65.75019424507337, - 70.50236028869188, - 75.31502893460333, - 80.16376736736783, - 85.02530111234479, - 89.8776500135107, - 94.70024393721857, - 99.47401676212131 - ], - [ - 149.18915277044735, - 142.85840825094428, - 136.3256247936816, - 129.61877630410294, - 122.76950202664801, - 115.81295980444655, - 108.78760127346861, - 101.73486797574319, - 94.69880879430859, - 87.72562016530458, - 80.86311117050423, - 74.16009587465842, - 67.66571520374893, - 61.42869033241087, - 55.496509013958004, - 49.914545555153246, - 44.72511417518972, - 39.966454316188674, - 35.6716460818175, - 31.867465629664025, - 28.57330595748462, - 25.800681052283068, - 23.553763810095674, - 21.830482258685365, - 20.623648268477666, - 19.92197935718896, - 19.710984610063406, - 19.97369970576179, - 20.691264287154254, - 21.843347245906998, - 23.408439305517135, - 25.36404311936697, - 27.686795765494495, - 30.352556553949256, - 33.33648634606091, - 36.61313590743556, - 40.156552548766214, - 43.94040780165655, - 47.938144514697484, - 52.123139303570206, - 56.46887525116316, - 60.94911961290952, - 65.53810162239735, - 70.21068603101955, - 74.9425385929442, - 79.71028025320223, - 84.49162729879434, - 89.26551520513496, - 94.01220437541207, - 98.71336644654217 - ], - [ - 145.55585398826074, - 139.323584163047, - 132.90508100433732, - 126.3278460224699, - 119.6228060878899, - 112.82416870759477, - 105.96920558646978, - 99.09796306874338, - 92.25289921623347, - 85.47844817119916, - 78.82051303083506, - 72.32588872423855, - 66.04161635543048, - 60.01427019701962, - 54.28917803826182, - 48.909575006264305, - 43.91569063460278, - 39.34377031215054, - 35.2250415910227, - 31.5846770698205, - 28.440931086095333, - 25.80479144285175, - 23.680351652203683, - 22.065678316609407, - 20.953819476175553, - 20.333764465281405, - 20.191290155040903, - 20.509672280174385, - 21.27025668798703, - 22.452896395108453, - 24.036270278278693, - 25.998106866367564, - 28.31534043611623, - 30.964226008669257, - 33.92043577598106, - 37.1591535476059, - 40.65517757792168, - 44.383036716877015, - 48.317120745124726, - 52.431823062787124, - 56.70169238520194, - 61.10158944435121, - 65.60684459765156, - 70.19341246685245, - 74.83802010630863, - 79.51830563683654, - 84.21294473322985, - 88.90176280530626, - 93.56583116403156, - 98.18754591962019 - ], - [ - 142.2377949532763, - 136.11709037012432, - 129.82551982530134, - 123.39005311226188, - 116.84085466855807, - 110.21114021071456, - 103.53696720577757, - 96.85695748982025, - 90.21195128858525, - 83.64459263651665, - 77.19884669024765, - 70.91944968372113, - 64.85129229865774, - 59.038737093472115, - 53.524870507064705, - 48.35069025214132, - 43.554230814090104, - 39.16963657614001, - 35.22621218300284, - 31.747528469889545, - 28.750743492182863, - 26.246345227730046, - 24.23841497516321, - 22.725296079791107, - 21.70044811142442, - 21.153315733188876, - 21.070124027766326, - 21.4345637097354, - 22.228355117015795, - 23.431693772577347, - 25.023589561494703, - 26.982117836463914, - 29.284603979859014, - 31.90776307730262, - 34.82781391778079, - 38.0205824822615, - 41.46160545781126, - 45.12623995455249, - 48.989782011929464, - 53.02759384360336, - 57.215238045130945, - 61.52861601292137, - 65.94410739810412, - 70.43870736210046, - 74.99015856904379, - 79.57707514510128, - 84.1790561955345, - 88.77678686372212, - 93.35212532593201, - 97.88817453325441 - ], - [ - 139.23949403655624, - 133.2423130080256, - 127.0891342071907, - 120.80634039337059, - 114.42328694807786, - 107.97215927698825, - 101.48776891335973, - 95.00728642984781, - 88.56991003645165, - 82.21646936475037, - 75.98896438924632, - 69.93003972616106, - 64.08239474068307, - 58.48813014210001, - 53.18803240872976, - 48.22079926024823, - 43.62221422842674, - 39.42428964806079, - 35.654420547799916, - 32.334630397418564, - 29.481031043963384, - 27.10362214481981, - 25.206481581195234, - 23.788281723075087, - 22.842994257478082, - 22.36065133667485, - 22.328074381886864, - 22.72952343851061, - 23.54724752272756, - 24.76193300020732, - 26.353057257499515, - 28.299161215883913, - 30.57805752879517, - 33.166992039754746, - 36.042774756592905, - 39.18189388480339, - 42.56062307966566, - 46.15512864967937, - 49.941580408233676, - 53.896267451966175, - 57.99571839595096, - 62.21682445789272, - 66.536963141214, - 70.93411999347276, - 75.38700589865721, - 79.87516751053826, - 84.37908868611476, - 88.88028109127332, - 93.36136249883525, - 97.80612166539042 - ], - [ - 136.561978420673, - 130.69907864170708, - 124.69449356723933, - 118.57396716223768, - 112.36600219636256, - 106.10171792477944, - 99.81465077120336, - 93.54049599786433, - 87.31678899327754, - 81.18252536346826, - 75.17771947659531, - 69.34290153097375, - 63.718553714973424, - 58.344486863623565, - 53.25916070161648, - 48.49895424809259, - 44.097399868725944, - 40.08440706916008, - 36.48552218184638, - 33.3212950903458, - 30.60684177426178, - 28.351680904560226, - 26.55987307080234, - 25.23042267790514, - 24.357854030282567, - 23.932864389397295, - 23.94297672636013, - 24.373142802372215, - 25.206270907058084, - 26.423669308909183, - 28.00540742677758, - 29.9306035412024, - 32.17765161933818, - 34.724401213134186, - 37.54830396113029, - 40.6265385337277, - 43.93612345994234, - 47.45402464604466, - 51.15726190953932, - 55.02301673233994, - 59.02874178421625, - 63.15227158619866, - 67.37193292038732, - 71.66665316847198, - 76.01606459385832, - 80.40060259879299, - 84.80159613007885, - 89.2013486316696, - 93.58320821874733, - 97.93162605412932 - ], - [ - 134.20308672075421, - 128.48397774750438, - 122.63688915770064, - 116.68687789569887, - 110.66155379174764, - 104.5909371943266, - 98.50726347417688, - 92.44473235366651, - 86.43920059044106, - 80.52781709089822, - 74.74860007684808, - 69.13995656311826, - 63.740145299645, - 58.58668580751361, - 53.71571873221105, - 49.16132727539539, - 44.95483701986396, - 41.12412292325743, - 37.69296713346492, - 34.68052569661877, - 32.10096775924005, - 29.96333780989299, - 28.271657689650013, - 27.025242222859376, - 26.21916936854106, - 25.8448342906147, - 25.89052436839826, - 26.341969172755796, - 27.182837328965803, - 28.395166891057443, - 29.959726512044085, - 31.85631178298017, - 34.06398534804846, - 36.561271415231275, - 39.326315611819695, - 42.33702027218155, - 45.5711636455152, - 49.00650956954516, - 52.620912183862714, - 56.392418467418565, - 60.299369898068356, - 64.32050339069588, - 68.43505086360008, - 72.62283626889622, - 76.86436864734848, - 81.14092967641353, - 85.43465422365999, - 89.7286025562287, - 94.00682305952373, - 98.25440456122539 - ], - [ - 132.15779863187944, - 126.59071656378171, - 120.90870941470544, - 115.13610276154927, - 109.29957697731581, - 103.42802470013152, - 97.55235874162189, - 91.70526845647203, - 85.92092314932557, - 80.23462168526613, - 74.68238815133084, - 69.30051430147124, - 64.12505080270532, - 59.191251297912, - 54.53297645890567, - 50.18207007406753, - 46.16772627741737, - 42.51587623955115, - 39.248632676988905, - 36.38383804135442, - 33.9347621540433, - 31.909983046295693, - 30.313461231642364, - 29.14478946067605, - 28.399577171800374, - 28.069918150862435, - 28.144891619111917, - 28.611056676067662, - 29.45291254572649, - 30.653308873218222, - 32.193799810106455, - 34.05494248700438, - 36.21654494188978, - 38.657871063396186, - 41.35781105449085, - 44.295025737775546, - 47.448072089684274, - 50.79551603887564, - 54.31603706256806, - 57.988527659855805, - 61.7921894986696, - 65.70662698705783, - 69.71193822728046, - 73.7888027590275, - 77.91856515496997, - 82.08331336001397, - 86.26595062744326, - 90.45025996670273, - 94.62096015043576, - 98.7637525092926 - ], - [ - 130.4185806106007, - 125.0104849679296, - 119.4998312605198, - 113.91017381750663, - 108.26723166274324, - 102.59874594316196, - 96.9342911728788, - 91.30503847976192, - 85.74346961233282, - 80.28304112996278, - 74.95779902905477, - 69.8019451727913, - 64.84935847649166, - 60.13307610868173, - 55.684743302938074, - 51.53404500895799, - 47.70813859547732, - 44.23111366698964, - 41.12351137905043, - 38.40193901140158, - 36.07881311553864, - 34.16225447748408, - 32.6561413874508, - 31.560308450238324, - 30.870861989919177, - 30.580574108798046, - 30.679316526495413, - 31.15450053143941, - 31.991497731450295, - 33.174025211864176, - 34.68448661585316, - 36.50426686846026, - 38.61398265863417, - 40.99369354214545, - 43.62307991748233, - 46.48159447268735, - 49.54859331076154, - 52.80345211056172, - 56.225671599486255, - 59.79497548102882, - 63.49140289791048, - 67.29539659470889, - 71.18788720767115, - 75.15037355984109, - 79.16499846409249, - 83.2146193123469, - 87.28287262939271, - 91.35423176769811, - 95.41405699107811, - 99.44863731900816 - ], - [ - 128.97573718630701, - 123.73232876285563, - 118.39801429003666, - 112.99554211246044, - 107.54964349137214, - 102.08689034365257, - 96.635510061623, - 91.22515584696906, - 85.88663160115084, - 80.6515711622424, - 75.55207263802494, - 70.62028986775606, - 65.88798479866833, - 61.386046962061, - 57.143989437690294, - 53.18943476380287, - 49.54760899973195, - 46.24086697102902, - 43.28827546621555, - 40.705282201075676, - 38.50349515298775, - 36.69058870444097, - 35.27034086183376, - 34.242792229503166, - 33.60450571006335, - 33.34889862711469, - 33.46661699458208, - 33.94592420584172, - 34.773081804837446, - 35.93270648934626, - 37.408093779153376, - 39.181504106872254, - 41.23441115233848, - 43.54771502755689, - 46.101924569477106, - 48.87731372445862, - 51.85405704257563, - 55.01234886298088, - 58.33251005660725, - 61.79508535571257, - 65.3809334571749, - 69.07131131595929, - 72.8479533919162, - 76.69314609638711, - 80.5897973061517, - 84.5215005604076, - 88.47259341489897, - 92.42820937659651, - 96.37432286313326, - 100.29778670557702 - ], - [ - 127.81775858402939, - 122.74351610259376, - 117.58928648941428, - 112.37698313970132, - 107.13032934199802, - 101.87471686912971, - 96.63702484925304, - 91.44539765433845, - 86.32898119501148, - 81.31761782787814, - 76.44150113103869, - 71.73079317391671, - 67.21520870161439, - 62.92357296836476, - 58.88336283727857, - 55.12024414486392, - 51.65762193087345, - 48.51622338917112, - 45.71373543638954, - 43.264518601055315, - 41.17941567284336, - 39.46566702643075, - 38.126935519752365, - 37.163434028811466, - 36.572140043579765, - 36.34707594728502, - 36.479631349422576, - 36.958904868883224, - 37.77204613810619, - 38.90458339231948, - 40.34072683820705, - 42.063642387086375, - 44.055693921898225, - 46.29865491844784, - 48.77389199049392, - 51.46252389520248, - 54.34555987996725, - 57.404021141468945, - 60.619048759217584, - 63.97200089168307, - 67.44454138818662, - 71.01872134986472, - 74.6770546177371, - 78.40258770277967, - 82.1789643126691, - 85.99048437147775, - 89.82215726344499, - 93.65974894739884, - 97.4898225700954, - 101.29977224033011 - ], - [ - 126.93165676944938, - 122.02988953036387, - 117.0583122917727, - 112.03798078389632, - 106.99159680690178, - 101.94336834756169, - 96.91883312407873, - 91.94464462984597, - 87.0483204329536, - 82.25795334963742, - 77.60188720016538, - 73.10836023685675, - 68.80512106525651, - 64.7190239955444, - 60.87561323671797, - 57.298708048553145, - 54.01000360784146, - 51.028704457422585, - 48.37120837516716, - 46.05085769443447, - 44.07777209890712, - 42.45877171824334, - 41.19739256382542, - 40.29398906430164, - 39.7459119780693, - 39.54774534783553, - 39.691583971021146, - 40.167333039082834, - 40.963013641122245, - 42.06506101399944, - 43.45860604886197, - 45.12773408059445, - 47.055718036436545, - 49.225225426502284, - 51.61850038168232, - 54.21752303200314, - 57.00414906954815, - 59.96023247384944, - 63.06773421468809, - 66.30881939648492, - 69.6659448607143, - 73.12193878812391, - 76.66007339066323, - 80.26413138564844, - 83.91846661875928, - 87.60805895384073, - 91.31856337417946, - 95.03635313506321, - 98.74855676133339, - 102.44308868556303 - ], - [ - 126.30328363060322, - 121.57619701670401, - 116.78873607272538, - 111.96108266587301, - 107.11491049746238, - 102.27324748739456, - 97.46030467493192, - 92.70127104289725, - 88.02207437719146, - 83.44910914909546, - 79.00893349216864, - 74.72793867537749, - 70.63199607303616, - 66.74608849197017, - 63.093934771410744, - 59.69761867022048, - 56.57723494140619, - 53.75056680401757, - 51.23280933708871, - 49.036352257167124, - 47.17063289155681, - 45.64206601686554, - 44.45405204739916, - 43.607059571613206, - 43.09877329470689, - 42.92429477291023, - 43.07638133276885, - 43.54570829712752, - 44.3211408161619, - 45.39000377458119, - 46.738340924069576, - 48.351157146896185, - 50.212640282134984, - 52.306361054272045, - 54.615451256011, - 57.12276145277149, - 59.81100014664713, - 62.662856640865236, - 65.66110987024537, - 68.78872529443015, - 72.02894166451901, - 75.3653491319426, - 78.78195981798864, - 82.26327163596142, - 85.79432587596902, - 89.3607588352257, - 92.94884760749315, - 96.54555003165805, - 100.13853873582731, - 103.7162291923425 - ], - [ - 125.91762663681699, - 121.36639727918144, - 116.76349639367493, - 112.12822234562678, - 107.48122096536841, - 102.84435095059388, - 98.24051879051599, - 93.69348293663704, - 89.2276276500067, - 84.8677078160745, - 80.63856705869028, - 76.56483272013045, - 72.67059270230301, - 68.97906075156129, - 65.51223843356053, - 62.290583639904625, - 59.332696781527964, - 56.6550365868578, - 54.27167735416876, - 52.194118379967065, - 50.43115400795054, - 48.98880942962731, - 47.87034335534787, - 47.076314474344784, - 46.604704806190796, - 46.45109010907818, - 46.60884575945211, - 47.06937602396066, - 47.822355266708016, - 48.85597108950836, - 50.15716135303347, - 51.71183915369264, - 53.50510188018449, - 55.52142227192009, - 57.744820854761535, - 60.15902020821759, - 62.74758223943572, - 65.49403004915028, - 68.38195613399719, - 71.39511864266133, - 74.51752725089773, - 77.73351999501014, - 81.02783214702407, - 84.38565795911, - 87.79270587134386, - 91.23524757885326, - 94.70016119810155, - 98.17496865889164, - 101.64786737630317, - 105.10775622080425 - ], - [ - 125.75907884576758, - 121.38393640125761, - 116.9651082598851, - 112.52100603381214, - 108.0712544397156, - 103.6365604270917, - 99.23855472279126, - 94.89960580054907, - 90.64260697198198, - 86.49073811902933, - 82.46720455743446, - 78.59495663668058, - 74.89639492551476, - 71.39306715725232, - 68.10536443122058, - 65.05222535808414, - 62.250857728580954, - 59.71648768381332, - 57.46214608481452, - 55.498500687562185, - 53.83374079791304, - 52.47351841867843, - 51.4209467607287, - 50.67665373059966, - 50.238885023342064, - 50.103649087691416, - 50.264894719397496, - 50.71471145362813, - 51.443543199196306, - 52.44040650987379, - 53.69310629148203, - 55.188443364277084, - 56.912409937027846, - 58.85037055199472, - 60.98722733408793, - 63.30756937828767, - 65.79580683176246, - 68.43629069345252, - 71.21341960296786, - 74.11173496865996, - 77.11600573841382, - 80.21130398890016, - 83.38307233614269, - 86.61718398103983, - 89.89999601918683, - 93.21839647927008, - 96.55984541691303, - 99.91241028497045, - 103.2647957272297, - 106.60636789821368 - ], - [ - 125.81168148587142, - 121.611994264015, - 117.37591229449922, - 113.12096322098708, - 108.86576343531765, - 104.62989156123311, - 100.43373710986212, - 96.29832455722192, - 92.24511374974972, - 88.2957783127233, - 84.47196461902858, - 80.79503486165892, - 77.2857988353403, - 73.96424012040092, - 70.84924339738657, - 67.95833049718027, - 65.30741337898431, - 62.9105723899346, - 60.77986777425893, - 58.92519139247724, - 57.35416398420542, - 56.072081158455035, - 55.0819088124702, - 54.384326120694595, - 53.97781187732577, - 53.85876806568933, - 54.02167323581601, - 54.45925766822053, - 55.16269235694349, - 56.121784449396515, - 57.32517277868139, - 58.76051834680875, - 60.41468590916503, - 62.27391404687446, - 64.32397220728976, - 66.5503040937624, - 68.93815747594596, - 71.47270097711467, - 74.139128697523, - 76.92275368386692, - 79.80909128907024, - 82.78393341761674, - 85.83341454976909, - 88.94407030848242, - 92.10288919535357, - 95.2973579908726, - 98.51550119904047, - 101.74591482250077, - 104.97779468391875, - 108.20095946224001 - ], - [ - 126.05933848217305, - 122.03370052571704, - 117.97829101776902, - 113.9097619651488, - 109.84573962592073, - 105.80470287644454, - 101.805839343496, - 97.86887974750564, - 94.01391151601301, - 90.26117343017607, - 86.63083385544594, - 83.14275596373624, - 79.81625424764772, - 76.66984750876202, - 73.72101430342715, - 70.98595746467723, - 68.47938469046201, - 66.21431219972862, - 64.20189803116803, - 62.45131065509287, - 60.96963720351857, - 59.76183387882074, - 58.83071912050804, - 58.17700807882181, - 57.79938506216447, - 57.69460907105248, - 57.85764643244759, - 58.281823965683465, - 58.958996036002695, - 59.87971921703256, - 61.033428984062574, - 62.40861377426638, - 63.9929827599066, - 65.77362468523364, - 67.73715604118838, - 69.86985764482976, - 72.15779932792157, - 74.58695291674238, - 77.1432940130749, - 79.81289328411312, - 82.5819980610652, - 85.43710505825743, - 88.36502498081705, - 91.35293971091528, - 94.38845266762164, - 97.45963283720015, - 100.55505287883352, - 103.66382163156653, - 106.77561128517672, - 109.88067943186834 - ], - [ - 126.48600320780291, - 122.63232083034804, - 118.75485338044417, - 114.86939052472026, - 110.99259127469332, - 107.14186765245505, - 103.33524853572547, - 99.59122427918054, - 95.92857327253124, - 92.36617222949441, - 88.92279269517397, - 85.6168869928774, - 82.46636757389936, - 79.48838444095412, - 76.69910593024477, - 74.1135085906538, - 71.74518211887721, - 69.60615522943115, - 67.70674790890334, - 66.0554547057587, - 64.6588625626089, - 63.521605274671785, - 62.64635506494882, - 62.03385014032622, - 61.68295557827535, - 61.59075362178457, - 61.752658527493935, - 62.162550569732694, - 62.81292365348052, - 63.69504119175964, - 64.79909538653095, - 66.11436572996288, - 67.62937332604483, - 69.33202844104767, - 71.20976946110369, - 73.2496921207562, - 75.43866844080907, - 77.7634552663948, - 80.21079262887537, - 82.76749237887731, - 85.42051766877982, - 88.15705392008029, - 90.96457191318315, - 93.83088360175535, - 96.74419119598417, - 99.69312999104979, - 102.66680534820959, - 105.65482417262204, - 108.64732117854399, - 111.63498019099632 - ], - [ - 127.0758384392353, - 123.39141461952933, - 119.6885893710095, - 115.98230764762826, - 112.28828806125, - 108.62291214719372, - 105.00309603459391, - 101.44614522790387, - 97.9695937166259, - 94.59102919329288, - 91.32790676219344, - 88.19735414299484, - 85.21597198501763, - 82.39963347071941, - 79.76328785377322, - 77.32077289520544, - 75.08464127719893, - 73.0660059421329, - 71.27440889346752, - 69.71771729838733, - 68.40204977289821, - 67.33173456343951, - 66.5093000482496, - 65.93549666858482, - 65.60934817140546, - 65.52822899833853, - 65.6879638644955, - 66.08294507711238, - 66.706262955581, - 67.54984480732271, - 68.60459824035289, - 69.86055509125876, - 71.30701285028101, - 72.93267111069937, - 74.72576120491816, - 76.67416777445169, - 78.7655415289448, - 80.98740286657625, - 83.32723635138915, - 85.77257627698269, - 88.3110837006852, - 90.93061542092403, - 93.61928540726396, - 96.36551919137021, - 99.15810170054338, - 101.98621897411715, - 104.83949415545935, - 107.70801810494581, - 110.58237493653226, - 113.45366274513748 - ], - [ - 127.81335099409488, - 124.29496639656455, - 120.76299694685736, - 117.23156419300489, - 113.71547642346277, - 110.2301237250303, - 106.79135747884631, - 103.41535507376524, - 100.11847107381959, - 96.91707657110385, - 93.82738897374868, - 90.86529500109374, - 88.0461701583184, - 85.38469840782335, - 82.89469610650428, - 80.58894449618982, - 78.4790350801475, - 76.57523206001814, - 74.88635562628602, - 73.41968929137539, - 72.18091364970601, - 71.17406798823038, - 70.40154011815854, - 69.86408373049088, - 69.56086157451266, - 69.4895118924789, - 69.64623487204683, - 70.02589543506923, - 70.62213847679749, - 71.42751268989124, - 72.43359932082558, - 73.63114256815535, - 75.01017879322708, - 76.56016222584148, - 78.27008536721465, - 80.12859278602816, - 82.124087445873, - 84.24482907907546, - 86.47902442635201, - 88.81490939447474, - 91.24082335059543, - 93.74527588078749, - 96.31700640201065, - 98.9450370418031, - 101.61871919871831, - 104.32777417786264, - 107.06232826741855, - 109.81294258970365, - 112.57063802853492, - 115.32691550642394 - ], - [ - 128.68350286367013, - 125.32749258510057, - 121.96218377891194, - 118.60089893146551, - 115.25756861605404, - 111.94663243690178, - 108.68292625443671, - 105.4815565133144, - 102.35776290023756, - 99.32677098931215, - 96.4036369751282, - 93.60308702986322, - 90.93935422741511, - 88.42601632755841, - 86.07583797606424, - 83.90062102177431, - 81.91106665061096, - 80.11665286797282, - 78.5255305142241, - 77.14444047659279, - 75.97865408463629, - 75.03193788157319, - 74.3065430999145, - 73.80321929526873, - 73.52125076734217, - 73.45851367734674, - 73.6115512001783, - 73.97566365590168, - 74.54501035840009, - 75.3127198925223, - 76.27100566329386, - 77.41128382032, - 78.72429101074565, - 80.20019981770173, - 81.82873016369814, - 83.59925537116223, - 85.5009019533305, - 87.52264254337385, - 89.65338164996234, - 91.882034151255, - 94.1975966087038, - 96.58921160238106, - 99.04622536792596, - 101.55823905967898, - 104.11515398306604, - 106.70721113930553, - 109.32502541344725, - 111.9596147180354, - 114.60242438341982, - 117.24534706502834 - ] - ], - "zauto": true, - "zmax": 269.278867722867, - "zmin": -269.278867722867 - }, - { - "autocolorscale": false, - "autocontour": true, - "colorbar": { - "tickfont": { - "size": 8 - }, - "ticksuffix": "", - "x": 1, - "y": 0.5 - }, - "colorscale": [ - [ - 0, - "rgb(255,247,251)" - ], - [ - 0.14285714285714285, - "rgb(236,231,242)" - ], - [ - 0.2857142857142857, - "rgb(208,209,230)" - ], - [ - 0.42857142857142855, - "rgb(166,189,219)" - ], - [ - 0.5714285714285714, - "rgb(116,169,207)" - ], - [ - 0.7142857142857143, - "rgb(54,144,192)" - ], - [ - 0.8571428571428571, - "rgb(5,112,176)" - ], - [ - 1, - "rgb(3,78,123)" - ] - ], - "contours": { - "coloring": "heatmap" - }, - "hoverinfo": "x+y+z", - "ncontours": 25, - "type": "contour", - "x": [ - -10, - -9.591836734693878, - -9.183673469387756, - -8.775510204081632, - -8.36734693877551, - -7.959183673469388, - -7.551020408163265, - -7.142857142857142, - -6.73469387755102, - -6.326530612244898, - -5.918367346938775, - -5.5102040816326525, - -5.1020408163265305, - -4.6938775510204085, - -4.285714285714286, - -3.8775510204081627, - -3.4693877551020407, - -3.0612244897959187, - -2.6530612244897958, - -2.244897959183673, - -1.8367346938775508, - -1.4285714285714288, - -1.020408163265305, - -0.612244897959183, - -0.204081632653061, - 0.204081632653061, - 0.612244897959183, - 1.0204081632653068, - 1.4285714285714288, - 1.8367346938775508, - 2.2448979591836746, - 2.6530612244897966, - 3.0612244897959187, - 3.4693877551020407, - 3.8775510204081627, - 4.2857142857142865, - 4.6938775510204085, - 5.1020408163265305, - 5.510204081632654, - 5.918367346938776, - 6.326530612244898, - 6.73469387755102, - 7.142857142857142, - 7.551020408163264, - 7.95918367346939, - 8.367346938775512, - 8.775510204081634, - 9.183673469387756, - 9.591836734693878, - 10 - ], - "xaxis": "x2", - "y": [ - -10, - -9.591836734693878, - -9.183673469387756, - -8.775510204081632, - -8.36734693877551, - -7.959183673469388, - -7.551020408163265, - -7.142857142857142, - -6.73469387755102, - -6.326530612244898, - -5.918367346938775, - -5.5102040816326525, - -5.1020408163265305, - -4.6938775510204085, - -4.285714285714286, - -3.8775510204081627, - -3.4693877551020407, - -3.0612244897959187, - -2.6530612244897958, - -2.244897959183673, - -1.8367346938775508, - -1.4285714285714288, - -1.020408163265305, - -0.612244897959183, - -0.204081632653061, - 0.204081632653061, - 0.612244897959183, - 1.0204081632653068, - 1.4285714285714288, - 1.8367346938775508, - 2.2448979591836746, - 2.6530612244897966, - 3.0612244897959187, - 3.4693877551020407, - 3.8775510204081627, - 4.2857142857142865, - 4.6938775510204085, - 5.1020408163265305, - 5.510204081632654, - 5.918367346938776, - 6.326530612244898, - 6.73469387755102, - 7.142857142857142, - 7.551020408163264, - 7.95918367346939, - 8.367346938775512, - 8.775510204081634, - 9.183673469387756, - 9.591836734693878, - 10 - ], - "yaxis": "y2", - "z": [ - [ - 50.97410920147869, - 50.26007326464553, - 49.60280409800354, - 48.98419879637283, - 48.38430105979118, - 47.78219743795591, - 47.156927834961145, - 46.488341222227525, - 45.757843093129516, - 44.94900058602679, - 44.04799068005432, - 43.04389396062646, - 41.928850076825526, - 40.69810116159964, - 39.34995673168439, - 37.88571862909534, - 36.309607931731335, - 34.628737650791685, - 32.853175328194475, - 30.996137942334247, - 29.074357030375683, - 27.108642859870503, - 25.124658314759486, - 23.153874623969216, - 21.234596552506407, - 19.412764316906635, - 17.741890930428326, - 16.280949723275384, - 15.088551257082452, - 14.212310286560436, - 13.675329055362731, - 13.46654909060166, - 13.542875050446407, - 13.843794572695268, - 14.30985831139062, - 14.89512010243302, - 15.569916579078809, - 16.316459685869535, - 17.12193122648076, - 17.973024083365907, - 18.853855203828505, - 19.747149222317553, - 20.637391790531122, - 21.514434460585264, - 22.376399273174094, - 23.231219110490613, - 24.09653813862569, - 24.997984350131954, - 25.96608585732669, - 27.032360265365753 - ], - [ - 47.77330575802335, - 47.07592053931779, - 46.45246172398714, - 45.88232915903082, - 45.34259104358969, - 44.80912312433718, - 44.257758416346604, - 43.665350385076074, - 43.010677832958756, - 42.27514937593245, - 41.44329320070843, - 40.503040247193454, - 39.445825131810324, - 38.26653983658841, - 36.963382003770164, - 35.537644115865, - 33.99349292067472, - 32.3377905558749, - 30.580009804600795, - 28.732295440963757, - 26.809721550697596, - 24.830791246772932, - 22.81822030004819, - 20.800036780219077, - 18.81100059526535, - 16.89425459455945, - 15.102847089960836, - 13.50008662028781, - 12.156381660992183, - 11.138871321213577, - 10.491916335136434, - 10.215746169099512, - 10.261060919859077, - 10.549283250184228, - 11.003957271683584, - 11.571284569320703, - 12.222578803219708, - 12.944922665695056, - 13.729214276217101, - 14.562095279851679, - 15.424081786974256, - 16.292686613659082, - 17.147823482824016, - 17.977129809828604, - 18.779829364084137, - 19.568521041186933, - 20.36867319457425, - 21.215843215635296, - 22.150969774638362, - 23.214554433779806 - ], - [ - 44.439893107417674, - 43.76093733461724, - 43.17630122577249, - 42.662411550378444, - 42.192737107715075, - 41.73926570105003, - 41.2739827918314, - 40.77021285759874, - 40.20372724307377, - 39.553569025133086, - 38.802585719613035, - 37.937689784977614, - 36.9498848443639, - 35.834105081803365, - 34.58891982345693, - 33.21615775487735, - 31.72050721962177, - 30.10915098202708, - 28.391495099598547, - 26.579051072033625, - 24.685527523034757, - 22.727183015879323, - 20.7234881857506, - 18.69814859788308, - 16.680554901778475, - 14.707747935671856, - 12.826957283792387, - 11.09846873034596, - 9.597344424978347, - 8.409191768252397, - 7.610653832631581, - 7.23116933898925, - 7.223337594167482, - 7.483802709864967, - 7.910157110682773, - 8.43879109320528, - 9.045695327869984, - 9.727198922878639, - 10.479399852209122, - 11.286907909232912, - 12.122887540952561, - 12.956144138670444, - 13.759923843297942, - 14.51924901488585, - 15.235674704825694, - 15.929202187530592, - 16.63713855334299, - 17.40967794430605, - 18.302468702373147, - 19.367520716076296 - ], - [ - 40.9762458865404, - 40.316454367484184, - 39.775329335395995, - 39.32569783609153, - 38.93658461439765, - 38.57517092646144, - 38.208734847472535, - 37.80636933567714, - 37.34034966211859, - 36.78709783843039, - 36.12775073519795, - 35.34837513263558, - 34.43989011356929, - 33.39776187139443, - 32.22153503258884, - 30.914262943185676, - 29.481899550121753, - 27.93271773829184, - 26.27682165087914, - 24.52582090131067, - 22.6927299474724, - 20.792145073897142, - 18.840736733975316, - 16.85808421430397, - 14.86788771225759, - 12.899643589859764, - 10.990991160014593, - 9.19113387169976, - 7.565761296600384, - 6.202318781068969, - 5.206399668820954, - 4.663073768607261, - 4.558067829666954, - 4.761289673940381, - 5.128752428950028, - 5.584389630142802, - 6.116597297749742, - 6.738181379043319, - 7.450581222303871, - 8.230156978229623, - 9.035136976292478, - 9.82030288896771, - 10.549958593849585, - 11.206759032631467, - 11.796968637314347, - 12.35258997948614, - 12.929665683743929, - 13.60132660097434, - 14.445136200606107, - 15.527473314618334 - ], - [ - 37.38706185105953, - 36.745707882681025, - 36.25234180565772, - 35.87535320555561, - 35.57815338952891, - 35.32184481738818, - 35.06782669016219, - 34.78002905066649, - 34.426606613284086, - 33.98105105669857, - 33.422766991071114, - 32.73719890355521, - 31.91560588043371, - 30.95457327156875, - 29.855338316941545, - 28.622997877724163, - 27.265664121321166, - 25.79363807066782, - 24.218678313147734, - 22.553447733048657, - 20.811218785525902, - 19.005902582898813, - 17.152437917902823, - 15.267539144553371, - 13.370771127831047, - 11.485919888575976, - 9.642698389029025, - 7.879036337866584, - 6.244661203953934, - 4.807339638839434, - 3.6618043359630477, - 2.9241980694927734, - 2.6499185231069817, - 2.7186399897404896, - 2.9439598917350187, - 3.243868560515689, - 3.6381121809169596, - 4.168328084497642, - 4.833924398819414, - 5.5844674033775075, - 6.348813950910312, - 7.061337528426652, - 7.676076154434779, - 8.174358579745917, - 8.570325087064251, - 8.91506426843651, - 9.296365091712762, - 9.827866201349188, - 10.623365011056972, - 11.764496307598835 - ], - [ - 33.68004669996077, - 33.05430905394684, - 32.61236149281607, - 32.317014963139634, - 32.1244003104617, - 31.987732243141895, - 31.860907150329993, - 31.701453181526833, - 31.472620142512145, - 31.14461670518937, - 30.695125675908475, - 30.109265304335185, - 29.37915010888502, - 28.503170762770363, - 27.485080224325404, - 26.332952831151275, - 25.058077710765, - 23.673856372124686, - 22.1947921139779, - 20.635677971029992, - 19.011099624788752, - 17.335359163949484, - 15.62288875436796, - 13.889164782674099, - 12.152071360448431, - 10.433627630890436, - 8.762021638272408, - 7.174010090971229, - 5.717888584267348, - 4.456830526721523, - 3.4684703733979823, - 2.8219545667440413, - 2.5079444030994273, - 2.3978412897750396, - 2.3508167817461825, - 2.3328192998549446, - 2.425574047320256, - 2.7346472517955025, - 3.2627846888662315, - 3.910763663509721, - 4.561773115703101, - 5.122956830182638, - 5.533383453442952, - 5.767075516047836, - 5.840635635992466, - 5.827459556656755, - 5.872886949555074, - 6.183274943154297, - 6.95008975389559, - 8.25101435712435 - ], - [ - 29.866903253655877, - 29.25083503206272, - 28.863159585045313, - 28.659516259789775, - 28.58628212495408, - 28.586120154716284, - 28.603123989969315, - 28.586772748878666, - 28.49446255958368, - 28.292768688844745, - 27.957751358741724, - 27.474615632300676, - 26.836961080333644, - 26.04577244926769, - 25.108237504729747, - 24.03644139582192, - 22.8459781712646, - 21.55453632064011, - 20.180550888397256, - 18.742059776988658, - 17.2559397432158, - 15.737707012050526, - 14.202030810739029, - 12.664024461801601, - 11.141271198522343, - 9.656446369948412, - 8.240314823537764, - 6.934653530235612, - 5.793659204628691, - 4.879268266016947, - 4.240837659164548, - 3.8762183880095114, - 3.708431226609598, - 3.6235361713783814, - 3.5399383699303213, - 3.4477654683855854, - 3.406120100259934, - 3.4990435682871457, - 3.7601253171708584, - 4.135877990575668, - 4.5226920553640735, - 4.815488594330024, - 4.930931752683408, - 4.815153570793423, - 4.4517905490297, - 3.8859280402459615, - 3.2967816669570196, - 3.133699320243466, - 3.9050991779753566, - 5.53857843422303 - ], - [ - 25.964931873914686, - 25.34765246383736, - 25.01592468874877, - 24.915922106620705, - 24.980389405976368, - 25.13732402306338, - 25.317672684870136, - 25.460697232743147, - 25.516883541057542, - 25.448947923067692, - 25.231632891839727, - 24.850838760074435, - 24.302428453109453, - 23.59087203069291, - 22.727788081425096, - 21.730384304161188, - 20.619788408651168, - 19.41928686438095, - 18.15254989053722, - 16.84200879708167, - 15.507644625690737, - 14.166504571847197, - 12.833236520997817, - 11.52179398291595, - 10.248228974766063, - 9.034192790199391, - 7.9103508781516405, - 6.918092126364528, - 6.106229010200215, - 5.5177600784038905, - 5.166050011936273, - 5.015796454389588, - 4.992662134974439, - 5.01946968234555, - 5.050252124726378, - 5.08303314202381, - 5.149856758558888, - 5.288391940676991, - 5.508032033264359, - 5.773832919647004, - 6.017440850836099, - 6.15961946205996, - 6.128691752488571, - 5.872152179043108, - 5.366672870390749, - 4.637096450982413, - 3.8113206113892026, - 3.26623874229142, - 3.648969549712436, - 5.104875392383389 - ], - [ - 22.000000818018083, - 21.362265118106844, - 21.086257333215062, - 21.105255794468835, - 21.33180240205648, - 21.672461150115996, - 22.040029215718725, - 22.360803441803824, - 22.57742616947208, - 22.648940717938014, - 22.549503817301005, - 22.266638414142523, - 21.79943519845376, - 21.15682171312907, - 20.355870505877007, - 19.42005553497598, - 18.377355632575682, - 17.258137164901743, - 16.092833801667002, - 14.909589637082961, - 13.732228427298093, - 12.579088198282767, - 11.463293693935274, - 10.394813831517038, - 9.384157791466595, - 8.446907702958244, - 7.607539183238828, - 6.900064373466178, - 6.362213044940765, - 6.021257319654588, - 5.8766847444343435, - 5.893720518029377, - 6.016762489694691, - 6.193571094703785, - 6.393588652302226, - 6.612057640273466, - 6.86051125541313, - 7.149058263990115, - 7.469744602951202, - 7.790302221156824, - 8.06019081600382, - 8.22307867765416, - 8.229601636860169, - 8.048556657199187, - 7.678528523458636, - 7.1644332137713365, - 6.624212314695005, - 6.279506794210225, - 6.431961918641719, - 7.30036402597464 - ], - [ - 18.012964957384742, - 17.320040454128034, - 17.096021546066748, - 17.25598340469741, - 17.67986307810486, - 18.240710328371605, - 18.825561389435375, - 19.344717496997863, - 19.73287619696007, - 19.94662486001514, - 19.96107257664451, - 19.766770879372412, - 19.367194918198845, - 18.776696855469048, - 18.01872542328324, - 17.124074737511997, - 16.12892112433464, - 15.07242569649317, - 13.9937606399616, - 12.92862524992589, - 11.905703504562593, - 10.944004948192152, - 10.05232675545924, - 9.231763770125255, - 8.4811477444177, - 7.803941011938521, - 7.214044989393451, - 6.737422139241741, - 6.406592743394632, - 6.247507037874878, - 6.264658177110062, - 6.435685240924559, - 6.720949486802385, - 7.080434936749016, - 7.486096864052369, - 7.924166231216339, - 8.388819105976918, - 8.872064073265985, - 9.355559926569631, - 9.808371873231158, - 10.19101695304052, - 10.463292617406202, - 10.593200830237238, - 10.565800799519439, - 10.392282840731289, - 10.119986257167016, - 9.842510664214863, - 9.703441830906376, - 9.87796639040029, - 10.520018673514645 - ], - [ - 14.076008851232306, - 13.261257121008375, - 13.077909284438869, - 13.414720601040326, - 14.091735983143863, - 14.92475884354285, - 15.764057257651057, - 16.50246211428687, - 17.069371395394995, - 17.42233858331287, - 17.540273978358933, - 17.41873377886954, - 17.06679963494675, - 16.504971773864543, - 15.763602230997282, - 14.881469834623301, - 13.904101284860449, - 12.881386196050387, - 11.863991584333627, - 10.898240867985972, - 10.019791819083785, - 9.247773386992867, - 8.58235260777031, - 8.008395647673916, - 7.505153836497998, - 7.058555322193407, - 6.671322159822706, - 6.36683635874525, - 6.183850453404721, - 6.161473526151867, - 6.320210603999547, - 6.65157025130514, - 7.123950711526123, - 7.697993444649826, - 8.339002505667397, - 9.020843732371974, - 9.72304641332345, - 10.425354196534027, - 11.103499087761719, - 11.728302806193673, - 12.2682903138055, - 12.694719526603603, - 12.987706087223616, - 13.142577569046457, - 13.176047810768287, - 13.131733281280157, - 13.083578533640713, - 13.133875075874405, - 13.401116768206562, - 13.995850586784655 - ], - [ - 10.342290684601199, - 9.265303756917808, - 9.090989242858539, - 9.673805807204536, - 10.699308379044911, - 11.875984088078356, - 13.007484211254967, - 13.976526258750171, - 14.716684253258178, - 15.193491543939167, - 15.393901344689278, - 15.320641459059406, - 14.989192289487718, - 14.426156705500272, - 13.668350209227519, - 12.762171680756621, - 11.762813564215543, - 10.732642746817303, - 9.737632655508556, - 8.840320265412291, - 8.088440165410075, - 7.501805508795809, - 7.065280658711965, - 6.735951859613767, - 6.463268025753185, - 6.2115995339367, - 5.975746130741214, - 5.78594087538066, - 5.70074420129258, - 5.785814064284007, - 6.083949932209969, - 6.595764485944554, - 7.2858747186365775, - 8.104241326058764, - 9.003272638456748, - 9.943993839168167, - 10.89484707665479, - 11.82806762815197, - 12.716785677863813, - 13.534241410173872, - 14.255263228373288, - 14.859447642739557, - 15.33525874942871, - 15.684348868428543, - 15.925510199727807, - 16.097569499251758, - 16.260147310764548, - 16.490706302082017, - 16.8763661934352, - 17.500551951413655 - ], - [ - 7.219902879637654, - 5.5712639073826615, - 5.302061073228606, - 6.286250224823966, - 7.809941676272938, - 9.390577510471703, - 10.814042154957603, - 11.985321947022374, - 12.860422876329666, - 13.421316518538847, - 13.666258870160371, - 13.605770957164074, - 13.26094360247671, - 12.662845512402635, - 11.852568342027958, - 10.88171908411101, - 9.813192190527179, - 8.721721235087387, - 7.692587780608902, - 6.814410550600717, - 6.159746753831276, - 5.753965833206778, - 5.554846967077733, - 5.471216684756969, - 5.409432998787558, - 5.311436381411949, - 5.1714941806006, - 5.038749192994647, - 5.0072436095925905, - 5.183712068665523, - 5.635595872288152, - 6.3594114907877515, - 7.299123396175185, - 8.384277184130527, - 9.552688859651653, - 10.755569746514592, - 11.954951497504, - 13.11976755859934, - 14.223053312237406, - 15.240935813820245, - 16.153331220964365, - 16.945918781383572, - 17.612828269294965, - 18.15947076570603, - 18.60495772983244, - 18.983509007416068, - 19.344144371650824, - 19.747911222807495, - 20.262180838440813, - 20.95238983449086 - ], - [ - 5.815135093129896, - 3.402910087371471, - 2.7364475636246866, - 4.208620905517483, - 6.162961376736938, - 7.995715889067021, - 9.562294324925778, - 10.812007764859864, - 11.724049588749553, - 12.292762163924623, - 12.523214250690634, - 12.429684675384806, - 12.035212828164509, - 11.371700629965469, - 10.480482623545706, - 9.413516224143589, - 8.235570047374095, - 7.027961188037633, - 5.893752871560528, - 4.959396602658609, - 4.351629742648302, - 4.121426720739709, - 4.175178222253942, - 4.3348289968914475, - 4.451837495602597, - 4.4538093063277, - 4.345935849146983, - 4.2087450502599655, - 4.190560721779415, - 4.457580940373392, - 5.09547851664709, - 6.068465348981694, - 7.280666674762976, - 8.638801346585554, - 10.071102985117733, - 11.524919106849854, - 12.960684754206545, - 14.347224095515958, - 15.658989191770535, - 16.87500172797831, - 17.97914065087407, - 18.961372284970015, - 19.81948645046904, - 20.56089129471596, - 21.204019609961335, - 21.778896114416742, - 22.32642419217534, - 22.896034464251187, - 23.54158705877983, - 24.315881885862314 - ], - [ - 7.146338893992843, - 5.144705583181452, - 4.441137345579836, - 5.201649551044686, - 6.653836261168105, - 8.191035869940388, - 9.564594806490584, - 10.673655416430107, - 11.473909887641502, - 11.947578061836674, - 12.092724732773522, - 11.919029669669985, - 11.446017376902027, - 10.70240876847081, - 9.726178790788733, - 8.565367644652316, - 7.280187690743422, - 5.947927933043294, - 4.674126779416923, - 3.6142018052380736, - 2.9804811886480294, - 2.8987962925073143, - 3.1853480887527303, - 3.5327684518657043, - 3.7514405897599947, - 3.7739037584577124, - 3.6234226997523935, - 3.417255461672821, - 3.3793550097918756, - 3.757874349815636, - 4.626405716783289, - 5.872573296953074, - 7.354325816676901, - 8.966619972390117, - 10.637767152161699, - 12.316981917533795, - 13.966242683250151, - 15.555797505220212, - 17.061889774195436, - 18.46591102226548, - 19.75453513465362, - 20.92049654750156, - 21.963688504103445, - 22.89225100729032, - 23.7233178280481, - 24.483106803916716, - 25.206081872960173, - 25.933015370358536, - 26.707961983081777, - 27.57441930677999 - ], - [ - 10.086532809064959, - 8.572953016014756, - 7.911088613903055, - 8.082555377254558, - 8.81352185649504, - 9.77363793850269, - 10.723493097665619, - 11.52054237937543, - 12.085664378675862, - 12.377891514316762, - 12.3803599616296, - 12.09299341762607, - 11.52872330435137, - 10.711598407738052, - 9.676051839804535, - 8.467161172052506, - 7.142309214981554, - 5.775705844346469, - 4.469607740046846, - 3.3787430226116233, - 2.727332151567935, - 2.656401400124974, - 2.9551311423006625, - 3.2868513199492524, - 3.456367971506571, - 3.396448471985768, - 3.133967751760108, - 2.813079194242774, - 2.750183202959438, - 3.284212818366051, - 4.407904931071981, - 5.90780162442929, - 7.619440747642823, - 9.4428609715628, - 11.312780155451744, - 13.182248952106983, - 15.015298564865228, - 16.78351123479816, - 18.46441745379514, - 20.040912077680247, - 21.501321892235804, - 22.839880220168364, - 24.057381801111628, - 25.161784906432473, - 26.168528000753337, - 27.100347643336224, - 27.98643172194857, - 28.86082683480163, - 29.760144909110018, - 30.7207701990019 - ], - [ - 13.514364393152132, - 12.224240664072138, - 11.525894608021952, - 11.373294925918213, - 11.623721453097065, - 12.093039313128733, - 12.613412488124828, - 13.058376992332546, - 13.342874616770859, - 13.414952211307615, - 13.247599501001968, - 12.83285401737679, - 12.178028837190118, - 11.303523975135253, - 10.241841878895903, - 9.037717594537408, - 7.749641782701607, - 6.453505481780641, - 5.249070341838539, - 4.265454259020269, - 3.6397195101929287, - 3.419855362675991, - 3.4711931880230225, - 3.5700068922342085, - 3.5469455993627594, - 3.325099071581466, - 2.9233707441082983, - 2.5065463440590876, - 2.4792890888660772, - 3.2079350268626263, - 4.550464834785133, - 6.24004978419372, - 8.120849807786744, - 10.1036154742394, - 12.12867266806365, - 14.151547342189444, - 16.137307223769184, - 18.058083487621353, - 19.89193615652637, - 21.62241951381955, - 23.238572731830214, - 24.735161736479913, - 26.11301384790962, - 27.37928276022715, - 28.547483449917472, - 29.637155245519107, - 30.673051714858545, - 31.683820366598994, - 32.700220695474826, - 33.75302471933962 - ], - [ - 17.02491953274796, - 15.821961302602235, - 15.052984743642842, - 14.672724095512608, - 14.588944787034817, - 14.684502357560008, - 14.842865473995534, - 14.965142061991786, - 14.976592193982082, - 14.82647862294939, - 14.485288615613793, - 13.941618638109391, - 13.199624662887599, - 12.277260958657234, - 11.20529856821534, - 10.027073704110373, - 8.79887334392884, - 7.590529202900048, - 6.4844337892983805, - 5.567514587163888, - 4.9060947311568635, - 4.503079485964613, - 4.274491086560622, - 4.085907940685443, - 3.8170101416076334, - 3.4052275446534583, - 2.880813978749522, - 2.45057760521465, - 2.5760378202888408, - 3.5164981220583136, - 5.023495136582365, - 6.845386279953286, - 8.846943285742679, - 10.948024244524037, - 13.092573655631437, - 15.237463830605547, - 17.348197403159315, - 19.397044619006415, - 21.36218004269227, - 23.22731501135126, - 24.981613088297006, - 26.619759241648303, - 28.14206974260394, - 29.55452964887434, - 30.86864850814553, - 32.10104103370507, - 33.27267105532058, - 34.4077436684769, - 35.532288172658006, - 36.6725346821691 - ], - [ - 20.46977559889392, - 19.283510419057812, - 18.426177075484578, - 17.858428942065025, - 17.51434650037531, - 17.312460673800928, - 17.168928498128434, - 17.00819865494191, - 16.769245002993102, - 16.407929303810555, - 15.896978902066717, - 15.224886987731946, - 14.394541142560747, - 13.42196162241655, - 12.335254823705078, - 11.173687083054135, - 9.986532425596184, - 8.830874804907578, - 7.76670937340685, - 6.846854768727265, - 6.100417551835381, - 5.515235790436665, - 5.033641931618385, - 4.57165163885657, - 4.053304892556473, - 3.4484006465060753, - 2.8283903833930926, - 2.4823296134729125, - 2.878335686191976, - 4.059361032598349, - 5.721083473638424, - 7.657588362282523, - 9.759115759073453, - 11.956076213929798, - 14.197028816859689, - 16.440981959654703, - 18.65445237159517, - 20.81020291381888, - 22.88665321371006, - 24.86760671269511, - 26.742144407320986, - 28.504596383615173, - 30.15451491850599, - 31.696573632460183, - 33.14032071206375, - 34.49972668050023, - 35.792490352316534, - 37.03909937458242, - 38.261680521340345, - 39.482713714357665 - ], - [ - 23.782864056774773, - 22.572528565556954, - 21.615684187420456, - 20.87931587520802, - 20.313949847208423, - 19.859998308551578, - 19.45541200496926, - 19.042568818161577, - 18.57319031165086, - 18.011110375729167, - 17.333346419981122, - 16.53007997597408, - 15.60403627541, - 14.569547679624048, - 13.451379433931605, - 12.28319292463855, - 11.105290661247086, - 9.961020353355975, - 8.89104150391323, - 7.925028703616352, - 7.0720472766787505, - 6.3137923770357, - 5.606623795468335, - 4.895534183973935, - 4.138740495355457, - 3.3467210329363644, - 2.667410577708555, - 2.524226723877372, - 3.291869129214739, - 4.742949899543185, - 6.572714103933284, - 8.628028072541442, - 10.825749062007274, - 13.10889369876328, - 15.432584355815722, - 17.759505388284317, - 20.058315139761497, - 22.303038264921636, - 24.47281077447916, - 26.55176486860413, - 28.52896977767418, - 30.39838030044223, - 32.15874987090662, - 33.813463418368244, - 35.37024669311316, - 36.84071697685497, - 38.23975599185009, - 39.584708121779265, - 40.8944328865625, - 42.1882658322653 - ], - [ - 26.93111707954388, - 25.67079918953806, - 24.60650615889508, - 23.71089838741067, - 22.945906765455803, - 22.26675063534066, - 21.626776829806673, - 20.982098843785238, - 20.29531077911354, - 19.537991802528314, - 18.692065773794713, - 17.750244542890066, - 16.71578924293621, - 15.601737427437874, - 14.429616336064376, - 13.227521465468987, - 12.02730962357418, - 10.860599639063206, - 9.753441706114936, - 8.72013528890064, - 7.75782948820719, - 6.844714555261632, - 5.944692241843399, - 5.020249419918482, - 4.056421925615748, - 3.1133200302556903, - 2.468080907675034, - 2.6933648474313463, - 3.8727996279970207, - 5.581871088833185, - 7.575913828776498, - 9.748502714409017, - 12.038400394272209, - 14.400185261034903, - 16.79588572983977, - 19.192594459630982, - 21.561855444591583, - 23.879573528408045, - 26.126056133748172, - 28.286064966322016, - 30.34883805102607, - 32.308063049056535, - 34.16178346536177, - 35.912216122843205, - 37.56545773932929, - 39.131063116427384, - 40.6214876749597, - 42.05140174435095, - 43.43690097043447, - 44.794653582941706 - ], - [ - 29.898296180291666, - 28.570469291212905, - 27.39279803132695, - 26.3427558573217, - 25.39065026571541, - 24.50235291212381, - 23.642560329911735, - 22.77803880037125, - 21.88041126490305, - 20.92823703917481, - 19.90831712007944, - 18.81626938818232, - 17.65644800113647, - 16.44124781821604, - 15.189764830563929, - 13.925707760749146, - 12.674418494080887, - 11.45893573209672, - 10.295334810552594, - 9.188167595950436, - 8.127578534794548, - 7.09015431899089, - 6.045453727632319, - 4.970536045659426, - 3.8808502982856776, - 2.914541067229381, - 2.529445970341055, - 3.236723485783351, - 4.743698037536251, - 6.645315441149159, - 8.770202064364216, - 11.040807641842886, - 13.408833279714045, - 15.836509265629255, - 18.291163691380735, - 20.74376050723478, - 23.168676968472457, - 25.543838748267728, - 27.850914340728906, - 30.07547035372016, - 32.207057887248, - 34.23922043998531, - 36.16941670510772, - 37.998850017984964, - 39.73219567713477, - 41.37722012147592, - 42.94429243896636, - 44.4457981800349, - 45.89547646057372, - 47.30771192520972 - ], - [ - 32.67866767703578, - 31.271194742739105, - 29.975863501597573, - 28.77411258915022, - 27.642576750428656, - 26.5550489763078, - 25.484792858730838, - 24.406891502299327, - 23.300354998234557, - 22.149793540490318, - 20.946554731692082, - 19.689288424141154, - 18.383926508929033, - 17.043051175053943, - 15.68458825496238, - 14.32972989757106, - 13.000010385676951, - 11.713603665603411, - 10.481260551375883, - 9.302867187093765, - 8.166218825131278, - 7.049990941615021, - 5.933269084683591, - 4.816572923719776, - 3.7714155144942025, - 3.060045447204375, - 3.187276358329114, - 4.28644808149037, - 5.9793126519000435, - 7.9913291723308095, - 10.197866996140165, - 12.53389946597456, - 14.95615493510965, - 17.4303146436127, - 19.926684427263588, - 22.41883652512086, - 24.88333270400014, - 27.299820011085217, - 29.65121815113427, - 31.923886552289044, - 34.1077281633997, - 36.19621404161654, - 38.186322063645804, - 40.07838575782794, - 41.87585066188929, - 43.584938213412066, - 45.21422177441427, - 46.77412574546398, - 48.27636595568379, - 49.73335638769911 - ], - [ - 35.274049561159444, - 33.778761811206905, - 32.3631664144758, - 31.01189193085303, - 29.70639089715167, - 28.42641723682446, - 27.15173929692257, - 25.863897351897275, - 24.54782496396215, - 23.19319109984771, - 21.795364766829376, - 20.355938354246366, - 18.88275935786167, - 17.389411214746303, - 15.89406096938154, - 14.417576693723476, - 12.980855756377698, - 11.601470524489919, - 10.29011910542361, - 9.04800038925388, - 7.867012406095846, - 6.735486639397291, - 5.653613277482702, - 4.667111327939492, - 3.932861400161103, - 3.7686555267488453, - 4.4248046507934635, - 5.776335329714565, - 7.567966785422528, - 9.632609911731414, - 11.877309854904299, - 14.244707372818247, - 16.693726391475714, - 19.19137194111341, - 21.709337530398688, - 24.22267995187192, - 26.709397443798174, - 29.15038934609073, - 31.529552145386887, - 33.833894786115025, - 36.053617751345456, - 38.18213012630974, - 40.21599284029709, - 42.154782917457005, - 44.00087738150049, - 45.75915881915013, - 47.43664853894026, - 49.04207791911531, - 50.585413515464445, - 52.07735608198204 - ], - [ - 37.69213378069395, - 36.10417869397372, - 34.567612497171076, - 33.069569165166875, - 31.59514858973616, - 30.1285716707856, - 28.65449736841348, - 27.159379513119806, - 25.63274317607539, - 24.06827747922702, - 22.4646644715104, - 20.826082492234928, - 19.162330304106984, - 17.488512524407685, - 15.824210954972395, - 14.192054551736668, - 12.615628796087677, - 11.116808131735857, - 9.712980398131359, - 8.415412602062558, - 7.231256308249694, - 6.173285472188718, - 5.282741023427848, - 4.666082069873564, - 4.509860292792668, - 4.976641713381771, - 6.050073964223236, - 7.586915614111351, - 9.44937106264249, - 11.541410382787294, - 13.797605500160165, - 16.17025085073521, - 18.621784041163764, - 21.12083062730173, - 23.64022388149896, - 26.156072742875246, - 28.647382343918867, - 31.09595350311168, - 33.486405594352206, - 35.80623371313634, - 38.045849804058925, - 40.198580043045794, - 42.26060386498394, - 44.23082773160957, - 46.110691719183684, - 47.903910910105864, - 49.616157256729785, - 51.254691324844075, - 52.82795698462878, - 54.345155319252086 - ], - [ - 39.945306499920676, - 38.26288049032992, - 36.60683252681188, - 34.9662198523841, - 33.328866884261245, - 31.682293283428987, - 30.014755557122385, - 28.316321239108845, - 26.5798946791874, - 24.80212273610633, - 22.98412284193405, - 21.131990315760508, - 19.257052992806248, - 17.375848106105444, - 15.509801513105813, - 13.684602256702311, - 11.92931087046529, - 10.275378118253473, - 8.756114756293854, - 7.407956335346428, - 6.276069145353958, - 5.426392364597946, - 4.956195147471695, - 4.970922674803099, - 5.512955202615041, - 6.529808428930384, - 7.928353642972752, - 9.625189042659315, - 11.556180034700226, - 13.670918665364917, - 15.92758709266536, - 18.290147635856634, - 20.72686908777063, - 23.20948973244292, - 25.712727044433855, - 28.214012877590594, - 30.6933818369664, - 33.13345491999221, - 35.51947006164753, - 37.839321656666286, - 40.08358158294258, - 42.245483311645486, - 44.32085781859726, - 46.3080154054974, - 48.207571726862746, - 50.022219833681284, - 51.75645325178602, - 53.41624814749877, - 55.00871542253759, - 56.54173590747046 - ], - [ - 42.04964738752123, - 40.273905093871946, - 38.50235625793839, - 36.72551431193512, - 34.933216409098584, - 33.11538140495115, - 31.262847736921962, - 29.368235708091888, - 27.426778821408362, - 25.437075553456364, - 23.401724894591332, - 21.327825189868886, - 19.227337448988557, - 17.117346998046884, - 15.020315869962497, - 12.964536705224676, - 10.985252712237283, - 9.12745264169986, - 7.452398801284421, - 6.050973243270421, - 5.061239391544482, - 4.651276064458649, - 4.898592034794919, - 5.697138904250244, - 6.877724648340314, - 8.32668122979539, - 9.9872344739389, - 11.829628493560389, - 13.831991482236123, - 15.972592058355856, - 18.228070069421637, - 20.573957953201607, - 22.98570135977603, - 25.439530276851634, - 27.91306055168923, - 30.385681662661288, - 32.83880918219955, - 35.25605667406227, - 37.62335502818037, - 39.92902925232864, - 42.16383349447024, - 44.32094165517008, - 46.395890727867425, - 48.386475298035855, - 50.2925935693267, - 52.11604747730361, - 53.86030172561749, - 55.53020881227518, - 57.13170915817184, - 58.671517123484776 - ], - [ - 44.023972629742815, - 42.158985964344105, - 40.27863685250627, - 38.37455550311684, - 36.438080777150404, - 34.46088472021627, - 32.43565200022867, - 30.356774304944768, - 28.22102007513808, - 26.028145257890444, - 23.781421246836594, - 21.488073335811997, - 19.159652114828535, - 16.812415915450522, - 14.46792357282784, - 12.154330584334136, - 9.909663366871762, - 7.790593999341339, - 5.896801537433429, - 4.434120791322951, - 3.786478701841376, - 4.208479934325255, - 5.373251759951533, - 6.877578628609515, - 8.54350383598004, - 10.317298920399331, - 12.189397107015738, - 14.161710159400096, - 16.23501237513591, - 18.40476433837199, - 20.66076978917669, - 22.988421992981568, - 25.37035158216869, - 27.78791953103447, - 30.222375139996302, - 32.655684083834714, - 35.071095679649915, - 37.45352260149697, - 39.78978914013349, - 42.06878469788735, - 44.28154423245226, - 46.42126776312583, - 48.483285752480704, - 50.46497479230957, - 52.36562744768134, - 54.18628059565179, - 55.929507651008315, - 57.59918137342662, - 59.20021525115985, - 60.73829254878752 - ], - [ - 45.88887204489546, - 43.94155542386031, - 41.96193001660007, - 39.94253906261764, - 37.875910124025, - 35.75507510672235, - 33.574126912821555, - 31.32878250287379, - 29.016922244811145, - 26.63907910055749, - 24.19885908197318, - 21.703288585166426, - 19.163110931856043, - 16.593111500834546, - 14.012690897012522, - 11.447300611750528, - 8.932651075510991, - 6.528684818295232, - 4.374541743196363, - 2.922458813465489, - 3.1182172180480268, - 4.627059711114815, - 6.514025672743509, - 8.48364299233387, - 10.47330484231877, - 12.479929031812402, - 14.516673945174956, - 16.598548788465404, - 18.736493894233863, - 20.935177503984548, - 23.192860433386656, - 25.502382417035435, - 27.852605124524203, - 30.229883170746827, - 32.61934192884229, - 35.00588861400452, - 37.3749655236684, - 39.71308763756189, - 42.00821182074914, - 44.24997760768634, - 46.42984926004145, - 48.541179697699114, - 50.57921028892671, - 52.54101629296803, - 54.425405460592835, - 56.23277634851916, - 57.96494281202473, - 59.62493153144312, - 61.21676001277121, - 62.74520305374542 - ], - [ - 47.66573730915744, - 45.64568439123348, - 43.57906764203373, - 41.45927349317258, - 39.27989409376206, - 37.03517220000721, - 34.720472717808555, - 32.33275878322559, - 29.87105111968383, - 27.33685358498876, - 24.73453680708981, - 22.071689480927734, - 19.35948376623211, - 16.613187201222622, - 13.853181593058915, - 11.107547478506806, - 8.419808811934493, - 5.8768163575165815, - 3.7341956582277223, - 2.883040886058898, - 4.055666258855374, - 6.076090699421348, - 8.26566925188758, - 10.46617410305419, - 12.64514283468525, - 14.805378085311622, - 16.960814494150025, - 19.12721099226398, - 21.317649965286115, - 23.540407321323165, - 25.798334982696474, - 28.0892283453504, - 30.40674749344718, - 32.74155315154385, - 35.08242907373451, - 37.417266482532256, - 39.73386341121632, - 42.02053831278798, - 44.2665792280745, - 46.46255616660302, - 48.60052277366906, - 50.67412882994878, - 52.67866033942782, - 54.611020051053494, - 56.469658520120504, - 58.25446414160823, - 59.966619731443735, - 61.608432922126205, - 63.18314763029148, - 64.69474393930068 - ], - [ - 49.37580639031069, - 47.29500807521078, - 45.15619505037965, - 42.95364569349815, - 40.68205666987593, - 38.336945660364144, - 35.9150819677536, - 33.41493332063982, - 30.837121901915353, - 28.184893411274317, - 25.46462500180778, - 22.686443502155875, - 19.865125617503207, - 17.0216917169479, - 14.186736225514968, - 11.40838014905074, - 8.773653602682225, - 6.47125580906316, - 4.950647472371064, - 4.903698770371952, - 6.263213979119569, - 8.276698285058025, - 10.501718129489747, - 12.77492633930036, - 15.041383782719182, - 17.287708743921286, - 19.51742829158502, - 21.740208736161197, - 23.966373656271017, - 26.203993919075966, - 28.457531725857926, - 30.727512684195673, - 33.010853245110816, - 35.30154945507877, - 37.59150648497123, - 39.87136193856172, - 42.131219670479645, - 44.36125787375752, - 46.55220488547847, - 48.69569189922167, - 50.78449815768546, - 52.81270526078671, - 54.77577581223731, - 56.67056945258373, - 58.49530726144941, - 60.249493901175065, - 61.9338057722314, - 63.54995277236154, - 65.10052085877355, - 66.58880236173202 - ], - [ - 51.03926562174461, - 48.91170232530781, - 46.71756106283307, - 44.452149875032376, - 42.11143010758438, - 39.6924114820145, - 37.1935886347776, - 34.61542195924221, - 31.960877732574378, - 29.23606643108261, - 26.451064943981155, - 23.621102730923557, - 20.768490842036496, - 17.92611221738092, - 15.144296412386206, - 12.505158008392758, - 10.152491930163837, - 8.343043358063285, - 7.459459634026559, - 7.76748175390745, - 9.075568874142958, - 10.959583439064591, - 13.10918401814771, - 15.362081914205204, - 17.642617785918993, - 19.919143640077273, - 22.182001796273113, - 24.43205380928072, - 26.674306993481643, - 28.914249325861693, - 31.15582380340953, - 33.40048666636542, - 35.64699149908563, - 37.891631566652435, - 40.12873440605482, - 42.351258017836955, - 44.5513881763936, - 46.72107777921891, - 48.85249964687381, - 50.93840418297415, - 52.972384868943195, - 54.9490602457311, - 56.86418309086666, - 58.714687618077164, - 60.49868480033895, - 62.21541496733943, - 63.86516595353618, - 65.44916437360702, - 66.96944706962822, - 68.42871934995306 - ], - [ - 52.67445733167985, - 50.51558040755504, - 48.284456825190304, - 45.97761015214374, - 43.59248787899317, - 41.12787897911533, - 38.58439596491871, - 35.965040914332725, - 33.2758953594795, - 30.52701113382865, - 27.733647337393748, - 24.91812451529227, - 22.1128006766408, - 19.365092076986436, - 16.746103732746242, - 14.364829840920104, - 12.386945354885393, - 11.04038350064512, - 10.553331604476258, - 11.000755492331573, - 12.226314058872738, - 13.967728823352763, - 16.001476979083616, - 18.182046082497074, - 20.425666412778927, - 22.68790379680445, - 24.947633926683494, - 27.19689548614913, - 29.434541080790957, - 31.662252003604156, - 33.882094485638476, - 36.09513426222005, - 38.300790746391954, - 40.49669469513186, - 42.67886507557644, - 44.84206316316366, - 46.98022024757988, - 49.0868690204478, - 51.15553608642261, - 53.18007337441548, - 55.154920035900915, - 57.07529495572368, - 58.937324732637784, - 60.738114232100145, - 62.47576759073883, - 64.14936755830686, - 65.75892072765113, - 67.30527575818601, - 68.79002124565757, - 70.21536945572616 - ], - [ - 54.29723824312131, - 52.123373740437586, - 49.87438982423946, - 47.54821414039225, - 45.1439988730657, - 42.662579796062815, - 40.10702528490654, - 37.48330858911474, - 34.80116147793912, - 32.0752085992386, - 29.32654893649869, - 26.585054828965024, - 23.892801271300026, - 21.30915767900435, - 18.9178683762922, - 16.83489855325859, - 15.210643019256583, - 14.210364206233987, - 13.956583927301315, - 14.45838050872506, - 15.600132664434206, - 17.20615859765378, - 19.111290875124265, - 21.191448301065943, - 23.363992523765077, - 25.577984423079766, - 27.804166422006425, - 30.027186259878206, - 32.24004632433423, - 34.44027229612623, - 36.627349158227624, - 38.80109323961181, - 40.96071570212924, - 43.10438643843686, - 45.22914366524796, - 47.33102440662042, - 49.40531874767147, - 51.446876399280406, - 53.45041658193953, - 55.410810512087, - 57.32331956562012, - 59.1837818671298, - 60.9887463594605, - 62.73555720596283, - 64.42239345275267, - 66.04826985536707, - 67.61300510092626, - 69.11716362510316, - 70.56197700504877, - 71.94925059435838 - ], - [ - 55.920523118779435, - 53.74824327830739, - 51.50055451369083, - 49.17693785565149, - 46.77840881647309, - 44.30802141313847, - 41.77148149571637, - 39.177908668615736, - 36.540808178579674, - 33.87934557067738, - 31.220056681339642, - 28.59916121500611, - 26.0656319391396, - 23.684962566627917, - 21.54283865387875, - 19.74608105610943, - 18.415173972482908, - 17.661310560147225, - 17.549231768641757, - 18.066825434334273, - 19.128266495895403, - 20.608961242438774, - 22.38389704249974, - 24.349471180167058, - 26.429034157430436, - 28.569980479883473, - 30.738290089340055, - 32.91319464293506, - 35.082792332313225, - 37.24070200667421, - 39.38363012985595, - 41.50968654529738, - 43.61729501564037, - 45.70456200971975, - 47.7689843893079, - 49.80739378790108, - 51.81605323988317, - 53.79083956849178, - 55.72746206769788, - 57.62168302688538, - 59.46951797698169, - 61.26740301274075, - 63.01232339049034, - 64.70190225605862, - 66.33445133297364, - 67.9089871705378, - 69.42521750316023, - 70.88350269523461, - 72.28479733805285, - 73.63057695268564 - ], - [ - 57.5540315849221, - 55.399543773511624, - 53.17162516109853, - 50.87138915354952, - 48.50177426012305, - 46.0680810815366, - 43.57862520872546, - 41.04554132602922, - 38.485786623745696, - 35.922403345286284, - 33.386100467624814, - 30.91717605857758, - 28.567663539609494, - 26.40323022182129, - 24.503628241731708, - 22.959390782539977, - 21.861713072362534, - 21.284181630406863, - 21.261194286011147, - 21.77489133453676, - 22.76025656728161, - 24.1252178462054, - 25.773155959067086, - 27.6181927646526, - 29.591619742818065, - 31.642298615164716, - 33.734202999565696, - 35.843112712679165, - 37.95342576845425, - 40.055452677524215, - 42.14327896638711, - 44.21316849387346, - 46.26243865021017, - 48.28872580765616, - 50.289558604251326, - 52.26216182695008, - 54.203422470863146, - 56.1099604945951, - 57.97825852406187, - 59.80481610717221, - 61.586304237177394, - 63.31970427503866, - 65.00242198699033, - 66.63237229455392, - 68.20803376856468, - 69.72847419005916, - 71.19334993862354, - 72.60288279693253, - 73.95781816698725, - 75.25936881447727 - ], - [ - 59.204236944358684, - 57.08283587509704, - 54.89185762649714, - 52.63404083093675, - 50.31419204442187, - 47.939732492889256, - 45.521352297752586, - 43.07379520410984, - 40.616797563694085, - 38.176196161576044, - 35.7851863935131, - 33.48562875498671, - 31.329124910866334, - 29.377267218677908, - 27.700015626638535, - 26.37079276076295, - 25.457234551781486, - 25.00841865585005, - 25.042623040041356, - 25.541637271252473, - 26.455168188255616, - 27.713068335876603, - 29.239329910523935, - 30.96282058326844, - 32.823128218742326, - 34.77236128831266, - 36.77448533073714, - 38.80350909448459, - 40.84133893334792, - 42.87572915323289, - 44.89851798261594, - 46.90421091036078, - 48.88890854546251, - 50.84954476841475, - 52.783386860620205, - 54.68774483509564, - 56.55983854857015, - 58.39677614045644, - 60.19560433824874, - 61.95339895531513, - 63.66737155534506, - 65.3349751496242, - 66.95399759979793, - 68.52263602266352, - 70.03954899590143, - 71.50388589383572, - 72.91529442265576, - 74.27390855385744, - 75.58031972829107, - 76.83553454553258 - ], - [ - 60.87449762044613, - 58.80011621462975, - 56.6614530345926, - 54.462778589733375, - 52.21060471817393, - 49.91421329476517, - 47.58627116177638, - 45.24353801591618, - 42.90766411902552, - 40.60605082190142, - 38.37269726119541, - 36.24886473001357, - 34.283240661685326, - 32.53108339160259, - 31.05165216423627, - 29.903278289787103, - 29.136027068136897, - 28.783186303749105, - 28.85426710661337, - 29.332527753644772, - 30.17834668313721, - 31.337019846492407, - 32.74785821676883, - 34.35180709156674, - 36.096325594478586, - 37.93762199357396, - 39.84097468472631, - 41.779928597369626, - 43.73497021295249, - 45.692066687944696, - 47.64128634222847, - 49.57560748490258, - 51.48995578419281, - 53.38047164384847, - 55.24398746350607, - 57.07768368931052, - 58.87888838732328, - 60.64498533199052, - 62.373398659499074, - 64.06162676185215, - 65.70730335807524, - 67.30826890238276, - 68.86264024237224, - 70.36887049255624, - 71.82579436327404, - 73.23265670935497, - 74.58912392278943, - 75.89527909952484, - 77.15160277430674, - 78.35894153976133 - ], - [ - 62.565337686593686, - 60.55021757880195, - 58.477113899566774, - 56.351662287777614, - 54.18183260591119, - 51.97841370352124, - 49.75555542360361, - 47.53135884600113, - 45.328489437611466, - 43.17475801471641, - 41.10356453978382, - 39.154024485604154, - 37.37050074055617, - 35.801174658073215, - 34.49528186956767, - 33.49883330704677, - 32.849144402151886, - 32.56923461365253, - 32.663745072498614, - 33.117897755617165, - 33.899995675308034, - 34.96659179813254, - 36.268618394912764, - 37.7568667648864, - 39.385914113714634, - 41.11633976744568, - 42.91552818542923, - 44.75750419889509, - 46.622209634487525, - 48.49452752887249, - 50.363256014117695, - 52.22015206979298, - 54.05910787703817, - 55.87548457277002, - 57.66560422224325, - 59.42638648923746, - 61.1551087988656, - 62.84926570534431, - 64.50650321453509, - 66.12460584247448, - 67.70151734493611, - 69.23537967159827, - 70.7245783155391, - 72.16778554610008, - 73.56399586913729, - 74.91255039407675, - 76.21314861143506, - 77.46584744697017, - 78.6710484271011, - 79.82947443598731 - ], - [ - 64.27483457150109, - 62.32932221150195, - 60.33271472546876, - 58.291793529507466, - 56.21568643991803, - 54.11628902779403, - 52.00871229235182, - 49.91173564455907, - 47.84822597849924, - 45.84545536614695, - 43.93520979039605, - 42.15353158615357, - 40.539891005110746, - 39.13556689347909, - 37.98108222550604, - 37.112740822892384, - 36.55865667676556, - 36.335055915119035, - 36.44383879027207, - 36.872191512983356, - 37.59443049779171, - 38.57554102309973, - 39.77542931786617, - 41.15291823923919, - 42.668856489921744, - 44.288124897758415, - 45.98062775948724, - 47.72150421401519, - 49.49082125038208, - 51.272973522469705, - 53.055958454374334, - 54.83064066427443, - 56.59007572008631, - 58.32893066758731, - 60.043015987458816, - 61.7289284953329, - 63.3837953098494, - 65.00510387584045, - 66.59060096203189, - 68.13824361259086, - 69.64618646300258, - 71.11279203692418, - 72.53665317162695, - 73.91661925727755, - 75.25182031525672, - 76.54168497008637, - 77.78595004341283, - 78.9846608178585, - 80.13816201202471, - 81.24708021773246 - ], - [ - 65.99906988598443, - 64.13153114626112, - 62.22001321082502, - 60.27219490395287, - 58.29804150777188, - 56.31015166809505, - 54.32410247936447, - 52.35876473430101, - 50.43654369568631, - 48.583478273890634, - 46.82910446079281, - 45.20596276778181, - 43.748616810786146, - 42.49207231824438, - 41.469568614816716, - 40.709873599430885, - 40.23442766887585, - 40.05487449564872, - 40.17157008624381, - 40.57349146086624, - 41.23960424188321, - 42.14135130282762, - 43.2456753342747, - 44.5179716390438, - 45.92453443023732, - 47.434292262846434, - 49.019825636260734, - 50.657779357645026, - 52.32882856830731, - 54.01735523356552, - 55.71096612751987, - 57.3999506714363, - 59.076746176485635, - 60.73545253115297, - 62.371418795266564, - 63.98090997539726, - 65.56085256498375, - 67.10865132376334, - 68.62206642012698, - 70.0991387506011, - 71.5381513737131, - 72.93761604629971, - 74.29627542632856, - 75.61311330261587, - 76.8873670124821, - 78.1185378736286, - 79.30639690752204, - 80.45098433490301, - 81.55260227728516, - 82.61180081832501 - ], - [ - 67.73260252629079, - 65.9494393483182, - 64.12934117049906, - 62.28062897121681, - 60.413792276080834, - 58.54175875665767, - 56.680139537649055, - 54.84741988382118, - 53.0650517769894, - 51.35738947122876, - 49.75139408526287, - 48.27602441480243, - 46.96123809413771, - 45.83656255987242, - 44.92926953215919, - 44.262298788931226, - 43.85220284154074, - 43.70747412369932, - 43.82761271517725, - 44.20316597131253, - 44.81675188408452, - 45.644849464773365, - 46.65999209571339, - 47.83297728128155, - 49.13478929701016, - 50.53806345651303, - 52.01804701578159, - 53.55310119228437, - 55.12483562472816, - 56.71797977164162, - 58.32008821542151, - 59.92115956553582, - 61.51322881231153, - 63.08997442759599, - 64.64636589457535, - 66.17836510177105, - 67.68268598816432, - 69.15661056533168, - 70.59785548052754, - 72.00448113447636, - 73.37483457705126, - 74.70751757360003, - 76.00137202723138, - 77.25547608685551, - 78.46914556111733, - 79.64193654797242, - 80.77364638283142, - 81.8643110499758, - 82.91419806787401, - 83.92379454584004 - ], - [ - 69.46893012448002, - 67.77467754694545, - 66.05023154800206, - 64.30431109748577, - 62.5476442409519, - 60.79316407648822, - 59.05616469838518, - 57.35438800099507, - 55.70800304782152, - 54.13943071429652, - 52.67296030844635, - 51.33410650208342, - 50.14867040130921, - 49.141504123145566, - 48.33503626527546, - 47.74768972721967, - 47.3923944015072, - 47.275436030019094, - 47.395861378815546, - 47.74557034454643, - 48.31008960842006, - 49.06988581278042, - 50.00198556227393, - 51.08164850785237, - 52.28388114938027, - 53.58465512645439, - 54.96177422393451, - 56.395398506683925, - 57.86827426695531, - 59.36573663328993, - 60.87555385319188, - 62.38767495946675, - 63.89393089683851, - 65.38772657463744, - 66.86374960227097, - 68.3177115347768, - 69.74612958368358, - 71.14615088357367, - 72.51541733305557, - 73.85196646488684, - 75.15416243882635, - 76.42065079825844, - 77.6503308222748, - 78.84233991230641, - 79.99604529365564, - 81.11103924781224, - 82.1871350214928, - 83.22436141725463, - 84.22295482006075, - 85.18334803672312 - ], - [ - 71.20091367156284, - 69.5983941723107, - 67.97195540365064, - 66.33049393819273, - 64.68473043332725, - 63.047340038860156, - 61.43303346592916, - 59.85856300271484, - 58.34262217679854, - 56.90560372061571, - 55.56918033266546, - 54.355679640049246, - 53.287242228213366, - 52.38478192883053, - 51.6668096571253, - 51.14822915808915, - 50.839251883162106, - 50.74459232693823, - 50.86308163076892, - 51.18777509469022, - 51.70654308652227, - 52.40305033852618, - 53.257970911544604, - 54.25026859601177, - 55.35839283179822, - 56.56128451449981, - 57.83913732961457, - 59.17390528802667, - 60.54957921226434, - 61.95227305673192, - 63.37016754310008, - 64.79335723601321, - 66.2136412381099, - 67.62428971108058, - 69.01981012829555, - 70.39572952532788, - 71.74840253083953, - 73.0748498054306, - 74.37262767174283, - 75.63972705922995, - 76.87449823169041, - 78.0755969159023, - 79.24194720966693, - 80.37271683876179, - 81.46730080166385, - 82.5253100644091, - 83.54656265069124, - 84.53107514615346, - 85.4790532556752, - 86.39088059175529 - ], - [ - 72.92114909502827, - 71.41166260522543, - 69.88395783332705, - 68.3469197952656, - 66.81106106826171, - 65.2885969618205, - 63.79346741575732, - 62.34128428840661, - 60.949179946494645, - 59.63553238418258, - 58.419545178578495, - 57.320669378832015, - 56.35787054917989, - 55.548767958244554, - 54.90870213003517, - 54.44981609318095, - 54.18025617755892, - 54.103600984055966, - 54.21860638521895, - 54.51931138943813, - 54.99549391168351, - 55.63341166571879, - 56.41672560163291, - 57.32748944598162, - 58.3470984750266, - 59.45711661574791, - 60.63993373912858, - 61.87923622466596, - 63.160298381799876, - 64.47011829923571, - 65.79742973029852, - 67.13262348373652, - 68.46760952312705, - 69.79564638649289, - 71.11115898147114, - 72.40956020657171, - 73.68708674787759, - 74.94065508836083, - 76.16774034752797, - 77.36627802947565, - 78.53458701488985, - 79.67131106735167, - 80.77537560256346, - 81.84595635813432, - 82.8824567800311, - 83.884491305508, - 84.85187218670085, - 85.78459799928558, - 86.682842469983, - 87.54694270421942 - ], - [ - 74.62227756662324, - 73.2058086874724, - 71.77619313070633, - 70.34214945097423, - 68.91382682918344, - 67.50283595473661, - 66.12222672355155, - 64.78639592971504, - 63.51090737331621, - 62.312208132394765, - 61.207229258367, - 60.212867893436915, - 59.345361316161885, - 58.619581141285636, - 58.04829561347198, - 57.64146558151181, - 57.405650028869445, - 57.34359501259247, - 57.45406304271944, - 57.73193003124539, - 58.168540051037446, - 58.752272945588984, - 59.469254473472084, - 60.304127942385556, - 61.24081038732317, - 62.263171646732665, - 63.355595718595225, - 64.50340528551578, - 65.6931485682876, - 66.91276088112541, - 68.15162117576854, - 69.40052721463809, - 70.65161296296439, - 71.89822952269385, - 73.13480745569328, - 74.35671442064367, - 75.56011819622212, - 76.74186170152126, - 77.8993537199596, - 79.03047674394905, - 80.13351167072342, - 81.20707793654957, - 82.25008699428139, - 83.26170672571762, - 84.24133434438642, - 85.18857550295448, - 86.10322760100725, - 86.98526563548249, - 87.83482930308034, - 88.65221041948301 - ], - [ - 76.29723271419228, - 74.97266060666875, - 73.6393670020394, - 72.30578304483814, - 70.98158126601557, - 69.67767259816094, - 68.40615300893741, - 67.18018707074137, - 66.01381629465241, - 64.92168239873172, - 63.91866050455242, - 63.01940502278948, - 62.237821679762156, - 61.58649192781146, - 61.07608902242697, - 60.71483553568904, - 60.50805678838726, - 60.45788096597814, - 60.56312358572653, - 60.81937303563426, - 61.21926903622103, - 61.7529423195132, - 62.408566443279895, - 63.17296444492799, - 64.0322143861701, - 64.9722068674212, - 65.97912114310543, - 67.03980125275477, - 68.14202700381975, - 69.27468516017026, - 70.42785326674475, - 71.5928123646266, - 72.76200601636795, - 73.92896230392819, - 75.08819348579551, - 76.23508539302553, - 77.36578584865073, - 78.4770987156002, - 79.56638780284318, - 80.63149288519206, - 81.6706585500262, - 82.68247545962672, - 83.66583286771723, - 84.619880794537, - 85.54400008190848, - 86.4377785550478, - 87.30099165372458, - 88.13358611251329, - 88.93566552833265, - 89.70747692262402 - ], - [ - 77.93942752536496, - 76.70472792462508, - 75.46509780110792, - 74.22859138563398, - 73.00432811029617, - 71.8024649894358, - 70.63412303213931, - 69.5112585242003, - 68.44647123225721, - 67.4527442854042, - 66.54311501613473, - 65.73028251790215, - 65.02616583768098, - 64.44143575854615, - 63.985051627058894, - 63.66384077198715, - 63.48215981002186, - 63.44167313695773, - 63.54127389152009, - 63.77715786467451, - 64.1430437576258, - 64.63051709976189, - 65.2294630089988, - 65.92854671371194, - 66.71570076436478, - 67.5785831722804, - 68.50497948300092, - 69.48313195219856, - 70.50198876390226, - 71.55137440765263, - 72.62208832638487, - 73.70594268299756, - 74.79575182907507, - 75.88528622056451, - 76.96920257994915, - 78.04296048240968, - 79.10273359786318, - 80.14532181712627, - 81.16806861128671, - 82.16878633054309, - 83.14569079823677, - 84.09734551196217, - 85.0226150121241, - 85.92062648658285, - 86.79073840584162, - 87.63251488104919, - 88.44570446259064, - 89.23022221014568, - 89.9861340315827, - 90.71364248030174 - ], - [ - 79.54288668041976, - 78.39531905525119, - 77.24601037816977, - 76.1025761397024, - 74.97353698547428, - 73.86827421468631, - 72.79694449363092, - 71.77034745542029, - 70.79974138577339, - 69.89660486626202, - 69.07234619920202, - 68.33796762306363, - 67.70369740823762, - 67.17860921210426, - 66.77025354387736, - 66.48432961894382, - 66.32442611721312, - 66.2918556733055, - 66.38560033610428, - 66.6023746495171, - 66.93680109604794, - 67.38168144930323, - 67.92833897685938, - 68.56700165967801, - 69.28719600076876, - 70.07812408720578, - 70.92900226426956, - 71.82934677165241, - 72.76919877039236, - 73.73928744978654, - 74.7311348155061, - 75.73710913690644, - 76.75043594320795, - 77.76517613099305, - 78.7761804741875, - 79.77902891299763, - 80.76996170849633, - 81.74580810249431, - 82.70391668063732, - 83.6420903112516, - 84.55852738996896, - 85.45177019196852, - 86.3206604247538, - 87.16430157141616, - 87.9820272925291, - 88.77337498344885, - 89.53806353038371, - 90.27597434188932, - 90.98713482437785, - 91.67170359695079 - ], - [ - 81.10233162271201, - 80.03860743634793, - 78.97577604943791, - 77.92097576603747, - 76.88210747513936, - 75.86777949778782, - 74.88721701386241, - 73.95013192411831, - 73.06655059566502, - 72.24659937334178, - 71.50025103937661, - 70.83703944400388, - 70.26575398568463, - 69.79412994840688, - 69.42855418213163, - 69.17380744900225, - 69.03286427076719, - 69.00676793773678, - 69.09459259815084, - 69.29349670360185, - 69.59886364988563, - 70.0045175354016, - 70.50299576582769, - 71.0858565856699, - 71.74399879897732, - 72.46797270586418, - 73.24826498786521, - 74.07554509454881, - 74.94086579832593, - 75.83581533044752, - 76.75262244830617, - 77.68421869819828, - 78.62426400155651, - 79.56714260892895, - 80.50793660994323, - 81.44238376083467, - 82.36682558956187, - 83.27815073274564, - 84.1737373853681, - 85.05139770434552, - 85.90932606856055, - 86.74605230017036, - 87.56040031182043, - 88.35145216170291, - 89.11851716145361, - 89.86110547174563, - 90.57890551461381, - 91.27176450673745, - 91.93967145196129, - 92.58274200449986 - ] - ] - }, - { - "hoverinfo": "text", - "legendgroup": "In-sample", - "marker": { - "color": "black", - "opacity": 0.5, - "symbol": 1 - }, - "mode": "markers", - "name": "In-sample", - "text": [ - "Arm 0_0
result: 86.9743 (SEM: None)
x: -1.75678
y: -4.02168", - "Arm 1_0
result: 226.197 (SEM: None)
x: -9.30013
y: -4.65468", - "Arm 2_0
result: 145.854 (SEM: None)
x: 4.88129
y: -7.92957", - "Arm 3_0
result: 149.478 (SEM: None)
x: 2.75214
y: -8.2236", - "Arm 4_0
result: 168.137 (SEM: None)
x: 9.27504
y: -7.34729", - "Arm 5_0
result: 34.9523 (SEM: None)
x: 0.590279
y: -1.39866", - "Arm 6_0
result: 32.8996 (SEM: None)
x: -2.24848
y: 1.68633", - "Arm 7_0
result: 60.5254 (SEM: None)
x: 1.43947
y: -3.62169" - ], - "type": "scatter", - "x": [ - -1.756784152239561, - -9.30012697353959, - 4.881288334727287, - 2.752141449600458, - 9.275037422776222, - 0.590278666557456, - -2.2484768683250875, - 1.4394719125089814 - ], - "xaxis": "x", - "y": [ - -4.021678697317839, - -4.654681961983442, - -7.929573114961386, - -8.22359612211585, - -7.347285468131304, - -1.3986611527486303, - 1.6863286966529074, - -3.6216880101600566 - ], - "yaxis": "y" - }, - { - "hoverinfo": "text", - "legendgroup": "In-sample", - "marker": { - "color": "black", - "opacity": 0.5, - "symbol": 1 - }, - "mode": "markers", - "name": "In-sample", - "showlegend": false, - "text": [ - "Arm 0_0
result: 86.9743 (SEM: None)
x: -1.75678
y: -4.02168", - "Arm 1_0
result: 226.197 (SEM: None)
x: -9.30013
y: -4.65468", - "Arm 2_0
result: 145.854 (SEM: None)
x: 4.88129
y: -7.92957", - "Arm 3_0
result: 149.478 (SEM: None)
x: 2.75214
y: -8.2236", - "Arm 4_0
result: 168.137 (SEM: None)
x: 9.27504
y: -7.34729", - "Arm 5_0
result: 34.9523 (SEM: None)
x: 0.590279
y: -1.39866", - "Arm 6_0
result: 32.8996 (SEM: None)
x: -2.24848
y: 1.68633", - "Arm 7_0
result: 60.5254 (SEM: None)
x: 1.43947
y: -3.62169" - ], - "type": "scatter", - "x": [ - -1.756784152239561, - -9.30012697353959, - 4.881288334727287, - 2.752141449600458, - 9.275037422776222, - 0.590278666557456, - -2.2484768683250875, - 1.4394719125089814 - ], - "xaxis": "x2", - "y": [ - -4.021678697317839, - -4.654681961983442, - -7.929573114961386, - -8.22359612211585, - -7.347285468131304, - -1.3986611527486303, - 1.6863286966529074, - -3.6216880101600566 - ], - "yaxis": "y2" - } - ], - "layout": { - "annotations": [ - { - "font": { - "size": 14 - }, - "showarrow": false, - "text": "Mean", - "x": 0.25, - "xanchor": "center", - "xref": "paper", - "y": 1, - "yanchor": "bottom", - "yref": "paper" - }, - { - "font": { - "size": 14 - }, - "showarrow": false, - "text": "Standard Error", - "x": 0.8, - "xanchor": "center", - "xref": "paper", - "y": 1, - "yanchor": "bottom", - "yref": "paper" - } - ], - "autosize": false, - "height": 450, - "hovermode": "closest", - "legend": { - "orientation": "h", - "x": 0, - "y": -0.25 - }, - "margin": { - "b": 100, - "l": 35, - "pad": 0, - "r": 35, - "t": 35 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "result" - }, - "width": 950, - "xaxis": { - "anchor": "y", - "autorange": false, - "domain": [ - 0.05, - 0.45 - ], - "exponentformat": "e", - "range": [ - -10, - 10 - ], - "tickfont": { - "size": 11 - }, - "tickmode": "auto", - "title": { - "text": "x" - }, - "type": "linear" - }, - "xaxis2": { - "anchor": "y2", - "autorange": false, - "domain": [ - 0.6, - 1 - ], - "exponentformat": "e", - "range": [ - -10, - 10 - ], - "tickfont": { - "size": 11 - }, - "tickmode": "auto", - "title": { - "text": "x" - }, - "type": "linear" - }, - "yaxis": { - "anchor": "x", - "autorange": false, - "domain": [ - 0, - 1 - ], - "exponentformat": "e", - "range": [ - -10, - 10 - ], - "tickfont": { - "size": 11 - }, - "tickmode": "auto", - "title": { - "text": "y" - }, - "type": "linear" - }, - "yaxis2": { - "anchor": "x2", - "autorange": false, - "domain": [ - 0, - 1 - ], - "exponentformat": "e", - "range": [ - -10, - 10 - ], - "tickfont": { - "size": 11 - }, - "tickmode": "auto", - "type": "linear" - } - } - }, - "text/html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "best_parameters, (means, covariances) = ax_client.get_best_parameters()\n", - "print(f'Best set of parameters: {best_parameters}')\n", - "print(f'Mean objective value: {means}')\n", - "# The covariance is only meaningful when multiple objectives are present.\n", - "\n", - "render(ax_client.get_contour_plot())\n" - ] - } - ], - "metadata": { - "fileHeader": "", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/tune_cnn_service/tune_cnn_service.ipynb b/tutorials/tune_cnn_service/tune_cnn_service.ipynb deleted file mode 100644 index eecbf4e09c0..00000000000 --- a/tutorials/tune_cnn_service/tune_cnn_service.ipynb +++ /dev/null @@ -1,921 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "customInput": null, - "originalKey": "ac61b043-8ebf-43b9-9fa5-ed9a42a184ce", - "showInput": false - }, - "source": [ - "# Tune a CNN on MNIST\n", - "\n", - "This tutorial walks through using Ax to tune two hyperparameters (learning rate and momentum) for a PyTorch CNN on the MNIST dataset trained using SGD with momentum." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415246079, - "executionStopTime": 1690415266324, - "originalKey": "c2b37f0f-3644-4367-912f-f775082f6676", - "requestMsgId": "0b481630-f0f4-436a-a205-a25aa163a364", - "showInput": true - }, - "outputs": [], - "source": [ - "import torch\n", - "\n", - "import torch.nn as nn\n", - "import torch.nn.functional as F\n", - "\n", - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from ax.service.utils.report_utils import exp_to_df\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "from ax.utils.tutorials.cnn_utils import evaluate, load_mnist, train\n", - "from torch._tensor import Tensor\n", - "from torch.utils.data import DataLoader\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415266521, - "executionStopTime": 1690415266529, - "originalKey": "4d0a27c4-a6ce-4b7d-97eb-1c229aabb375", - "requestMsgId": "fd975d25-a185-4b09-a50f-7b2bcd89f93f", - "showInput": true - }, - "outputs": [], - "source": [ - "torch.manual_seed(42)\n", - "dtype = torch.float\n", - "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "10384e51-444c-4265-b56d-ad078d05d2a1", - "showInput": false - }, - "source": [ - "## 1. Load MNIST data\n", - "First, we need to load the MNIST data and partition it into training, validation, and test sets.\n", - "\n", - "Note: this will download the dataset if necessary." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415266733, - "executionStopTime": 1690415266902, - "originalKey": "6f0949e2-1064-44b8-99c0-f6ce23df7c63", - "requestMsgId": "8ce7dd21-9afb-4379-ad11-4112b4d27f8a", - "showInput": true - }, - "outputs": [], - "source": [ - "BATCH_SIZE = 512\n", - "train_loader, valid_loader, test_loader = load_mnist(batch_size=BATCH_SIZE)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "be39e4d6-f4b1-418b-b8e1-8461db582e0c", - "showInput": false - }, - "source": [ - "## 2. Initialize Client\n", - "Create a client object to interface with Ax APIs. By default this runs locally without storage.\n", - "\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415267018, - "executionStopTime": 1690415267023, - "originalKey": "14f154fc-8109-4115-b94a-016daf85bc6f", - "requestMsgId": "7e1cd1ff-dc6e-423c-89b1-05762a7bcce2", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client = AxClient()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "f30a11d8-e7e8-4815-93a4-99b4aa531a17", - "showInput": false - }, - "source": [ - "## 3. Set up experiment\n", - "An experiment consists of a **search space** (parameters and parameter constraints) and **optimization configuration** (objective name, minimization setting, and outcome constraints)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1690415267155, - "executionStopTime": 1690415267171, - "originalKey": "c6b4fe1b-692a-499e-88c9-50dbefdcfc15", - "requestMsgId": "86409a5b-e66a-424e-8ac7-c0623a9c9ccf", - "showInput": true - }, - "outputs": [], - "source": [ - "# Create an experiment with required arguments: name, parameters, and objective_name.\n", - "ax_client.create_experiment(\n", - " name=\"tune_cnn_on_mnist\", # The name of the experiment.\n", - " parameters=[\n", - " {\n", - " \"name\": \"lr\", # The name of the parameter.\n", - " \"type\": \"range\", # The type of the parameter (\"range\", \"choice\" or \"fixed\").\n", - " \"bounds\": [1e-6, 0.4], # The bounds for range parameters. \n", - " # \"values\" The possible values for choice parameters .\n", - " # \"value\" The fixed value for fixed parameters.\n", - " \"value_type\": \"float\", # Optional, the value type (\"int\", \"float\", \"bool\" or \"str\"). Defaults to inference from type of \"bounds\".\n", - " \"log_scale\": True, # Optional, whether to use a log scale for range parameters. Defaults to False.\n", - " # \"is_ordered\" Optional, a flag for choice parameters.\n", - " },\n", - " {\n", - " \"name\": \"momentum\", \n", - " \"type\": \"range\", \n", - " \"bounds\": [0.0, 1.0], \n", - " },\n", - " ],\n", - " objectives={\"accuracy\": ObjectiveProperties(minimize=False)}, # The objective name and minimization setting.\n", - " # parameter_constraints: Optional, a list of strings of form \"p1 >= p2\" or \"p1 + p2 <= some_bound\".\n", - " # outcome_constraints: Optional, a list of strings of form \"constrained_metric <= some_bound\".\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "af441a83-50fd-4385-a380-d8ebc570c0e5", - "showInput": false - }, - "source": [ - "## 4. Define how to evaluate trials\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "c7630dfd-548b-408a-badf-b6abf79275e2", - "showInput": false - }, - "source": [ - "First we define a simple CNN class to classify the MNIST images" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415267282, - "executionStopTime": 1690415267286, - "originalKey": "e41fea0a-ae71-4e6f-8c0a-6eb6ae143fb0", - "requestMsgId": "60f14ec9-eb1b-4e88-95c5-15c91f999c90", - "showInput": true - }, - "outputs": [], - "source": [ - "class CNN(nn.Module):\n", - " \n", - " def __init__(self) -> None:\n", - " super().__init__()\n", - " self.conv1 = nn.Conv2d(1, 20, kernel_size=5, stride=1)\n", - " self.fc1 = nn.Linear(8 * 8 * 20, 64)\n", - " self.fc2 = nn.Linear(64, 10)\n", - "\n", - " def forward(self, x: Tensor) -> Tensor:\n", - " x = F.relu(self.conv1(x))\n", - " x = F.max_pool2d(x, 3, 3)\n", - " x = x.view(-1, 8 * 8 * 20)\n", - " x = F.relu(self.fc1(x))\n", - " x = self.fc2(x)\n", - " return F.log_softmax(x, dim=-1)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "8ef6bcb9-c492-4874-b8c7-a07f7e6291ad", - "showInput": false - }, - "source": [ - "In this tutorial, we want to optimize classification accuracy on the validation set as a function of the learning rate and momentum. The `train_evaluate` function takes in a parameterization (set of parameter values), computes the classification accuracy, and returns that metric. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415267388, - "executionStopTime": 1690415267395, - "originalKey": "a7e4bcc4-7494-429b-bb93-7ad84d0985af", - "requestMsgId": "5d486dbf-60cb-453d-8f24-8605f974b0a7", - "showInput": true - }, - "outputs": [], - "source": [ - "def train_evaluate(parameterization):\n", - " \"\"\"\n", - " Train the model and then compute an evaluation metric.\n", - "\n", - " In this tutorial, the CNN utils package is doing a lot of work\n", - " under the hood:\n", - " - `train` initializes the network, defines the loss function\n", - " and optimizer, performs the training loop, and returns the\n", - " trained model.\n", - " - `evaluate` computes the accuracy of the model on the\n", - " evaluation dataset and returns the metric.\n", - "\n", - " For your use case, you can define training and evaluation functions\n", - " of your choosing.\n", - "\n", - " \"\"\"\n", - " net = CNN()\n", - " net = train(\n", - " net=net,\n", - " train_loader=train_loader,\n", - " parameters=parameterization,\n", - " dtype=dtype,\n", - " device=device,\n", - " )\n", - "\n", - " return evaluate(\n", - " net=net, \n", - " data_loader=valid_loader, \n", - " dtype=dtype, \n", - " device=device,\n", - " )\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "9ab127a8-021f-4ec8-9f4e-f4256a2e322a", - "showInput": false - }, - "source": [ - "## 5. Run optimization loop\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "411a2fb4-e8a3-4414-bc17-09f0b5ba3e74", - "showInput": false - }, - "source": [ - "First we use `attach_trial` to attach a custom trial with manually-chosen parameters. This step is optional, but we include it here to demonstrate adding manual trials and to serve as a baseline model with decent performance. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1690415267533, - "executionStopTime": 1690415287786, - "originalKey": "1388ef55-5642-46ab-b297-c76a73a48aca", - "requestMsgId": "b32a4981-ad59-46e1-b701-fa5a5f118d8b", - "showInput": true - }, - "outputs": [], - "source": [ - "# Attach the trial\n", - "ax_client.attach_trial(\n", - " parameters={\"lr\": 0.000026, \"momentum\": 0.58}\n", - ")\n", - "\n", - "# Get the parameters and run the trial \n", - "baseline_parameters = ax_client.get_trial_parameters(trial_index=0)\n", - "ax_client.complete_trial(trial_index=0, raw_data=train_evaluate(baseline_parameters))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "f0f886a1-c5c8-44bb-b2fd-9fa3f140357a", - "showInput": false - }, - "source": [ - "Now we start the optimization loop.\n", - "\n", - "At each step, the user queries the client for a new trial then submits the evaluation of that trial back to the client.\n", - "\n", - "Note that Ax auto-selects an appropriate optimization algorithm based on the search space. For more advanced use cases that require a specific optimization algorithm, pass a `generation_strategy` argument into the `AxClient` constructor. Note that when Bayesian Optimization is used, generating new trials may take a few minutes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415287908, - "executionStopTime": 1690415945107, - "originalKey": "bff5d714-1ab3-43d3-b9b3-8c3a53c81dcb", - "requestMsgId": "a203534f-85dd-4dfa-9fa6-6aa46a0200a3", - "showInput": true - }, - "outputs": [], - "source": [ - "for i in range(25):\n", - " parameters, trial_index = ax_client.get_next_trial()\n", - " # Local evaluation here can be replaced with deployment to external system.\n", - " ax_client.complete_trial(trial_index=trial_index, raw_data=train_evaluate(parameters))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "ccd16059-db9f-475b-b527-75afb320e0f4", - "showInput": false - }, - "source": [ - "### How many trials can run in parallel?\n", - "By default, Ax restricts number of trials that can run in parallel for some optimization stages, in order to improve the optimization performance and reduce the number of trials that the optimization will require. To check the maximum parallelism for each optimization stage:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415945269, - "executionStopTime": 1690415945336, - "originalKey": "7182d2f9-912c-464c-b5ad-f65ce6f00017", - "requestMsgId": "4cb4ff79-e45b-4c7d-86a1-7f8007eb2c81", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client.get_max_parallelism()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "e2f429e6-2ec8-4af2-906b-52a36a53d329", - "showInput": false - }, - "source": [ - "The output of this function is a list of tuples of form (number of trials, max parallelism), so the example above means \"the max parallelism is 5 for the first 5 trials and 3 for all subsequent trials.\" This is because the first 5 trials are produced quasi-randomly and can all be evaluated at once, and subsequent trials are produced via Bayesian optimization, which converges on optimal point in fewer trials when parallelism is limited. MaxParallelismReachedException indicates that the parallelism limit has been reached –– refer to the 'Service API Exceptions Meaning and Handling' section at the end of the tutorial for handling.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "86c7aef9-993a-411e-add5-05839b00d3cf", - "showInput": false - }, - "source": [ - "### How to view all existing trials during optimization?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "executionStartTime": 1690415945532, - "executionStopTime": 1690415946199, - "originalKey": "3fbad5dc-863a-494e-b04f-d7dc1e47936c", - "requestMsgId": "905ea8b6-add0-473e-8516-5be6ad7d7658", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client.get_trials_data_frame()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "9f1ebc55-e6f2-498f-9185-569227c2f3d5", - "showInput": false - }, - "source": [ - "## 6. Retrieve best parameters\n", - "\n", - "Once it's complete, we can access the best parameters found, as well as the corresponding metric values. Note that these parameters may not necessarily be the set that yielded the highest _observed_ accuracy because Ax uses the highest model _predicted_ accuracy to choose the best parameters (see [here](https://ax.dev/api/service.html#module-ax.service.utils.best_point_mixin) for more details). Due to randomness in the data or the algorithm itself, using observed accuracy may result in choosing an outlier for the best set of parameters. Using the model predicted best will use the model to regularize the observations and reduce the likelihood of picking some outlier in the data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415946312, - "executionStopTime": 1690415949198, - "originalKey": "8fdf0023-2bf5-4cdd-93ea-a8a708dc6845", - "requestMsgId": "c0b8c25d-c6ae-476e-be23-f1b963df296b", - "showInput": true - }, - "outputs": [], - "source": [ - "best_parameters, values = ax_client.get_best_parameters()\n", - "best_parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415949308, - "executionStopTime": 1690415949313, - "originalKey": "f3eb18fc-be99-494a-aeac-e9b05a3bc182", - "requestMsgId": "ac214ea0-ea8c-46f2-a988-b42893ef6d6d", - "showInput": true - }, - "outputs": [], - "source": [ - "mean, covariance = values\n", - "mean" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "6be3b006-d090-4c73-a64a-12901d1af817", - "showInput": false - }, - "source": [ - "## 7. Plot the response surface and optimization trace\n", - "\n", - "Contour plot showing classification accuracy as a function of the two hyperparameters.\n", - "\n", - "The black squares show points that we have actually run; notice how they are clustered in the optimal region." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415949431, - "executionStopTime": 1690415953540, - "originalKey": "1beca759-2fa5-48d1-bfed-c9b13a054733", - "requestMsgId": "fa48963e-b43c-4079-81a4-079d347fe9ba", - "showInput": true - }, - "outputs": [], - "source": [ - "render(ax_client.get_contour_plot(param_x=\"lr\", param_y=\"momentum\", metric_name=\"accuracy\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "5c91d83a-9a90-4ea0-8df9-9d242d998cb3", - "showInput": false - }, - "source": [ - "Here we plot the optimization trace, showing the progression of finding the point with the optimal objective:\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415953760, - "executionStopTime": 1690415954260, - "originalKey": "3a767bdf-7ef3-48e7-b853-6fae5e9e02ff", - "requestMsgId": "043de459-6a28-4796-b237-808385c9e54c", - "showInput": true - }, - "outputs": [], - "source": [ - "render(\n", - " ax_client.get_optimization_trace()\n", - ") " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "executionStartTime": 1689617061294, - "executionStopTime": 1689617061325, - "originalKey": "09aaec9d-c178-42e2-b549-663cd17f8c3d", - "requestMsgId": "09aaec9d-c178-42e2-b549-663cd17f8c3d", - "showInput": false - }, - "source": [ - "## 8. Train CNN with best hyperparameters and evaluate on test set\n", - "Note that the resulting accuracy on the test set generally won't be the same as the maximum accuracy achieved on the evaluation set throughout optimization. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415954397, - "executionStopTime": 1690415954452, - "originalKey": "27f92d16-93c4-43bb-a37f-e7a1aeecd856", - "requestMsgId": "07eba5ce-bebe-4588-8dbb-07553efeb2b0", - "showInput": true - }, - "outputs": [], - "source": [ - "df = ax_client.get_trials_data_frame()\n", - "best_arm_idx = df.trial_index[df[\"accuracy\"] == df[\"accuracy\"].max()].values[0]\n", - "best_arm = ax_client.get_trial_parameters(best_arm_idx)\n", - "best_arm" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415954677, - "executionStopTime": 1690415954681, - "originalKey": "d0c7c645-c230-4654-a3b5-a01c61a09393", - "requestMsgId": "0a962cef-65a1-4f95-9410-37a9a8e5c5ac", - "showInput": true - }, - "outputs": [], - "source": [ - "combined_train_valid_set = torch.utils.data.ConcatDataset(\n", - " [\n", - " train_loader.dataset.dataset,\n", - " valid_loader.dataset.dataset,\n", - " ]\n", - ")\n", - "combined_train_valid_loader = torch.utils.data.DataLoader(\n", - " combined_train_valid_set,\n", - " batch_size=BATCH_SIZE,\n", - " shuffle=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690415954791, - "executionStopTime": 1690416061340, - "originalKey": "5695c78b-4c6e-4d35-ab08-6c60781bd8f1", - "requestMsgId": "e22fa0c7-88cc-4d8a-bb7d-4f96fbae9a42", - "showInput": true - }, - "outputs": [], - "source": [ - "net = train(\n", - " net=CNN(),\n", - " train_loader=combined_train_valid_loader,\n", - " parameters=best_arm,\n", - " dtype=dtype,\n", - " device=device,\n", - ")\n", - "test_accuracy = evaluate(\n", - " net=net,\n", - " data_loader=test_loader,\n", - " dtype=dtype,\n", - " device=device,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416061460, - "executionStopTime": 1690416061467, - "originalKey": "7522e229-9641-4383-a892-12c3f0a8011c", - "requestMsgId": "5552d77d-9c9d-4712-9256-2cb3da836f2c", - "showInput": true - }, - "outputs": [], - "source": [ - "print(f\"Classification Accuracy (test set): {round(test_accuracy*100, 2)}%\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "c8232211-4837-4677-b86c-bce730635fff", - "showInput": false - }, - "source": [ - "## 9. Save / reload optimization to JSON / SQL\n", - "We can serialize the state of optimization to JSON and save it to a `.json` file or save it to the SQL backend. For the former:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416061571, - "executionStopTime": 1690416061657, - "originalKey": "6afddb45-c980-4b14-b5e9-927747ea98ea", - "requestMsgId": "bab02be8-706c-4422-b97b-c222b5084bba", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client.save_to_json_file() # For custom filepath, pass `filepath` argument." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416061758, - "executionStopTime": 1690416062132, - "originalKey": "31e6f7b4-cf6b-4967-95ff-f76d03657fb2", - "requestMsgId": "f2d10848-f995-420d-88e7-9036894d7b1b", - "showInput": true - }, - "outputs": [], - "source": [ - "restored_ax_client = (\n", - " AxClient.load_from_json_file()\n", - ") # For custom filepath, pass `filepath` argument." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "122510f5-5b9e-4b1c-9f5e-8c8ea2e08848", - "showInput": false - }, - "source": [ - "To store state of optimization to an SQL backend, first follow [setup instructions](https://ax.dev/docs/storage.html#sql) on Ax website." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "bd80e639-aa0f-4dc1-8542-0caf0d674fda", - "showInput": false - }, - "source": [ - "Having set up the SQL backend, pass `DBSettings` to `AxClient` on instantiation (note that `SQLAlchemy` dependency will have to be installed – for installation, refer to [optional dependencies](https://ax.dev/docs/installation.html#optional-dependencies) on Ax website):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416062222, - "executionStopTime": 1690416062314, - "originalKey": "80eb6a2e-6564-405e-b5d4-d448e32dbf60", - "requestMsgId": "65f2307f-b800-4415-b9e7-11734a2a6889", - "showInput": true - }, - "outputs": [], - "source": [ - "from ax.storage.sqa_store.structs import DBSettings\n", - "\n", - "# URL is of the form \"dialect+driver://username:password@host:port/database\".\n", - "db_settings = DBSettings(url=\"sqlite:///foo.db\")\n", - "# Instead of URL, can provide a `creator function`; can specify custom encoders/decoders if necessary.\n", - "new_ax = AxClient(db_settings=db_settings)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "adafd3aa-b84e-4e86-9694-a29f94c6d5f3", - "showInput": false - }, - "source": [ - "When valid `DBSettings` are passed into `AxClient`, a unique experiment name is a required argument (`name`) to `ax_client.create_experiment`. The **state of the optimization is auto-saved** any time it changes (i.e. a new trial is added or completed, etc). \n", - "\n", - "To reload an optimization state later, instantiate `AxClient` with the same `DBSettings` and use `ax_client.load_experiment_from_database(experiment_name=\"my_experiment\")`." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "2f4a875b-1e18-4352-955d-576d6b01c5ed", - "showInput": false - }, - "source": [ - "# Special Cases" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "0d49e448-4768-401d-ac1d-810aee633c9a", - "showInput": false - }, - "source": [ - "**Evaluation failure**: should any optimization iterations fail during evaluation, `log_trial_failure` will ensure that the same trial is not proposed again." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416062420, - "executionStopTime": 1690416064316, - "originalKey": "faa83f1d-31da-481a-96e4-ccbc12f30b91", - "requestMsgId": "80a40c3a-76ed-4e1d-aa77-3652fadbe69f", - "showInput": true - }, - "outputs": [], - "source": [ - "_, trial_index = ax_client.get_next_trial()\n", - "ax_client.log_trial_failure(trial_index=trial_index)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "c826a96e-9431-49bd-87d7-62b517537a15", - "showInput": false - }, - "source": [ - "**Need to run many trials in parallel**: for optimal results and optimization efficiency, we strongly recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). However, if your use case needs to dispatch many trials in parallel before they are updated with data and you are running into the *\"All trials for current model have been generated, but not enough data has been observed to fit next model\"* error, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "683378e0-893b-49a1-b090-084dc394da1a", - "showInput": false - }, - "source": [ - "# Service API Exceptions Meaning and Handling\n", - "[**`DataRequiredError`**](https://ax.dev/api/exceptions.html#ax.exceptions.core.DataRequiredError): Ax generation strategy needs to be updated with more data to proceed to the next optimization model. When the optimization moves from initialization stage to the Bayesian optimization stage, the underlying BayesOpt model needs sufficient data to train. For optimal results and optimization efficiency (finding the optimal point in the least number of trials), we recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). Therefore, the correct way to handle this exception is to wait until more trial evaluations complete and log their data via `ax_client.complete_trial(...)`. \n", - "\n", - "However, if there is strong need to generate more trials before more data is available, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`. With this setting, as many trials will be generated from the initialization stage as requested, and the optimization will move to the BayesOpt stage whenever enough trials are completed." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "customInput": null, - "originalKey": "4602d41d-43aa-46d2-9ca6-392c414d0b5f", - "showInput": false - }, - "source": [ - "[**`MaxParallelismReachedException`**](https://ax.dev/api/modelbridge.html#ax.modelbridge.generation_strategy.MaxParallelismReachedException): generation strategy restricts the number of trials that can be run simultaneously (to encourage sequential optimization), and the parallelism limit has been reached. The correct way to handle this exception is the same as `DataRequiredError` – to wait until more trial evluations complete and log their data via `ax_client.complete_trial(...)`.\n", - " \n", - "In some cases higher parallelism is important, so `enforce_sequential_optimization=False` kwarg to AxClient allows the user to suppress limiting of parallelism. It's also possible to override the default parallelism setting for all stages of the optimization by passing `choose_generation_strategy_kwargs` to `ax_client.create_experiment`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416064534, - "executionStopTime": 1690416064564, - "originalKey": "d62e6cfd-5127-450e-80b7-d0edcaf97d6c", - "requestMsgId": "cb9a17f9-5734-41c6-9018-c0635c61d8b3", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client = AxClient()\n", - "ax_client.create_experiment(\n", - " parameters=[\n", - " {\"name\": \"x\", \"type\": \"range\", \"bounds\": [-5.0, 10.0]},\n", - " {\"name\": \"y\", \"type\": \"range\", \"bounds\": [0.0, 15.0]},\n", - " ],\n", - " # Sets max parallelism to 10 for all steps of the generation strategy.\n", - " choose_generation_strategy_kwargs={\"max_parallelism_override\": 10},\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "customInput": null, - "customOutput": null, - "executionStartTime": 1690416064679, - "executionStopTime": 1690416064702, - "originalKey": "bc15d2cf-8ddc-4d66-83b6-7469cd15aa4d", - "requestMsgId": "996c4bd3-b296-4cf9-8f95-cbf488639c2f", - "showInput": true - }, - "outputs": [], - "source": [ - "ax_client.get_max_parallelism() # Max parallelism is now 10 for all stages of the optimization." - ] - } - ], - "metadata": { - "fileHeader": "", - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tutorials/visualizations/visualizations.ipynb b/tutorials/visualizations/visualizations.ipynb deleted file mode 100644 index 80d23f712ef..00000000000 --- a/tutorials/visualizations/visualizations.ipynb +++ /dev/null @@ -1,410 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "originalKey": "e23719d9-8a24-4208-8439-34e7b8270c79" - }, - "source": [ - "# Visualizations\n", - "\n", - "This tutorial illustrates the core visualization utilities available in Ax." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "in_colab = 'google.colab' in sys.modules\n", - "if in_colab:\n", - " %pip install ax-platform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1627652821316, - "executionStopTime": 1627652822868, - "hidden_ranges": [], - "originalKey": "101b0e96-5b3d-48c5-bf3c-677b4ddf90c7", - "requestMsgId": "c0dd9aaf-896d-4ea9-912f-1e58d301d114" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "from ax.modelbridge.cross_validation import cross_validate\n", - "from ax.plot.contour import interact_contour\n", - "from ax.plot.diagnostic import interact_cross_validation\n", - "from ax.plot.scatter import interact_fitted, plot_objective_vs_constraints, tile_fitted\n", - "from ax.plot.slice import plot_slice\n", - "from ax.service.ax_client import AxClient, ObjectiveProperties\n", - "from ax.utils.measurement.synthetic_functions import hartmann6\n", - "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", - "import plotly.io as pio\n", - "\n", - "init_notebook_plotting()\n", - "if in_colab:\n", - " pio.renderers.default = \"colab\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "8449378f-890e-4e76-8d73-ce2aa4120a69", - "showInput": true - }, - "source": [ - "## 1. Create experiment and run optimization\n", - "\n", - "The vizualizations require an experiment object and a model fit on the evaluated data. The routine below is a copy of the Service API tutorial, so the explanation here is omitted. Retrieving the experiment and model objects for each API paradigm is shown in the respective tutorials" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "f7544e06-6c6a-4841-b659-3be6a198a948" - }, - "source": [ - "#### 1a. Define search space and evaluation function" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1627652824829, - "executionStopTime": 1627652824877, - "hidden_ranges": [], - "originalKey": "28f6cb76-828f-445d-bdda-ba057c87dcd0", - "requestMsgId": "7495e7e2-1025-4292-b3aa-e953739cef3e" - }, - "outputs": [], - "source": [ - "noise_sd = 0.1\n", - "param_names = [f\"x{i+1}\" for i in range(6)] # x1, x2, ..., x6\n", - "\n", - "\n", - "def noisy_hartmann_evaluation_function(parameterization):\n", - " x = np.array([parameterization.get(p_name) for p_name in param_names])\n", - " noise1, noise2 = np.random.normal(0, noise_sd, 2)\n", - "\n", - " return {\n", - " \"hartmann6\": (hartmann6(x) + noise1, noise_sd),\n", - " \"l2norm\": (np.sqrt((x**2).sum()) + noise2, noise_sd),\n", - " }" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "17a51543-298e-47d4-bcd9-33459fe1169e" - }, - "source": [ - "#### 1b. Create Experiment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1627654956712, - "executionStopTime": 1627654956823, - "hidden_ranges": [], - "originalKey": "6fca889c-a4ff-42ef-a669-6eb8803de89c", - "requestMsgId": "905eff52-e649-4bd5-abf0-ff69c1549852" - }, - "outputs": [], - "source": [ - "ax_client = AxClient()\n", - "ax_client.create_experiment(\n", - " name=\"test_visualizations\",\n", - " parameters=[\n", - " {\n", - " \"name\": p_name,\n", - " \"type\": \"range\",\n", - " \"bounds\": [0.0, 1.0],\n", - " }\n", - " for p_name in param_names\n", - " ],\n", - " objectives={\"hartmann6\": ObjectiveProperties(minimize=True)},\n", - " outcome_constraints=[\"l2norm <= 1.25\"],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "code_folding": [], - "hidden_ranges": [], - "originalKey": "ab892f7c-4830-4c1d-b476-ec1078ec3faf", - "showInput": false - }, - "source": [ - "#### 1c. Run the optimization and fit a GP on all data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1627654642967, - "executionStopTime": 1627654862819, - "hidden_ranges": [], - "originalKey": "7269a5ba-45c8-4acf-ac83-a5ea8a52d6c1", - "requestMsgId": "c7a4dea8-fd6d-4e1a-84de-ad973ede0cd7" - }, - "outputs": [], - "source": [ - "for i in range(20):\n", - " parameters, trial_index = ax_client.get_next_trial()\n", - " # Local evaluation here can be replaced with deployment to external system.\n", - " ax_client.complete_trial(\n", - " trial_index=trial_index, raw_data=noisy_hartmann_evaluation_function(parameters)\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "72f4d3e7-fa04-43d0-8451-ded292e705df" - }, - "source": [ - "## 2. Contour plots\n", - "\n", - "The plot below shows the response surface for `hartmann6` metric as a function of the `x1`, `x2` parameters.\n", - "\n", - "The other parameters are fixed in the middle of their respective ranges, which in this example is 0.5 for all of them." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1627654870209, - "executionStopTime": 1627654871972, - "hidden_ranges": [], - "originalKey": "843df85c-965d-4a83-9fe1-696225d81c0f", - "requestMsgId": "4a643541-867c-46b6-868d-64337920c2a3" - }, - "outputs": [], - "source": [ - "# this could alternately be done with `ax.plot.contour.plot_contour`\n", - "render(ax_client.get_contour_plot(param_x=\"x1\", param_y=\"x2\", metric_name=\"hartmann6\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "1de0991a-d99b-4d07-acec-4a2eb4a20a73" - }, - "source": [ - "#### 2a. Interactive contour plot\n", - "\n", - "The plot below allows toggling between different pairs of parameters to view the contours." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "code_folding": [], - "executionStartTime": 1627652959076, - "executionStopTime": 1627652982911, - "hidden_ranges": [], - "originalKey": "4af9f166-0163-4ff5-9ecb-f534a69efe3d", - "requestMsgId": "2de6919e-92e1-4425-8d90-b117e9f41855" - }, - "outputs": [], - "source": [ - "model = ax_client.generation_strategy.model\n", - "render(interact_contour(model=model, metric_name=\"hartmann6\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "1ff470bb-5daf-4179-b814-01cc80dafe3e" - }, - "source": [ - "## 3. Tradeoff plots\n", - "This plot illustrates the tradeoffs achievable for 2 different metrics. The plot takes the x-axis metric as input (usually the objective) and allows toggling among all other metrics for the y-axis.\n", - "\n", - "This is useful to get a sense of the pareto frontier (i.e. what is the best objective value achievable for different bounds on the constraint)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1627652996903, - "executionStopTime": 1627652997294, - "originalKey": "57023556-0293-44ef-91d6-81b911ff41d3", - "requestMsgId": "10b72ecc-a019-42a1-8358-18f14927ef75" - }, - "outputs": [], - "source": [ - "render(plot_objective_vs_constraints(model, \"hartmann6\", rel=False))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "f2d4fae3-2140-45d0-8142-49b91548ca59" - }, - "source": [ - "## 4. Cross-validation plots\n", - "\n", - "CV plots are useful to check how well the model predictions calibrate against the actual measurements. If all points are close to the dashed line, then the model is a good predictor of the real data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1627397871181, - "executionStopTime": 1627397871526, - "originalKey": "f770f8a9-466c-4fd2-b268-3a0d166482f3", - "requestMsgId": "d6242810-a316-4e2b-b9dd-dd4c56b725b7" - }, - "outputs": [], - "source": [ - "cv_results = cross_validate(model)\n", - "render(interact_cross_validation(cv_results))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "40f8ee99-fee8-4fd9-9cff-a7aa230dd5ae" - }, - "source": [ - "## 5. Slice plots\n", - "\n", - "Slice plots show the metric outcome as a function of one parameter while fixing the others. They serve a similar function as contour plots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1627397880415, - "executionStopTime": 1627397880572, - "originalKey": "aed7c789-a024-48c6-86f7-502e571e298f", - "requestMsgId": "a7238d82-f6bb-441d-badc-673dedaa101e" - }, - "outputs": [], - "source": [ - "render(plot_slice(model, \"x2\", \"hartmann6\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "originalKey": "4975848f-31d4-4ed0-976c-39e3b7474fb7" - }, - "source": [ - "## 6. Tile plots\n", - "\n", - "Tile plots are useful for viewing the effect of each arm." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "executionStartTime": 1627397890236, - "executionStopTime": 1627397890496, - "originalKey": "2ed10008-8adf-4ce2-8334-04a4f2a3e895", - "requestMsgId": "33b593e6-2ec8-4bc4-b6e3-6586ddfb15c5" - }, - "outputs": [], - "source": [ - "render(interact_fitted(model, rel=False))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fix for plots that are not rendering\n", - "\n", - "In certain environments like Google Colab or remote setups, plots may not render. If this is the case, we recommend using the below workaround which overrides the default renderer in plotly. The below cell changes the renderer to \"jupyterlab\" for this tutorial, but you can find the right renderer for your use case by calling `pio.renderers`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import plotly.io as pio\n", - "pio.renderers.default = \"jupyterlab\"\n", - "\n", - "render(ax_client.get_contour_plot(param_x=\"x1\", param_y=\"x2\", metric_name=\"hartmann6\"))" - ] - } - ], - "metadata": { - "custom": { - "cells": [], - "metadata": { - "custom": { - "cells": [], - "metadata": { - "fileHeader": "", - "fileUid": "05c52a71-d835-47cc-a717-85b584211970", - "isAdHoc": false, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 - }, - "fileHeader": "", - "fileUid": "ca754573-88fc-4f06-9300-97ea8ea25f89", - "indentAmount": 2, - "isAdHoc": false, - "kernelspec": { - "display_name": "python3", - "name": "python3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 - }, - "indentAmount": 2, - "kernelspec": { - "display_name": "python3", - "name": "python3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/website/sidebars.js b/website/sidebars.js index 59391b7c014..8d7d88454e1 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -9,18 +9,20 @@ const tutorials = () => { const allTutorialMetadata = require('./tutorials.json'); - const tutorialsSidebar = [{ - type: 'category', - label: 'Tutorials', - collapsed: false, - items: [ - { - type: 'doc', - id: 'tutorials/index', - label: 'Overview', - }, - ], - },]; + const tutorialsSidebar = [ + { + type: 'category', + label: 'Tutorials', + collapsed: false, + items: [ + { + type: 'doc', + id: 'tutorials/index', + label: 'Overview', + }, + ], + }, + ]; for (var category in allTutorialMetadata) { const categoryItems = allTutorialMetadata[category]; const items = []; @@ -43,10 +45,7 @@ const tutorials = () => { export default { docs: { - "Introduction": ["why-ax"], - "Getting Started": ["installation", "api", "glossary"], - "Algorithms": ["bayesopt", "banditopt"], - "Components": ["core", "trial-evaluation", "data", "models", "storage"], + Introduction: ['why-ax', 'intro-to-ae', 'intro-to-bo'], }, tutorials: tutorials(), }; diff --git a/website/tutorials.json b/website/tutorials.json index 353fd4505f6..21f59d2a340 100644 --- a/website/tutorials.json +++ b/website/tutorials.json @@ -1,88 +1,18 @@ { - "API Comparison": [ - { - "id": "gpei_hartmann_service", - "title": "[RECOMMENDED] Service API" - }, - { - "id": "gpei_hartmann_loop", - "title": "Loop API" - }, - { - "id": "gpei_hartmann_developer", - "title": "Developer API" - } - ], - "Deep Dives": [ - { - "id": "visualizations", - "title": "Visualizations" - }, - { - "id": "generation_strategy", - "title": "Generation Strategy" - }, - { - "id": "scheduler", - "title": "Scheduler" - }, - { - "id": "modular_botax", - "title": "Modular `BoTorchGenerator`" - } - ], - "Bayesian Optimization": [ - { - "id": "tune_cnn_service", - "title": "Hyperparameter Optimization for PyTorch" - }, - { - "id": "submitit", - "title": "Hyperparameter Optimization on SLURM via SubmitIt" - }, - { - "id": "multi_task", - "title": "Multi-Task Modeling" - }, - { - "id": "multiobjective_optimization", - "title": "Multi-Objective Optimization" - }, - { - "id": "saasbo", - "title": "High-Dimensional Bayesian Optimization with Sparse Axis-Aligned Subspaces (SAASBO)" - }, - { - "id": "saasbo_nehvi", - "title": "Fully Bayesian, High-Dimensional, Multi-Objective Optimization" - }, - { - "id": "sebo", - "title": "Sparsity Exploration Bayesian Optimization (SEBO)" - }, - { - "id": "early_stopping", - "title": "Trial-Level Early Stopping" - }, - { - "id": "gss", - "title": "Global Stopping (Experiment-Level Early Stopping)" - } - ], - "Field Experiments": [ - { - "id": "factorial", - "title": "Bandit Optimization" - }, - { - "id": "human_in_the_loop", - "title": "Human-in-the-Loop Optimization" - } - ], - "Integrating External Strategies": [ - { - "id": "external_generation_node", - "title": "RandomForest with ExternalGenerationNode" - } - ] -} + "Basic usage": [ + { + "id": "ask_tell", + "title": "Ask-tell Optimization with Ax" + }, + { + "id": "human_in_the_loop", + "title": "Ask-tell Optimization in a Human-in-the-loop Setting" + } + ], + "Advanced features": [ + { + "id": "early_stopping", + "title": "Ask-tell experimentation with early stopping" + } + ] + }