ライブラリのロード

earth がインストールできなかったので、省略。

データを読み込む

まず、データを読みこみます。 なお、この Dyslexia 研究は、課題数が32あり、それぞれ5列、合計160列が wide フォーマットで並んでいます。 そこで、今回は、“Gender”, “Nativelang”, “Age”, “Accuracy1”,“Accuracy2”,“Accuracy3”, “Accuracy4”, “Dyslexia” だけの小さい列に変換します。


─ Column specification ─────────────────────────────────
cols(
  .default = col_double(),
  Gender = col_character(),
  Nativelang = col_character(),
  Otherlang = col_character(),
  Dyslexia = col_character()
)
ℹ Use `spec()` for the full column specifications.

3644行のデータがあるため、Lynam 論文に準じて、最初の960行をトレーニング (data_train)、最後の504行を評価用データ (dataset_val) とします。 なお、これらのデータフレーム名は命名規則から外れています。 これは、Lynam のスクリプトを使うためです。

data_train <- head(dfDyslexia, n = 960)
dataset_val <- tail(dfDyslexia, n = 504)

ここから先は、 Lynam 2021 の公開スクリプトです。

named list()
named list()

モデルを作成します。 モデルの形式は、ロジスティック回帰と同じものを他でも使用します。

formula.model <- formula(Dyslexia ~ Gender + Age + Nativelang + Accuracy1 + Accuracy2 + Accuracy3 + Accuracy4) ### 変更

ここからの処理はよくわかっていません。 (論文に解説あり)

Youroutcomevariable <- as.character(formula.model)[2]

# standardized data sets
standardized <-recipe(formula.model , data = data_train) %>% 
  step_center(all_numeric()) %>%
  step_scale(all_numeric())

trained_rec <- prep(standardized, training = data_train)
data_train <- bake(trained_rec, new_data = data_train)
dataset_val  <- bake(trained_rec, new_data = dataset_val)

sampling <- NULL

control <- trainControl(method = "repeatedcv", number = 10, repeats = 5,classProbs = TRUE,summaryFunction = twoClassSummary, sampling = sampling, savePredictions = TRUE)
control_Rand_Search <- trainControl(method = "repeatedcv", number = 10, repeats = 5,classProbs = TRUE,summaryFunction = twoClassSummary, sampling = sampling, savePredictions = TRUE, search = "random")

ここから、機械学習のモデルが始まります。

Gradient Boostring Machine

[1] 2

サポートベクトルマシン

maximum number of iterations reached 9.502783e-05 9.502853e-05maximum number of iterations reached -0.0002255292 -0.0002255606maximum number of iterations reached -0.002695565 -0.002720055maximum number of iterations reached 0.002072091 0.002069458maximum number of iterations reached -0.001121508 -0.001122645maximum number of iterations reached -0.001119334 -0.001126948maximum number of iterations reached -0.0001536952 -0.0001537048maximum number of iterations reached 0.0001141421 0.0001141407maximum number of iterations reached 0.0003130765 0.0003106552maximum number of iterations reached 0.0005358206 0.0005357766maximum number of iterations reached 0.0008216644 0.0008214435maximum number of iterations reached -0.0001309493 -0.000131172maximum number of iterations reached 0.002494445 0.002479268maximum number of iterations reached -0.0007364565 -0.0007367778maximum number of iterations reached 0.002099402 0.002090513maximum number of iterations reached 0.0006322921 0.0006319634maximum number of iterations reached 0.0006905693 0.0006901287maximum number of iterations reached -0.001325546 -0.001328148maximum number of iterations reached -0.0004059815 -0.0004072894maximum number of iterations reached -0.001642367 -0.001646857maximum number of iterations reached 0.00053236 0.0005250767maximum number of iterations reached 0.003804107 0.003748217maximum number of iterations reached 9.889092e-05 9.887588e-05maximum number of iterations reached 0.0004190175 0.000418971maximum number of iterations reached -0.0009509561 -0.0009518194maximum number of iterations reached 0.0002258012 0.0002237839maximum number of iterations reached 0.0003916012 0.0003915504maximum number of iterations reached -0.0004470307 -0.0004473791maximum number of iterations reached -3.088593e-05 -3.088681e-05maximum number of iterations reached 0.001513386 0.00151136maximum number of iterations reached -0.0004178953 -0.0004179548maximum number of iterations reached 0.0002098228 0.0002097582maximum number of iterations reached 0.0006920102 0.0006911726maximum number of iterations reached -0.0007807923 -0.0007812536maximum number of iterations reached -6.022296e-05 -6.02435e-05maximum number of iterations reached -4.357046e-05 -4.357811e-05maximum number of iterations reached -0.0001142834 -0.0001142909maximum number of iterations reached -0.0008857669 -0.0008887435maximum number of iterations reached 0.0003919843 0.0003919559maximum number of iterations reached -0.001160847 -0.001164808maximum number of iterations reached -0.00100782 -0.001008832maximum number of iterations reached 0.001291366 0.001287594maximum number of iterations reached 8.274714e-05 8.274658e-05maximum number of iterations reached -0.000497298 -0.0004975394maximum number of iterations reached -0.001045813 -0.00104668maximum number of iterations reached -5.766703e-05 -5.767154e-05maximum number of iterations reached 8.947205e-05 8.947277e-05maximum number of iterations reached -7.821593e-05 -7.821553e-05maximum number of iterations reached 0.0001947386 0.0001946012maximum number of iterations reached -0.0001980682 -0.0001980811maximum number of iterations reached 9.507482e-05 9.507648e-05maximum number of iterations reached 0.0003766311 0.0003738821maximum number of iterations reached 0.0003694218 0.0003694227maximum number of iterations reached 0.001140843 0.001139005maximum number of iterations reached 3.787936e-05 3.782225e-05maximum number of iterations reached 0.001463962 0.001459912maximum number of iterations reached -0.0001517378 -0.0001517434maximum number of iterations reached -0.0006507626 -0.0006553848maximum number of iterations reached 0.0009179252 0.0009176097maximum number of iterations reached 0.0003681555 0.0003680894maximum number of iterations reached 0.0002040897 0.0002040031maximum number of iterations reached 0.0004081872 0.0004080748maximum number of iterations reached 4.112706e-05 4.102779e-05maximum number of iterations reached 0.00475536 0.004655375maximum number of iterations reached 0.0002321174 0.0002320796maximum number of iterations reached 0.0002463186 0.0002442678maximum number of iterations reached 0.001674809 0.001670905maximum number of iterations reached -0.0002667025 -0.0002667781maximum number of iterations reached -0.0004262183 -0.0004263937maximum number of iterations reached 0.0008267489 0.0008254888maximum number of iterations reached 0.00108255 0.001081664maximum number of iterations reached 0.0001190728 0.0001190666maximum number of iterations reached 0.0005765193 0.0005764884maximum number of iterations reached 0.0004206573 0.0004202605maximum number of iterations reached 0.0004662449 0.0004661634maximum number of iterations reached 0.001032431 0.0010304maximum number of iterations reached 7.051952e-05 7.052102e-05maximum number of iterations reached 0.0005881174 0.0005874717maximum number of iterations reached -0.0002368468 -0.0002368725maximum number of iterations reached 0.0002248912 0.0002248551maximum number of iterations reached 0.0001880108 0.0001877977maximum number of iterations reached 4.179901e-05 4.179893e-05maximum number of iterations reached -2.914817e-05 -2.915412e-05maximum number of iterations reached 0.0006464504 0.0006461396maximum number of iterations reached 0.000730722 0.0007296424maximum number of iterations reached 9.460022e-05 9.460174e-05maximum number of iterations reached 2.463216e-05 2.463109e-05maximum number of iterations reached 6.990778e-05 6.990729e-05maximum number of iterations reached 0.0009363575 0.0009310914maximum number of iterations reached 0.001024666 0.001022357maximum number of iterations reached 0.00104598 0.001043906maximum number of iterations reached 5.30658e-05 5.306665e-05maximum number of iterations reached 0.0005130141 0.0005129608maximum number of iterations reached -0.003138128 -0.00317219maximum number of iterations reached 0.000614054 0.0006077219maximum number of iterations reached -4.719835e-05 -4.719876e-05maximum number of iterations reached -0.0002034872 -0.0002034883maximum number of iterations reached -0.0003648754 -0.0003654238maximum number of iterations reached 0.0001785523 0.0001785542maximum number of iterations reached -0.001836824 -0.001842867maximum number of iterations reached -0.0007659951 -0.0007681834maximum number of iterations reached -9.330346e-05 -9.33174e-05maximum number of iterations reached -0.0004305807 -0.00043079maximum number of iterations reached 0.0008264734 0.0008242611maximum number of iterations reached 1.815569e-05 1.813862e-05maximum number of iterations reached 0.002533237 0.00251896maximum number of iterations reached -0.0002062842 -0.0002062942maximum number of iterations reached -0.0003413858 -0.0003419992maximum number of iterations reached 8.869711e-05 8.869516e-05maximum number of iterations reached 0.0003349541 0.0003348904maximum number of iterations reached 0.000656967 0.0006566874maximum number of iterations reached -0.0002409115 -0.0002413322maximum number of iterations reached 0.001341712 0.001339614maximum number of iterations reached -0.000170163 -0.0001701651maximum number of iterations reached -0.001360943 -0.001373316maximum number of iterations reached 0.0001257374 0.000125737maximum number of iterations reached 0.0002632126 0.0002630188maximum number of iterations reached -0.001336696 -0.001352085maximum number of iterations reached 0.0001300447 0.0001300303maximum number of iterations reached -4.592935e-05 -4.592998e-05maximum number of iterations reached -0.001429865 -0.001441558maximum number of iterations reached -0.0005941707 -0.0005942938maximum number of iterations reached 0.0002320604 0.0002320089maximum number of iterations reached 0.0002470041 0.0002465436maximum number of iterations reached -7.797683e-05 -7.798073e-05maximum number of iterations reached -0.0002372494 -0.0002372764maximum number of iterations reached 0.000197497 0.0001956998maximum number of iterations reached -0.0004010257 -0.0004012229maximum number of iterations reached -0.0005423057 -0.000542799maximum number of iterations reached 0.0001538369 0.0001538049maximum number of iterations reached -0.001536368 -0.001543405maximum number of iterations reached 0.001239011 0.001219454maximum number of iterations reached -0.0004873295 -0.0004875133maximum number of iterations reached 0.0009116676 0.00091074maximum number of iterations reached 0.0001174803 0.0001172205maximum number of iterations reached 0.001318119 0.001316493maximum number of iterations reached -0.0001639224 -0.0001640266maximum number of iterations reached 0.0004421544 0.0004389905maximum number of iterations reached -0.000994372 -0.0009948528maximum number of iterations reached -0.0005778957 -0.0005793799maximum number of iterations reached 0.0002715672 0.0002695258maximum number of iterations reached 0.001008461 0.001007723maximum number of iterations reached -0.0007712342 -0.000771772maximum number of iterations reached 0.0001230963 0.0001225405maximum number of iterations reached -0.0001646382 -0.0001646771maximum number of iterations reached -0.002236799 -0.00225405maximum number of iterations reached 0.001065401 0.001064426maximum number of iterations reached -0.000308528 -0.0003089098maximum number of iterations reached -5.439387e-05 -5.454086e-05maximum number of iterations reached -0.0001352126 -0.0001352147maximum number of iterations reached 0.0004150156 0.0004145613maximum number of iterations reached 0.001882372 0.001873256maximum number of iterations reached 4.301454e-05 4.2912e-05maximum number of iterations reached -0.0001086205 -0.0001086215maximum number of iterations reached 0.0001712229 0.0001712238maximum number of iterations reached 0.001590994 0.001565446maximum number of iterations reached 0.001816661 0.001813959maximum number of iterations reached 0.00148403 0.001482628maximum number of iterations reached 0.0002191395 0.0002191297maximum number of iterations reached -0.0001011545 -0.0001011591maximum number of iterations reached 0.003246263 0.003230187maximum number of iterations reached 0.0001428638 0.0001428511maximum number of iterations reached 0.0002951661 0.0002925672maximum number of iterations reached 0.001249052 0.001245309maximum number of iterations reached -0.0003497433 -0.0003497801maximum number of iterations reached 4.337624e-05 4.32647e-05maximum number of iterations reached 0.0003497453 0.0003496893maximum number of iterations reached 0.001238938 0.001232876maximum number of iterations reached 0.001122916 0.001104255maximum number of iterations reached 0.000238358 0.0002383582maximum number of iterations reached 0.0003274305 0.0003273444maximum number of iterations reached 0.0001375848 0.0001366783maximum number of iterations reached -0.001291909 -0.00129306maximum number of iterations reached 0.000443349 0.0004432519maximum number of iterations reached 8.114971e-05 8.115077e-05maximum number of iterations reached -0.0001053044 -0.0001053357maximum number of iterations reached 0.001555767 0.001553019maximum number of iterations reached 0.00115406 0.001149672maximum number of iterations reached 0.003239235 0.003202771maximum number of iterations reached 0.0006239328 0.0006235796maximum number of iterations reached 0.001718016 0.001711096maximum number of iterations reached 0.0009252476 0.0009243009maximum number of iterations reached -0.0003443373 -0.0003444392maximum number of iterations reached 0.0003093238 0.0003092395maximum number of iterations reached 0.001029274 0.001028788maximum number of iterations reached 0.001242809 0.001239936maximum number of iterations reached 0.0003585599 0.0003585018maximum number of iterations reached -0.001012817 -0.001014745maximum number of iterations reached -0.0004774748 -0.000477603maximum number of iterations reached 0.001042194 0.001032169maximum number of iterations reached 7.280185e-05 7.247162e-05maximum number of iterations reached -0.0005976216 -0.0005979076maximum number of iterations reached 0.0003855557 0.0003853812maximum number of iterations reached -6.888426e-05 -6.889346e-05maximum number of iterations reached 0.001364856 0.001359117maximum number of iterations reached 0.0003050038 0.0003049098maximum number of iterations reached -0.0001541489 -0.0001542621maximum number of iterations reached 0.0006525083 0.0006524956maximum number of iterations reached 0.000370782 0.0003707629maximum number of iterations reached 0.001885494 0.001874264maximum number of iterations reached 0.0003310868 0.0003310776maximum number of iterations reached -8.767526e-05 -8.767585e-05maximum number of iterations reached 0.002639086 0.002619836maximum number of iterations reached 6.782903e-05 6.782178e-05maximum number of iterations reached -0.0001132575 -0.0001132576maximum number of iterations reached -0.0002541995 -0.0002561151maximum number of iterations reached -0.0004732073 -0.0004733507maximum number of iterations reached -7.003802e-05 -7.004001e-05maximum number of iterations reached 0.000566593 0.0005621221maximum number of iterations reached 0.0007024706 0.0007022543maximum number of iterations reached -0.0009412002 -0.0009419414maximum number of iterations reached -1.320033e-05 -1.320825e-05maximum number of iterations reached 0.003673241 0.003646936maximum number of iterations reached 0.0004006597 0.0004006075maximum number of iterations reached -0.0001105831 -0.0001110763maximum number of iterations reached -0.001172711 -0.001175003maximum number of iterations reached -0.0001514156 -0.0001514413maximum number of iterations reached 9.510423e-06 9.503999e-06maximum number of iterations reached -0.0005468874 -0.0005475196maximum number of iterations reached 0.002832301 0.0028026maximum number of iterations reached 0.0001858888 0.0001858763maximum number of iterations reached -0.0007348064 -0.000735601maximum number of iterations reached 8.413963e-05 8.376976e-05maximum number of iterations reached -0.0004473892 -0.0004474665maximum number of iterations reached -0.0006095577 -0.0006099356maximum number of iterations reached 0.0006837257 0.0006836026maximum number of iterations reached -0.0006003366 -0.0006010175maximum number of iterations reached 0.0006736033 0.0006728806maximum number of iterations reached -0.001682613 -0.001685712maximum number of iterations reached 4.081182e-05 4.081182e-05maximum number of iterations reached -0.0004930659 -0.0004935632maximum number of iterations reached 0.00125257 0.001249999maximum number of iterations reached -7.356964e-05 -7.358399e-05maximum number of iterations reached 3.108581e-05 3.104263e-05maximum number of iterations reached -0.0008623506 -0.0008630585maximum number of iterations reached 2.657512e-05 2.65411e-05maximum number of iterations reached 0.0002695869 0.0002695143maximum number of iterations reached -0.0009084852 -0.0009117928maximum number of iterations reached 0.000129652 0.0001296542maximum number of iterations reached -0.001023564 -0.001028608maximum number of iterations reached -1.512916e-05 -1.512873e-05maximum number of iterations reached 0.0007770974 0.0007761685maximum number of iterations reached -0.001003754 -0.00100439maximum number of iterations reached -0.0005773699 -0.0005780196maximum number of iterations reached -0.0001361638 -0.0001361886maximum number of iterations reached -5.855841e-05 -5.85674e-05maximum number of iterations reached 0.0001825566 0.0001825575maximum number of iterations reached -1.175641e-05 -1.175656e-05maximum number of iterations reached -0.0002512605 -0.0002514753maximum number of iterations reached -1.639874e-05 -1.642206e-05maximum number of iterations reached 0.0007111802 0.0007109583maximum number of iterations reached -0.0001260268 -0.0001260313maximum number of iterations reached 0.001266014 0.001258519maximum number of iterations reached 0.000795931 0.0007958818maximum number of iterations reached -0.0002046424 -0.0002047599maximum number of iterations reached 7.703824e-05 7.698332e-05maximum number of iterations reached 0.0005252474 0.0005251627maximum number of iterations reached -0.0002074096 -0.0002074282maximum number of iterations reached -2.921216e-05 -2.927088e-05maximum number of iterations reached 0.0003325793 0.0003325815maximum number of iterations reached 0.000293813 0.0002937867maximum number of iterations reached -0.0008338744 -0.0008436625maximum number of iterations reached 0.0004838516 0.0004829809maximum number of iterations reached -0.0002479321 -0.0002480138maximum number of iterations reached 0.000435176 0.0004345079maximum number of iterations reached 0.0007354023 0.0007350102maximum number of iterations reached 0.0002831931 0.0002807868maximum number of iterations reached 0.002442942 0.002432795maximum number of iterations reached 0.0002565819 0.0002564163maximum number of iterations reached 0.0006937934 0.0006846466maximum number of iterations reached 0.0005900848 0.000590029maximum number of iterations reached 0.0009502999 0.0009492469maximum number of iterations reached 2.299604e-05 2.296365e-05maximum number of iterations reached 0.0002749037 0.0002748985maximum number of iterations reached -0.0008305066 -0.0008308488maximum number of iterations reached 0.0008586922 0.0008579278maximum number of iterations reached 0.001042851 0.001039225maximum number of iterations reached 1.625051e-05 1.623158e-05maximum number of iterations reached 0.001355655 0.001353433maximum number of iterations reached 0.0001295609 0.0001295371maximum number of iterations reached -1.68389e-05 -1.683914e-05maximum number of iterations reached 0.0002362413 0.0002361672maximum number of iterations reached 3.723029e-05 3.714553e-05maximum number of iterations reached 0.00121345 0.001211167maximum number of iterations reached 0.001575754 0.001567394maximum number of iterations reached -0.0006393762 -0.0006403077maximum number of iterations reached -0.0002186979 -0.0002187332maximum number of iterations reached 0.001125668 0.001122759maximum number of iterations reached -0.0007579878 -0.0007582713maximum number of iterations reached -0.0009551056 -0.0009590013maximum number of iterations reached 0.0003984768 0.0003983049maximum number of iterations reached -0.0005834847 -0.0005853894maximum number of iterations reached -0.0002738406 -0.0002740723maximum number of iterations reached -0.000167255 -0.0001673645maximum number of iterations reached -1.928091e-05 -1.928162e-05maximum number of iterations reached -0.0004656889 -0.0004660921maximum number of iterations reached 0.0001251269 0.0001251249maximum number of iterations reached 0.0002249504 0.000224886maximum number of iterations reached -0.001613178 -0.001618269maximum number of iterations reached -0.001436783 -0.001443404maximum number of iterations reached -2.254863e-05 -2.256994e-05maximum number of iterations reached -0.002037566 -0.00204839maximum number of iterations reached 0.0002038311 0.0002038098maximum number of iterations reached -4.105971e-05 -4.115597e-05maximum number of iterations reached 0.0005007866 0.0005007675maximum number of iterations reached -0.0001884564 -0.0001884592maximum number of iterations reached 0.0001856541 0.0001856337maximum number of iterations reached -0.001003115 -0.001003841maximum number of iterations reached 0.0004693176 0.0004692264maximum number of iterations reached -5.223421e-05 -5.224409e-05maximum number of iterations reached 0.0004770331 0.00047692maximum number of iterations reached 5.199337e-05 5.199285e-05maximum number of iterations reached 0.0001168812 0.0001163239maximum number of iterations reached 0.003186087 0.003154797maximum number of iterations reached 0.000734619 0.00073375maximum number of iterations reached 0.0002704499 0.0002704412maximum number of iterations reached -0.0002461624 -0.0002461895maximum number of iterations reached -0.000959429 -0.0009601107maximum number of iterations reached -0.0009090266 -0.0009110455maximum number of iterations reached 4.265437e-05 4.265008e-05maximum number of iterations reached -0.001282745 -0.001287605maximum number of iterations reached 0.0006602964 0.0006601954maximum number of iterations reached 0.0006644801 0.000662988maximum number of iterations reached 0.001458336 0.001455352maximum number of iterations reached -0.000483913 -0.0004843417maximum number of iterations reached 0.001804443 0.00179426maximum number of iterations reached -0.002129459 -0.002136613maximum number of iterations reached 0.001002538 0.001002324maximum number of iterations reached -0.0003506616 -0.0003514208maximum number of iterations reached 0.0003136097 0.0003134364maximum number of iterations reached 0.0005568051 0.0005551024maximum number of iterations reached 0.0001103305 0.0001103281maximum number of iterations reached 0.0006964298 0.0006958419maximum number of iterations reached 0.0001464087 0.0001463945maximum number of iterations reached -0.001137728 -0.001145298maximum number of iterations reached 0.001185921 0.001184221maximum number of iterations reached -0.0001061164 -0.0001066433maximum number of iterations reached 0.0001972803 0.0001972726maximum number of iterations reached -8.185168e-05 -8.188287e-05maximum number of iterations reached 0.0007016798 0.0007016532maximum number of iterations reached 0.0002469475 0.0002469171maximum number of iterations reached 6.509734e-05 6.508294e-05maximum number of iterations reached 0.001285137 0.001284848maximum number of iterations reached 0.0005938409 0.000593491maximum number of iterations reached 0.001020934 0.001013873maximum number of iterations reached 0.001910682 0.00190787maximum number of iterations reached -0.0004273284 -0.0004274171maximum number of iterations reached 0.0003697214 0.000367202maximum number of iterations reached 0.000427178 0.000427174maximum number of iterations reached -0.000816653 -0.0008171032maximum number of iterations reached 0.0005887546 0.0005819248maximum number of iterations reached -0.0003477809 -0.0003479142maximum number of iterations reached -0.0002423794 -0.0002423916maximum number of iterations reached 0.003178382 0.003159237maximum number of iterations reached -0.0005251945 -0.0005253731maximum number of iterations reached -0.0001352823 -0.0001359522maximum number of iterations reached 0.003444736 0.003412899maximum number of iterations reached 0.0007515169 0.0007508236maximum number of iterations reached 0.001500365 0.001497312maximum number of iterations reached -0.0006017496 -0.0006022071maximum number of iterations reached -0.0005483729 -0.0005485456maximum number of iterations reached -0.0001998643 -0.0001999045maximum number of iterations reached 0.0005515971 0.0005515477maximum number of iterations reached -0.000764619 -0.000765589maximum number of iterations reached 0.0001547526 0.0001537029maximum number of iterations reached 0.0002143704 0.0002143053maximum number of iterations reached 0.001763819 0.001760865maximum number of iterations reached 0.001109153 0.00110702maximum number of iterations reached 4.460447e-05 4.44961e-05maximum number of iterations reached 2.012989e-05 2.013027e-05maximum number of iterations reached -0.001258163 -0.0012604maximum number of iterations reached -0.0004784974 -0.0004785833maximum number of iterations reached -0.0002198644 -0.0002199705maximum number of iterations reached 0.0001773891 0.000177375maximum number of iterations reached 0.000471511 0.0004711899maximum number of iterations reached 0.000161892 0.000160803maximum number of iterations reached 0.0003127159 0.0003126683maximum number of iterations reached 0.0001970132 0.0001969273maximum number of iterations reached -2.792597e-05 -2.793154e-05maximum number of iterations reached 0.0001776413 0.0001775974maximum number of iterations reached 0.0003976574 0.0003973459maximum number of iterations reached 0.0003415069 0.0003413404maximum number of iterations reached -0.0009770686 -0.0009783783maximum number of iterations reached 0.001684515 0.001666974maximum number of iterations reached 0.0002075659 0.0002075592maximum number of iterations reached 0.0008208481 0.0008195555maximum number of iterations reached -6.255054e-05 -6.255075e-05maximum number of iterations reached -0.001196075 -0.00119664maximum number of iterations reached 0.001226548 0.001219773maximum number of iterations reached 0.0001555969 0.000155596maximum number of iterations reached -9.262859e-05 -9.262986e-05maximum number of iterations reached -0.0005322154 -0.0005338085maximum number of iterations reached 2.475076e-05 2.472502e-05maximum number of iterations reached 0.0007630384 0.0007627313maximum number of iterations reached -0.0002221635 -0.0002221721maximum number of iterations reached -0.0003677317 -0.0003706847maximum number of iterations reached 0.0006445227 0.0006443592maximum number of iterations reached 0.0006758413 0.0006754918maximum number of iterations reached 0.0001587485 0.0001578015maximum number of iterations reached -8.65946e-05 -8.661541e-05maximum number of iterations reached -0.0005969612 -0.000597815maximum number of iterations reached 3.062535e-05 3.056255e-05maximum number of iterations reached -0.0006785894 -0.0006795077maximum number of iterations reached -0.0007386908 -0.0007400233maximum number of iterations reached 6.06087e-05 6.039923e-05maximum number of iterations reached 3.689181e-05 3.689275e-05maximum number of iterations reached 7.21418e-05 7.213757e-05maximum number of iterations reached 0.001053272 0.001052023maximum number of iterations reached -7.122983e-05 -7.123935e-05maximum number of iterations reached 3.347114e-05 3.345408e-05maximum number of iterations reached 0.0004086747 0.0004086827maximum number of iterations reached -0.000546676 -0.000546858maximum number of iterations reached -0.0009266402 -0.0009271987maximum number of iterations reached 0.001032268 0.001028423maximum number of iterations reached 0.0008742838 0.0008739424maximum number of iterations reached 0.0002740417 0.0002740217maximum number of iterations reached -0.0008650695 -0.0008652587maximum number of iterations reached -0.0009003673 -0.0009019357maximum number of iterations reached 0.0006256053 0.0006255174maximum number of iterations reached 0.0001521579 0.0001521421maximum number of iterations reached -1.746835e-05 -1.746837e-05maximum number of iterations reached -0.001539431 -0.001545431maximum number of iterations reached 0.0006592132 0.0006590058maximum number of iterations reached 7.611239e-05 7.610911e-05maximum number of iterations reached -0.0001553282 -0.0001553286maximum number of iterations reached -5.717732e-05 -5.718411e-05maximum number of iterations reached -4.212563e-05 -4.213525e-05maximum number of iterations reached -0.000240581 -0.0002407043maximum number of iterations reached 0.0002917621 0.0002917579maximum number of iterations reached 0.000345002 0.0003447056maximum number of iterations reached 0.0003548024 0.0003547045maximum number of iterations reached -0.001103398 -0.001104912maximum number of iterations reached -0.0001798414 -0.0001798799maximum number of iterations reached -0.0002213634 -0.0002215122maximum number of iterations reached 0.0005876274 0.0005875761maximum number of iterations reached 0.000784127 0.0007835959maximum number of iterations reached -0.0001534235 -0.0001535315maximum number of iterations reached 5.342502e-05 5.342495e-05maximum number of iterations reached -0.0005489344 -0.0005491101maximum number of iterations reached -0.0001778048 -0.0001786336maximum number of iterations reached 0.001766947 0.001764381maximum number of iterations reached -0.00047066 -0.0004707853maximum number of iterations reached -4.394668e-05 -4.39776e-05maximum number of iterations reached 0.0008334638 0.0008326239maximum number of iterations reached 0.001044243 0.001042897maximum number of iterations reached 0.0003926826 0.0003889361maximum number of iterations reached -0.0002217663 -0.0002218297maximum number of iterations reached 0.0002960559 0.0002959029maximum number of iterations reached 0.0002848001 0.0002822025maximum number of iterations reached 0.003771626 0.003722907maximum number of iterations reached -0.0003229182 -0.0003229995maximum number of iterations reached 1.553823e-05 1.552111e-05maximum number of iterations reached -0.0003523032 -0.0003528192maximum number of iterations reached 0.0001578689 0.0001578587maximum number of iterations reached 1.205478e-05 1.204375e-05maximum number of iterations reached -2.473863e-05 -2.474269e-05maximum number of iterations reached 0.001076543 0.00105457maximum number of iterations reached 7.175443e-05 7.175432e-05maximum number of iterations reached -0.0001648552 -0.0001648756maximum number of iterations reached 0.0003177412 0.0003177151maximum number of iterations reached 0.0003619529 0.0003618552maximum number of iterations reached 0.001155943 0.001154548maximum number of iterations reached -0.0003422877 -0.0003424982maximum number of iterations reached -0.0005931812 -0.0005937066maximum number of iterations reached -0.001351615 -0.001354205maximum number of iterations reached -0.00016411 -0.0001641172maximum number of iterations reached -0.00274517 -0.002787713maximum number of iterations reached 0.0007662067 0.0007659332maximum number of iterations reached -0.001552648 -0.001556383maximum number of iterations reached -0.001325121 -0.001326181maximum number of iterations reached -0.0009704589 -0.0009747416maximum number of iterations reached 0.001623069 0.001618798maximum number of iterations reached -0.0006475329 -0.0006485687maximum number of iterations reached -0.0002889798 -0.0002890137maximum number of iterations reached -0.000490966 -0.0004914maximum number of iterations reached 7.295502e-05 7.294964e-05maximum number of iterations reached -0.0001979829 -0.0001992901maximum number of iterations reached 0.00134116 0.001339666maximum number of iterations reached 0.0008757863 0.0008736089maximum number of iterations reached 0.0006519142 0.0006515895maximum number of iterations reached -0.002144527 -0.002151706maximum number of iterations reached -5.733588e-05 -5.734791e-05maximum number of iterations reached 0.0007867147 0.000786528maximum number of iterations reached 0.0003291437 0.0003288588maximum number of iterations reached 0.001884047 0.001883138maximum number of iterations reached -0.0005475525 -0.0005477955maximum number of iterations reached 0.0001753936 0.000174425maximum number of iterations reached 6.405537e-05 6.405368e-05maximum number of iterations reached 0.001567259 0.001563955maximum number of iterations reached 0.00142776 0.001405349maximum number of iterations reached -0.000342297 -0.0003424507maximum number of iterations reached 0.0004633819 0.0004631324maximum number of iterations reached 0.003364256 0.003336141maximum number of iterations reached 0.0003030233 0.0003029501maximum number of iterations reached 0.0008523495 0.0008394549maximum number of iterations reached 0.0006576016 0.0006574814maximum number of iterations reached 5.559099e-05 5.558729e-05maximum number of iterations reached 0.0001294167 0.0001287552maximum number of iterations reached -0.0006130202 -0.0006137014maximum number of iterations reached 0.000261331 0.0002612422maximum number of iterations reached 0.0003288934 0.0003256636maximum number of iterations reached 0.0005155989 0.0005148324maximum number of iterations reached -0.0008747265 -0.0008755288maximum number of iterations reached 0.0001117891 0.0001113062maximum number of iterations reached 0.0003260001 0.0003256701maximum number of iterations reached 0.0004925897 0.0004922531maximum number of iterations reached 0.0003102695 0.0003072686maximum number of iterations reached -0.0005290309 -0.0005290824maximum number of iterations reached -0.000573968 -0.0005742898maximum number of iterations reached 6.544166e-05 6.544362e-05maximum number of iterations reached 0.0001531901 0.0001531758maximum number of iterations reached 0.0007795627 0.0007789146maximum number of iterations reached -0.001093079 -0.001094395maximum number of iterations reached -0.0004153931 -0.0004156101maximum number of iterations reached 0.0002843376 0.0002842356maximum number of iterations reached 0.0006683907 0.0006680891maximum number of iterations reached 0.0006296294 0.0006278957maximum number of iterations reached 0.0001194853 0.0001187585maximum number of iterations reached 0.000139731 0.0001397233maximum number of iterations reached -0.0001464596 -0.0001464959maximum number of iterations reached -6.618483e-05 -6.618493e-05maximum number of iterations reached -0.0001540873 -0.000154128maximum number of iterations reached -8.306158e-05 -8.306207e-05maximum number of iterations reached -0.001576802 -0.001582972maximum number of iterations reached -2.627795e-05 -2.62791e-05maximum number of iterations reached 4.804081e-05 4.803642e-05maximum number of iterations reached 0.0007051723 0.0007037704maximum number of iterations reached 0.000404724 0.0004045179maximum number of iterations reached 4.176937e-05 4.176927e-05maximum number of iterations reached 0.002452835 0.002435232maximum number of iterations reached 0.0002507223 0.0002507245maximum number of iterations reached 0.0002596682 0.0002596189maximum number of iterations reached 0.001325723 0.001318886maximum number of iterations reached 0.0003837808 0.0003785261maximum number of iterations reached 0.0005757819 0.0005757059maximum number of iterations reached -0.0002586631 -0.0002586677maximum number of iterations reached 8.868583e-05 8.862974e-05maximum number of iterations reached -0.0001192292 -0.0001192314maximum number of iterations reached 0.001734778 0.001731283maximum number of iterations reached 0.001138171 0.001125932maximum number of iterations reached 0.001412962 0.001411104maximum number of iterations reached -0.000171889 -0.0001719048maximum number of iterations reached 0.0001450003 0.0001442248maximum number of iterations reached -0.0003224883 -0.0003225009maximum number of iterations reached -1.509806e-05 -1.509796e-05maximum number of iterations reached -0.0009972899 -0.001017332maximum number of iterations reached 0.0004205309 0.0004202554maximum number of iterations reached -0.0003904537 -0.0003906284maximum number of iterations reached 0.0002075895 0.0002058541maximum number of iterations reached 0.001644042 0.001638023maximum number of iterations reached -0.0001983628 -0.0001983813maximum number of iterations reached 0.0004975006 0.0004974407maximum number of iterations reached 0.000905259 0.0009043599maximum number of iterations reached 6.410465e-05 6.387684e-05maximum number of iterations reached 0.0004118878 0.0004113178maximum number of iterations reached -0.0009168619 -0.0009175941maximum number of iterations reached 0.0002905538 0.0002879631maximum number of iterations reached -0.0004366132 -0.0004366436maximum number of iterations reached -9.606741e-05 -9.607972e-05maximum number of iterations reached 0.001232271 0.001230854maximum number of iterations reached 0.0003255264 0.0003254739maximum number of iterations reached -0.001246041 -0.001248195maximum number of iterations reached 0.0005102358 0.0005097568maximum number of iterations reached 2.368747e-05 2.364867e-05maximum number of iterations reached -0.000611775 -0.0006123801maximum number of iterations reached 0.0001669313 0.0001668998maximum number of iterations reached 0.001584182 0.001579863maximum number of iterations reached 0.000407507 0.0004072075maximum number of iterations reached 0.0001030369 0.0001025249maximum number of iterations reached 0.0008088662 0.000808544maximum number of iterations reached -0.002384871 -0.002395827maximum number of iterations reached 0.001397728 0.001396144maximum number of iterations reached 0.0003525284 0.0003523872maximum number of iterations reached 0.001760613 0.001756746maximum number of iterations reached 0.0005098424 0.0005094222maximum number of iterations reached 4.304435e-05 4.30446e-05maximum number of iterations reached -0.0002542145 -0.0002546278maximum number of iterations reached -0.001189192 -0.001190217maximum number of iterations reached -3.091892e-05 -3.092137e-05maximum number of iterations reached 0.001446665 0.001435746maximum number of iterations reached -0.002096555 -0.002109612maximum number of iterations reached -0.0002322471 -0.0002322607maximum number of iterations reached 0.0008757363 0.0008745916maximum number of iterations reached 9.577472e-05 9.577081e-05maximum number of iterations reached 0.0002756742 0.0002733584maximum number of iterations reached -7.767349e-05 -7.767768e-05maximum number of iterations reached 7.287576e-05 7.287366e-05maximum number of iterations reached -5.214372e-05 -5.215438e-05maximum number of iterations reached 0.0004980442 0.0004979436maximum number of iterations reached 0.001021909 0.001019982maximum number of iterations reached -0.0001631647 -0.0001641513maximum number of iterations reached 0.0004689059 0.0004688692maximum number of iterations reached 0.0001595509 0.0001595427maximum number of iterations reached 0.0002097318 0.000209369maximum number of iterations reached -0.0003535976 -0.0003536521maximum number of iterations reached -2.292506e-05 -2.29621e-05maximum number of iterations reached 0.0008933088 0.0008928904maximum number of iterations reached 0.005306839 0.005221587maximum number of iterations reached -0.0005126318 -0.0005128064maximum number of iterations reached 0.0004469992 0.0004461094maximum number of iterations reached 0.001351251 0.001349797maximum number of iterations reached -0.0001232011 -0.0001232109maximum number of iterations reached -0.0003867613 -0.0003883941maximum number of iterations reached 0.0003449116 0.0003448342maximum number of iterations reached 0.0002318643 0.0002318205maximum number of iterations reached -9.66229e-06 -9.671669e-06maximum number of iterations reached -0.0005529852 -0.0005530638maximum number of iterations reached 7.314756e-05 7.314334e-05maximum number of iterations reached 0.0003738164 0.0003724855maximum number of iterations reached 0.001562843 0.001560153maximum number of iterations reached -0.0006549556 -0.0006553132maximum number of iterations reached 0.0002925504 0.0002908405maximum number of iterations reached -0.0008627867 -0.0008634909maximum number of iterations reached -0.0002625824 -0.0002628061maximum number of iterations reached 0.00124926 0.001234959maximum number of iterations reached -0.0001396775 -0.0001396946maximum number of iterations reached 0.001558473 0.001555884maximum number of iterations reached 2.249514e-05 2.247048e-05maximum number of iterations reached 0.0006785473 0.000678349maximum number of iterations reached 0.0002076817 0.0002076549maximum number of iterations reached 0.0003481043 0.0003464459maximum number of iterations reached -0.0008211097 -0.0008224584maximum number of iterations reached 0.0006899842 0.0006870768maximum number of iterations reached -0.0003358252 -0.0003358771maximum number of iterations reached 0.0006619015 0.0006613667maximum number of iterations reached 0.0009700244 0.0009693533maximum number of iterations reached 0.0001352095 0.0001351923maximum number of iterations reached 0.0001197571 0.0001197479maximum number of iterations reached -5.918959e-05 -5.920852e-05maximum number of iterations reached 0.001388904 0.001362878maximum number of iterations reached 0.00078476 0.0007843559maximum number of iterations reached 0.001098424 0.00109705maximum number of iterations reached 0.0002028289 0.00020282maximum number of iterations reached 0.001266534 0.001256555maximum number of iterations reached -0.0001522478 -0.0001522513maximum number of iterations reached 0.002323528 0.002312001maximum number of iterations reached -0.0004985677 -0.0005015957maximum number of iterations reached 0.0006680208 0.00066792maximum number of iterations reached -0.001406496 -0.001408155maximum number of iterations reached 0.001617385 0.001598373maximum number of iterations reached -0.0003996284 -0.0003997105maximum number of iterations reached -0.0002333241 -0.0002333731maximum number of iterations reached 1.052468e-05 1.051805e-05maximum number of iterations reached 0.001475978 0.001473086maximum number of iterations reached 9.088865e-05 9.08867e-05maximum number of iterations reached 0.0003289179 0.0003257072maximum number of iterations reached 0.000440361 0.0004402971maximum number of iterations reached 0.0001658401 0.0001658328maximum number of iterations reached 0.0002517703 0.0002498266maximum number of iterations reached 0.001341979 0.001341121maximum number of iterations reached 0.0006236141 0.0006229553maximum number of iterations reached 1.851451e-05 1.848976e-05maximum number of iterations reached 0.0005646346 0.0005645717maximum number of iterations reached -0.0008120085 -0.0008124664maximum number of iterations reached 0.0008119942 0.0008097738maximum number of iterations reached 0.0006060329 0.0006058159maximum number of iterations reached 1.334715e-05 1.333366e-05maximum number of iterations reached 0.0007732118 0.0007729005maximum number of iterations reached 3.1994e-05 3.199247e-05maximum number of iterations reached 0.0003562514 0.0003562207maximum number of iterations reached -0.001603726 -0.001611525maximum number of iterations reached 4.397979e-05 4.385908e-05maximum number of iterations reached 0.0002503206 0.0002502313maximum number of iterations reached 0.0008237055 0.0008229255maximum number of iterations reached -0.0006448495 -0.0006456044maximum number of iterations reached 0.0001308487 0.0001308498maximum number of iterations reached 0.001113894 0.001110653maximum number of iterations reached 0.001221985 0.001219905maximum number of iterations reached 0.001317563 0.001316146maximum number of iterations reached -0.0005107665 -0.0005112171maximum number of iterations reached -1.381369e-05 -1.381377e-05maximum number of iterations reached 0.001062159 0.001059782maximum number of iterations reached -0.0003641919 -0.0003643126maximum number of iterations reached -0.002124239 -0.002143033maximum number of iterations reached -3.28768e-05 -3.287656e-05maximum number of iterations reached 0.001299903 0.001287101maximum number of iterations reached 0.0003862687 0.0003861674maximum number of iterations reached 0.001935687 0.00192272maximum number of iterations reached 0.001228368 0.001226917maximum number of iterations reached 0.0002511088 0.0002510494maximum number of iterations reached 0.0007521321 0.000752067maximum number of iterations reached 0.0004730566 0.000472946maximum number of iterations reached -0.000470663 -0.0004711056maximum number of iterations reached 0.0008301955 0.000829951maximum number of iterations reached -0.0006564174 -0.0006565726maximum number of iterations reached 0.0001264374 0.000125931maximum number of iterations reached 0.0009454409 0.0009452281maximum number of iterations reached 0.003231931 0.003203284maximum number of iterations reached 0.002040589 0.002010536maximum number of iterations reached 0.0005070432 0.000506887maximum number of iterations reached 0.0005373554 0.0005311429maximum number of iterations reached 0.002929137 0.002907082maximum number of iterations reached -0.0008327891 -0.000832961maximum number of iterations reached 0.0003530818 0.0003529005maximum number of iterations reached -0.001003074 -0.001003492maximum number of iterations reached 4.077287e-05 4.0667e-05maximum number of iterations reached 0.0002934822 0.0002934668maximum number of iterations reached 0.001031562 0.001030872maximum number of iterations reached -0.0002206066 -0.0002219992maximum number of iterations reached 0.001510668 0.001507234maximum number of iterations reached -0.0001048042 -0.0001048243maximum number of iterations reached 2.644759e-05 2.640146e-05maximum number of iterations reached 0.0002720836 0.0002720525maximum number of iterations reached -0.0001029324 -0.0001029729maximum number of iterations reached 0.0001619836 0.0001610379maximum number of iterations reached 0.0009708672 0.0009701229maximum number of iterations reached -0.0001238654 -0.0001239424maximum number of iterations reached 6.117214e-05 6.098345e-05maximum number of iterations reached -0.0008879578 -0.000888636maximum number of iterations reached -0.0006753313 -0.0006762033maximum number of iterations reached 0.0004595137 0.0004533508maximum number of iterations reached -0.001507867 -0.001510085maximum number of iterations reached 0.0009362866 0.0009351666maximum number of iterations reached 8.416536e-05 8.41615e-05maximum number of iterations reached 0.0003840243 0.0003833148maximum number of iterations reached 0.001610443 0.001606081maximum number of iterations reached -0.0001890727 -0.0001891308maximum number of iterations reached -0.0007937939 -0.0007942633maximum number of iterations reached 0.002083339 0.002069421maximum number of iterations reached -0.0001256615 -0.0001256674maximum number of iterations reached 0.0003083047 0.000307829maximum number of iterations reached -0.001356445 -0.001358463maximum number of iterations reached 0.002558979 0.002544086maximum number of iterations reached 0.001087623 0.001086323maximum number of iterations reached -0.0002752805 -0.0002760835maximum number of iterations reached -0.0018441 -0.001851401maximum number of iterations reached 0.001097799 0.001092414maximum number of iterations reached 1.153923e-05 1.153921e-05maximum number of iterations reached -0.001720619 -0.001731251maximum number of iterations reached 0.0005568714 0.0005568526maximum number of iterations reached -0.001066013 -0.001066883maximum number of iterations reached -0.0005551251 -0.0005561836maximum number of iterations reached -2.979855e-05 -2.979903e-05maximum number of iterations reached 0.001137343 0.001136598maximum number of iterations reached 0.001471747 0.001460984maximum number of iterations reached 0.0002189404 0.0002189259maximum number of iterations reached 0.002497719 0.002480871maximum number of iterations reached 0.0003023902 0.0003017699maximum number of iterations reached 0.0008538457 0.0008535034maximum number of iterations reached 1.16138e-05 1.161378e-05maximum number of iterations reached 0.000421648 0.0004214922maximum number of iterations reached 0.0002840254 0.0002839486maximum number of iterations reached 0.000964137 0.0009629145maximum number of iterations reached 0.0002195456 0.0002195017maximum number of iterations reached 0.002407096 0.002388529maximum number of iterations reached 0.0002495415 0.0002494857maximum number of iterations reached 5.406383e-05 5.39718e-05maximum number of iterations reached 0.00113848 0.001136628maximum number of iterations reached 0.0001324627 0.000132405maximum number of iterations reached 0.0001966281 0.0001965773maximum number of iterations reached -0.0002852595 -0.0002853508maximum number of iterations reached 0.0003188899 0.0003160025maximum number of iterations reached -0.0003681221 -0.0003683774maximum number of iterations reached 0.0004151647 0.0004149987maximum number of iterations reached 0.0001977116 0.0001977096maximum number of iterations reached 0.000929761 0.0009285208maximum number of iterations reached -0.0002736014 -0.0002736269maximum number of iterations reached -0.0002988037 -0.0002989839maximum number of iterations reached -0.000115875 -0.0001159153maximum number of iterations reached 0.0008365798 0.0008339938maximum number of iterations reached 9.835218e-06 9.827442e-06maximum number of iterations reached 0.000518798 0.0005179013maximum number of iterations reached 7.833429e-05 7.82994e-05maximum number of iterations reached 0.0008659903 0.0008656274maximum number of iterations reached 0.0003623115 0.0003617193maximum number of iterations reached -0.001714975 -0.001723976maximum number of iterations reached 0.001788758 0.001778362maximum number of iterations reached 0.0002930538 0.0002930112maximum number of iterations reached 0.0004479823 0.0004477372maximum number of iterations reached -0.0002956367 -0.0002956515maximum number of iterations reached 0.0003814572 0.0003811935maximum number of iterations reached 0.0004403757 0.0004399053maximum number of iterations reached 0.00184263 0.001832871maximum number of iterations reached 0.0009717058 0.0009705364maximum number of iterations reached 0.0008210818 0.0008158491maximum number of iterations reached -7.730438e-05 -7.730422e-05maximum number of iterations reached 0.0007095684 0.000708765maximum number of iterations reached -0.000152572 -0.0001526633maximum number of iterations reached -5.972145e-05 -5.97292e-05maximum number of iterations reached -0.0001634149 -0.0001634162maximum number of iterations reached 0.0001877357 0.0001875141maximum number of iterations reached 0.001416711 0.001415419maximum number of iterations reached 0.001394692 0.001391972maximum number of iterations reached 0.0005384128 0.0005359081maximum number of iterations reached -0.0005785045 -0.0005788374maximum number of iterations reached 0.000164601 0.0001645676maximum number of iterations reached -0.000405549 -0.0004081953maximum number of iterations reached 0.003510159 0.00349504maximum number of iterations reached 1.894939e-05 1.894861e-05maximum number of iterations reached -2.685475e-05 -2.688081e-05maximum number of iterations reached 0.001499753 0.001497029maximum number of iterations reached -0.0003881865 -0.0003882062maximum number of iterations reached 0.000113528 0.0001129753maximum number of iterations reached 7.495612e-05 7.49477e-05maximum number of iterations reached -0.0003588338 -0.0003588765maximum number of iterations reached 0.0005128086 0.0005126754maximum number of iterations reached 0.0007176301 0.0007167868maximum number of iterations reached 6.944948e-05 6.922009e-05maximum number of iterations reached 0.0005030653 0.0005029593maximum number of iterations reached 0.0008220373 0.0008216565maximum number of iterations reached 0.002508302 0.00248447maximum number of iterations reached -0.0001649485 -0.0001649814maximum number of iterations reached 1.982351e-05 1.97983e-05maximum number of iterations reached 0.0004324726 0.0004324422maximum number of iterations reached 0.0004202806 0.0004200382maximum number of iterations reached 1.392492e-05 1.390849e-05maximum number of iterations reached 1.083671e-05 1.083709e-05maximum number of iterations reached 0.0003337718 0.000333699maximum number of iterations reached 0.0006405547 0.0006404279maximum number of iterations reached -0.0002950451 -0.0002951466maximum number of iterations reached -3.286148e-05 -3.286351e-05maximum number of iterations reached 8.034722e-05 8.034585e-05maximum number of iterations reached 0.0005927732 0.0005924968maximum number of iterations reached -4.556802e-05 -4.556869e-05maximum number of iterations reached 0.0004846719 0.0004841829maximum number of iterations reached 0.0005099723 0.0005099607maximum number of iterations reached 0.001023701 0.001022898maximum number of iterations reached 0.0002169391 0.0002168784maximum number of iterations reached 0.00118758 0.001185177maximum number of iterations reached 0.0002616422 0.0002616398maximum number of iterations reached -0.001218172 -0.001220225maximum number of iterations reached 1.089955e-05 1.08901e-05maximum number of iterations reached 0.001013727 0.001012852maximum number of iterations reached 0.001299108 0.00129614maximum number of iterations reached 0.0006438041 0.0006437878maximum number of iterations reached 0.001468666 0.00146517maximum number of iterations reached -0.001318499 -0.001325628maximum number of iterations reached 0.0008139923 0.0007991989maximum number of iterations reached 0.0004059902 0.000405921maximum number of iterations reached -0.0002424047 -0.000242415maximum number of iterations reached 0.0009453894 0.0009366529maximum number of iterations reached 0.001258181 0.001256806maximum number of iterations reached -0.0003062072 -0.0003083067maximum number of iterations reached 0.002478639 0.002462931maximum number of iterations reached -4.328453e-05 -4.328424e-05maximum number of iterations reached 2.17434e-05 2.173474e-05maximum number of iterations reached 0.004314965 0.004254811maximum number of iterations reached 7.843885e-05 7.843365e-05maximum number of iterations reached 0.0002102164 0.0002093437maximum number of iterations reached -0.001217806 -0.00122005maximum number of iterations reached 0.0004894404 0.0004890909maximum number of iterations reached 0.001590041 0.001587402maximum number of iterations reached -0.0002298778 -0.0002299915maximum number of iterations reached 0.0002972567 0.0002942377maximum number of iterations reached 0.0009891863 0.0009846544maximum number of iterations reached 0.0001172762 0.0001172579maximum number of iterations reached 0.001396717 0.001395416maximum number of iterations reached 0.0005821316 0.0005814585maximum number of iterations reached 2.447327e-05 2.443429e-05maximum number of iterations reached 0.0004017118 0.0004016831maximum number of iterations reached 0.0001101655 0.0001101401maximum number of iterations reached 0.0004291975 0.000424649maximum number of iterations reached 0.001450423 0.001448292maximum number of iterations reached -0.0003316271 -0.0003318525maximum number of iterations reached 0.000649601 0.0006491637maximum number of iterations reached 0.0009600537 0.0009594234maximum number of iterations reached 0.0004706692 0.0004705451maximum number of iterations reached 0.00010182 0.0001018033maximum number of iterations reached 5.886459e-05 5.872246e-05maximum number of iterations reached 0.0006452482 0.0006450724maximum number of iterations reached 0.002242879 0.00223381maximum number of iterations reached 6.763563e-05 6.763528e-05maximum number of iterations reached 0.0004931463 0.000490695maximum number of iterations reached 0.001312256 0.001311285maximum number of iterations reached 0.0007732727 0.0007651502maximum number of iterations reached 0.0001480408 0.0001469639maximum number of iterations reached 0.0008013422 0.0008007151maximum number of iterations reached 0.000322721 0.0003224322maximum number of iterations reached -0.0008330754 -0.0008334876maximum number of iterations reached 0.0001687177 0.000168568maximum number of iterations reached 0.003600464 0.003539579maximum number of iterations reached 0.001174407 0.001171266maximum number of iterations reached 0.0001184203 0.0001176009maximum number of iterations reached 0.001225312 0.001223976maximum number of iterations reached -0.0003158794 -0.0003158904maximum number of iterations reached 0.001368286 0.001367234maximum number of iterations reached -3.047685e-05 -3.048552e-05maximum number of iterations reached -0.0003886208 -0.000388673maximum number of iterations reached 0.0002210364 0.0002210233maximum number of iterations reached 0.0005939516 0.0005937484maximum number of iterations reached -7.596901e-05 -7.597195e-05maximum number of iterations reached -0.000701043 -0.0007076814maximum number of iterations reached -0.000964336 -0.0009647438maximum number of iterations reached -0.0001628183 -0.0001633899maximum number of iterations reached 0.0005549818 0.0005547117maximum number of iterations reached -0.0005042621 -0.0005045484maximum number of iterations reached -4.327474e-05 -4.335649e-05maximum number of iterations reached 0.0008105752 0.0008095106maximum number of iterations reached -0.000924774 -0.0009262788maximum number of iterations reached 0.0005760284 0.0005681565maximum number of iterations reached 0.002471099 0.002451001maximum number of iterations reached -0.0004730918 -0.0004738204maximum number of iterations reached 5.904556e-05 5.885378e-05maximum number of iterations reached 0.001833547 0.001826484maximum number of iterations reached 0.0001069678 0.0001069596maximum number of iterations reached 1.33636e-05 1.335047e-05maximum number of iterations reached 0.004066408 0.004004127maximum number of iterations reached 0.0009161235 0.0009156569maximum number of iterations reached -9.894799e-06 -9.903819e-06maximum number of iterations reached -0.0005267736 -0.0005273063maximum number of iterations reached -0.000401575 -0.0004018106maximum number of iterations reached -3.136539e-05 -3.137114e-05maximum number of iterations reached -0.001275837 -0.001278124maximum number of iterations reached 0.0002643857 0.0002643695maximum number of iterations reached 0.0005090918 0.0005086662maximum number of iterations reached 0.0002320993 0.0002320296maximum number of iterations reached 5.216532e-05 5.216451e-05maximum number of iterations reached 0.001063461 0.001061509maximum number of iterations reached -0.00155534 -0.001561573maximum number of iterations reached -0.0004735674 -0.000473823maximum number of iterations reached -0.000139711 -0.0001397548maximum number of iterations reached 8.28684e-05 8.286722e-05maximum number of iterations reached -0.0002591937 -0.0002593194maximum number of iterations reached 0.0006026296 0.00060241maximum number of iterations reached -0.000154113 -0.0001541376maximum number of iterations reached -0.0008421583 -0.0008431004maximum number of iterations reached -0.0007471281 -0.0007504981maximum number of iterations reached 0.0007369535 0.0007365854maximum number of iterations reached -0.0003864106 -0.0003870617maximum number of iterations reached -1.515094e-05 -1.515119e-05maximum number of iterations reached 0.001932117 0.00191474maximum number of iterations reached 0.0001787407 0.0001787416maximum number of iterations reached 0.001999763 0.001996515maximum number of iterations reached -0.0004764606 -0.0004785653maximum number of iterations reached -0.000214722 -0.0002147308maximum number of iterations reached -0.0005949278 -0.0005954225maximum number of iterations reached 0.0001049362 0.0001048874maximum number of iterations reached 0.0001575752 0.0001575611maximum number of iterations reached -0.0005532173 -0.0005532973maximum number of iterations reached -0.0005079191 -0.0005097214maximum number of iterations reached 2.073824e-05 2.07382e-05maximum number of iterations reached -5.735136e-05 -5.735168e-05maximum number of iterations reached 0.0007120711 0.0007037399maximum number of iterations reached 0.001153783 0.00115113maximum number of iterations reached 0.0003782329 0.0003781746maximum number of iterations reached 0.0001980278 0.0001970166maximum number of iterations reached 0.00416452 0.004135699maximum number of iterations reached -0.0001913626 -0.00019137maximum number of iterations reached 0.0003640106 0.0003602264maximum number of iterations reached 0.0005522161 0.0005521232maximum number of iterations reached 0.002376201 0.002367791maximum number of iterations reached 4.276579e-05 4.268623e-05maximum number of iterations reached 0.001135599 0.001133915maximum number of iterations reached 0.0003710751 0.0003709986maximum number of iterations reached 0.0005547382 0.0005543342maximum number of iterations reached -0.0002496102 -0.000249662maximum number of iterations reached 0.0002053579 0.0002038632maximum number of iterations reached 0.0003442554 0.0003442349maximum number of iterations reached 5.420765e-05 5.420742e-05maximum number of iterations reached 0.000169846 0.0001698451maximum number of iterations reached 0.000229105 0.0002290642maximum number of iterations reached 3.842936e-05 3.832792e-05maximum number of iterations reached 0.0002322536 0.0002322379maximum number of iterations reached 0.0004660947 0.0004656747maximum number of iterations reached 0.000832381 0.0008321707maximum number of iterations reached -0.0003015532 -0.0003018582maximum number of iterations reached 0.0008770851 0.0008615146maximum number of iterations reached 0.0002833517 0.0002832861maximum number of iterations reached -0.001293128 -0.00129547maximum number of iterations reached 0.000693877 0.0006937036maximum number of iterations reached 0.001389779 0.001386001maximum number of iterations reached 0.0004159264 0.0004158437maximum number of iterations reached -0.00058554 -0.0005866615maximum number of iterations reached 0.0006845035 0.0006836238maximum number of iterations reached 0.0007852508 0.0007849379maximum number of iterations reached 0.0003244474 0.0003243912maximum number of iterations reached 0.000511596 0.000511379maximum number of iterations reached -0.0006602 -0.0006605972maximum number of iterations reached -0.0005908258 -0.0005912436maximum number of iterations reached 0.0008191164 0.0008190883maximum number of iterations reached 0.005247244 0.005105429maximum number of iterations reached -0.0002434308 -0.0002441361maximum number of iterations reached 0.001188955 0.001188309maximum number of iterations reached -0.0002123247 -0.0002123914maximum number of iterations reached 0.001243101 0.001238167maximum number of iterations reached 0.001973202 0.001968787maximum number of iterations reached -0.0002411637 -0.0002412414maximum number of iterations reached 0.002361257 0.002333252maximum number of iterations reached 0.0005986645 0.0005981296maximum number of iterations reached -0.000158671 -0.0001586824maximum number of iterations reached 0.001054295 0.001038473maximum number of iterations reached 0.0009803299 0.0009792749maximum number of iterations reached 0.0002831871 0.0002831222maximum number of iterations reached 0.001722134 0.001692203maximum number of iterations reached 0.000249513 0.0002494765maximum number of iterations reached -0.0007772005 -0.000777625maximum number of iterations reached 8.721137e-05 8.702332e-05maximum number of iterations reached 0.0008219116 0.0008211745maximum number of iterations reached -6.919362e-05 -6.919723e-05maximum number of iterations reached -0.0008641143 -0.0008659044maximum number of iterations reached -0.0002252927 -0.0002253456maximum number of iterations reached 0.0007445771 0.0007442212maximum number of iterations reached 0.0003883317 0.0003882107maximum number of iterations reached 0.0007439675 0.0007343523maximum number of iterations reached 0.0003435933 0.0003435737maximum number of iterations reached 0.0002963822 0.0002963257maximum number of iterations reached 2.242608e-05 2.238905e-05maximum number of iterations reached 0.0009973577 0.0009963959maximum number of iterations reached 0.0002870206 0.0002869766maximum number of iterations reached 6.254581e-05 6.254621e-05maximum number of iterations reached -0.001666686 -0.00166902maximum number of iterations reached 0.001272069 0.00126865maximum number of iterations reached -0.0004933995 -0.0004940239maximum number of iterations reached 0.0001189273 0.0001189281maximum number of iterations reached -0.0004590794 -0.0004594822maximum number of iterations reached 0.0009120659 0.0009107118maximum number of iterations reached 0.0002051395 0.0002049876maximum number of iterations reached 0.0006552038 0.0006445524maximum number of iterations reached 7.510694e-05 7.510665e-05maximum number of iterations reached -0.0006952242 -0.0006956254maximum number of iterations reached -7.124878e-05 -7.126298e-05maximum number of iterations reached 0.0007167102 0.0007160975maximum number of iterations reached 7.512526e-05 7.512458e-05maximum number of iterations reached -0.0001422779 -0.0001424797maximum number of iterations reached 0.0006918325 0.0006914952maximum number of iterations reached 0.002544539 0.002502924maximum number of iterations reached 7.699228e-05 7.699248e-05maximum number of iterations reached 0.0005954102 0.0005951655maximum number of iterations reached -0.001559114 -0.00156557maximum number of iterations reached -3.62057e-05 -3.620637e-05maximum number of iterations reached 0.001534295 0.00153089maximum number of iterations reached 0.0001888849 0.0001887286maximum number of iterations reached 0.0001239577 0.0001239599maximum number of iterations reached 0.001061861 0.001059774maximum number of iterations reached 0.0005213296 0.0005168243maximum number of iterations reached -0.000167283 -0.0001672921maximum number of iterations reached -0.001551054 -0.001555571maximum number of iterations reached 0.001509107 0.001490115maximum number of iterations reached 0.0003440121 0.0003439903maximum number of iterations reached 0.0003139777 0.0003139324maximum number of iterations reached 0.0002295302 0.0002278306maximum number of iterations reached -0.0001842608 -0.0001842641maximum number of iterations reached -0.0001158027 -0.0001158046maximum number of iterations reached 0.0003554454 0.0003516615maximum number of iterations reached 4.519918e-05 4.519636e-05maximum number of iterations reached -0.0003918949 -0.0003919741maximum number of iterations reached -0.0001527767 -0.0001536158maximum number of iterations reached -0.0003264864 -0.0003264965maximum number of iterations reached -0.0006463597 -0.0006468401maximum number of iterations reached 9.781335e-06 9.774163e-06maximum number of iterations reached 0.0005260068 0.0005259454maximum number of iterations reached -0.0003361723 -0.0003362994maximum number of iterations reached 0.0001213354 0.0001206792maximum number of iterations reached 0.0004490968 0.0004490638maximum number of iterations reached -0.0005326326 -0.0005328389maximum number of iterations reached 2.897943e-05 2.892486e-05maximum number of iterations reached -0.0004555941 -0.0004556485maximum number of iterations reached 2.402809e-05 2.402934e-05maximum number of iterations reached -0.0004587087 -0.0004590857maximum number of iterations reached -0.001040394 -0.001041285maximum number of iterations reached 0.0006863035 0.0006854989maximum number of iterations reached 0.0005076635 0.0005073872maximum number of iterations reached -3.390119e-05 -3.390197e-05maximum number of iterations reached 1.585251e-05 1.583541e-05maximum number of iterations reached 0.002548167 0.002540677maximum number of iterations reached 0.0006584394 0.0006566371maximum number of iterations reached 0.0005982824 0.0005978895maximum number of iterations reached -0.0002845463 -0.0002847223maximum number of iterations reached 0.0001606805 0.0001606817maximum number of iterations reached 0.0002530896 0.0002529875maximum number of iterations reached 0.002611782 0.002597706maximum number of iterations reached 0.0004413925 0.0004410593maximum number of iterations reached 0.0004680249 0.0004678363maximum number of iterations reached 0.0007389612 0.0007381644maximum number of iterations reached -7.247373e-05 -7.248041e-05maximum number of iterations reached -0.0005105319 -0.0005114944maximum number of iterations reached 0.000296883 0.0002967831maximum number of iterations reached 0.00115134 0.001148403maximum number of iterations reached -0.0001768575 -0.0001770912maximum number of iterations reached 9.710587e-06 9.702423e-06maximum number of iterations reached 7.998876e-05 7.998924e-05maximum number of iterations reached 0.0006783258 0.000677918maximum number of iterations reached 0.001171851 0.001162405maximum number of iterations reached 0.0001183378 0.0001183279maximum number of iterations reached -0.0009021692 -0.0009085472maximum number of iterations reached -0.0004315214 -0.0004346433maximum number of iterations reached 0.002010248 0.002006483maximum number of iterations reached -0.0001343902 -0.0001343997maximum number of iterations reached 0.002317988 0.002311956maximum number of iterations reached 0.001585841 0.001582659maximum number of iterations reached 9.443043e-05 9.403056e-05maximum number of iterations reached -0.0002248017 -0.0002249572maximum number of iterations reached -0.0001656142 -0.0001656683maximum number of iterations reached 0.0008661019 0.0008648958maximum number of iterations reached -0.0004389672 -0.0004390937maximum number of iterations reached 0.001179147 0.001178272maximum number of iterations reached -0.0001154331 -0.0001154549maximum number of iterations reached -0.0004946736 -0.0004948603maximum number of iterations reached -0.0007338482 -0.0007342181maximum number of iterations reached -0.002179276 -0.002185584maximum number of iterations reached 3.525011e-05 3.516881e-05maximum number of iterations reached -0.0002466398 -0.0002468068maximum number of iterations reached 1.517538e-05 1.517443e-05maximum number of iterations reached -2.806288e-05 -2.806276e-05maximum number of iterations reached -0.00091029 -0.0009115184maximum number of iterations reached 0.0009136667 0.0008969853maximum number of iterations reached 0.0004659792 0.0004659089maximum number of iterations reached -0.0004684367 -0.0004686882maximum number of iterations reached 4.759712e-05 4.759865e-05maximum number of iterations reached 0.002193065 0.002181454maximum number of iterations reached 0.0001520286 0.0001520013maximum number of iterations reached -0.0005052598 -0.0005056867maximum number of iterations reached 0.001652773 0.001645303maximum number of iterations reached 0.001309475 0.001307405maximum number of iterations reached -0.0008645359 -0.0008660199maximum number of iterations reached 0.0004365573 0.000436252maximum number of iterations reached -0.001199751 -0.001202427maximum number of iterations reached 0.001410448 0.001407188maximum number of iterations reached -3.474462e-05 -3.474705e-05maximum number of iterations reached 0.001078232 0.001077052maximum number of iterations reached 0.0007967225 0.0007950101maximum number of iterations reached -5.298564e-05 -5.298606e-05maximum number of iterations reached 0.0004257575 0.0004253901maximum number of iterations reached -0.001359246 -0.0013647maximum number of iterations reached 0.0002632104 0.0002632011maximum number of iterations reached 2.63078e-05 2.630751e-05maximum number of iterations reached -0.0001295972 -0.0001300315maximum number of iterations reached 0.0008220971 0.0008219515maximum number of iterations reached 2.16412e-05 2.164134e-05maximum number of iterations reached 0.0002158836 0.0002152364maximum number of iterations reached 0.000129763 0.0001297453maximum number of iterations reached -0.0007040823 -0.0007051212maximum number of iterations reached 0.001000157 0.0009905595maximum number of iterations reached 0.0001751944 0.0001751177maximum number of iterations reached -0.0007224939 -0.0007226661maximum number of iterations reached 5.950095e-05 5.933779e-05maximum number of iterations reached 0.0004289536 0.0004284802maximum number of iterations reached -0.0003734896 -0.0003735328maximum number of iterations reached 0.003957535 0.003887648maximum number of iterations reached -0.0003509687 -0.0003510772maximum number of iterations reached 2.137846e-05 2.137875e-05maximum number of iterations reached 0.000331709 0.0003316279maximum number of iterations reached 4.426807e-05 4.417726e-05maximum number of iterations reached 0.0002126957 0.0002126629maximum number of iterations reached -0.0001462347 -0.0001462632maximum number of iterations reached 0.001632693 0.001628505maximum number of iterations reached -0.0008505927 -0.0008513804maximum number of iterations reached 0.0008350033 0.000834548maximum number of iterations reached 0.001478236 0.001473664maximum number of iterations reached 0.0003525613 0.000352409maximum number of iterations reached 0.0003751548 0.0003748669maximum number of iterations reached 4.638235e-05 4.630776e-05maximum number of iterations reached -0.0003769787 -0.0003769912maximum number of iterations reached -0.0001200691 -0.0001200974maximum number of iterations reached 0.0001162682 0.0001157803maximum number of iterations reached 0.0005106876 0.0005104876maximum number of iterations reached 0.002257434 0.002251521maximum number of iterations reached 0.0007875618 0.0007873359maximum number of iterations reached 0.00214788 0.002131113maximum number of iterations reached 0.001870471 0.001863395maximum number of iterations reached 0.0007158728 0.0007152669maximum number of iterations reached -1.984029e-05 -1.984033e-05maximum number of iterations reached 0.0003741215 0.0003740085maximum number of iterations reached -0.0007547858 -0.0007554824maximum number of iterations reached 0.001159451 0.00115684maximum number of iterations reached 0.0003263382 0.0003262356maximum number of iterations reached -0.0002764271 -0.0002765667maximum number of iterations reached 0.0005295479 0.0005293426maximum number of iterations reached -0.000246725 -0.0002469126maximum number of iterations reached 2.167675e-05 2.167655e-05maximum number of iterations reached -0.0007937051 -0.000793814maximum number of iterations reached 0.0009884701 0.000986226maximum number of iterations reached -0.0002503303 -0.0002503819maximum number of iterations reached 2.624698e-05 2.624678e-05maximum number of iterations reached 0.0004412415 0.0004395468maximum number of iterations reached 0.002742968 0.002732956maximum number of iterations reached -0.0001910282 -0.0001910359maximum number of iterations reached -1.357232e-05 -1.358771e-05maximum number of iterations reached 0.00309705 0.003087514maximum number of iterations reached 7.123069e-05 7.110627e-05maximum number of iterations reached 0.002171308 0.002162593maximum number of iterations reached 0.0001051823 0.0001051756maximum number of iterations reached 0.001051582 0.001034398maximum number of iterations reached -0.0006896933 -0.0006899605maximum number of iterations reached -0.000160495 -0.0001605725maximum number of iterations reached -0.0002065479 -0.0002081301maximum number of iterations reached 0.000806323 0.000806222maximum number of iterations reached -0.0008913802 -0.0008921734maximum number of iterations reached -4.077951e-05 -4.088342e-05maximum number of iterations reached 0.0007721252 0.0007715738maximum number of iterations reached 0.0001201211 0.0001200727maximum number of iterations reached -0.001115017 -0.001116139maximum number of iterations reached 0.001335677 0.001333656maximum number of iterations reached 9.803215e-05 9.762287e-05maximum number of iterations reached 0.001138518 0.001136493maximum number of iterations reached -0.0001455419 -0.0001455769maximum number of iterations reached 4.592196e-05 4.581226e-05maximum number of iterations reached -0.0004275464 -0.0004279736maximum number of iterations reached 0.0009448761 0.0009432658maximum number of iterations reached 3.656328e-05 3.647173e-05maximum number of iterations reached -0.0009746403 -0.0009758812maximum number of iterations reached 0.0003948741 0.0003947512maximum number of iterations reached 7.209812e-05 7.18199e-05maximum number of iterations reached 0.001181055 0.001180211maximum number of iterations reached -7.093693e-05 -7.094166e-05maximum number of iterations reached 0.001973361 0.001965445maximum number of iterations reached -0.0009681939 -0.0009703975maximum number of iterations reached 0.001162553 0.001161661maximum number of iterations reached -0.0005995459 -0.0006001402maximum number of iterations reached 0.0007467857 0.0007464712maximum number of iterations reached 0.000202911 0.0002028874maximum number of iterations reached -0.002118062 -0.002130204maximum number of iterations reached -2.422912e-05 -2.42291e-05maximum number of iterations reached 0.0008707517 0.0008695739maximum number of iterations reached -0.001184185 -0.001185532maximum number of iterations reached -1.39724e-05 -1.397209e-05maximum number of iterations reached -0.0006110515 -0.0006117225maximum number of iterations reached 0.001424884 0.001413097maximum number of iterations reached 5.888144e-05 5.888113e-05maximum number of iterations reached 0.0008860789 0.000885331maximum number of iterations reached -0.0007379683 -0.0007416236maximum number of iterations reached 0.0004223862 0.0004217713maximum number of iterations reached -6.040192e-05 -6.040922e-05maximum number of iterations reached -0.0004684807 -0.0004718843maximum number of iterations reached 0.001222899 0.001221902maximum number of iterations reached -0.0002025382 -0.0002025456maximum number of iterations reached -0.0008654281 -0.0008729464maximum number of iterations reached -0.0006571938 -0.0006576129maximum number of iterations reached 0.0002051395 0.0002051046maximum number of iterations reached -0.001301871 -0.001308685maximum number of iterations reached 0.000573994 0.0005737822maximum number of iterations reached -0.000400936 -0.0004010464maximum number of iterations reached 9.300927e-05 9.298292e-05maximum number of iterations reached 0.0006837833 0.0006831586maximum number of iterations reached 0.0001931148 0.000193056maximum number of iterations reached -1.084952e-05 -1.085971e-05maximum number of iterations reached 0.0003290784 0.0003290474maximum number of iterations reached -0.0006616572 -0.000662243maximum number of iterations reached -9.798491e-06 -9.807965e-06maximum number of iterations reached 0.001030477 0.001029298maximum number of iterations reached -0.0002996766 -0.0002998409maximum number of iterations reached 0.0007922049 0.0007877585maximum number of iterations reached -0.001906173 -0.001910819maximum number of iterations reached 4.22721e-05 4.22731e-05maximum number of iterations reached 0.0007919852 0.0007914218maximum number of iterations reached -0.0005089536 -0.0005093997maximum number of iterations reached 0.0006405557 0.0006400822maximum number of iterations reached -0.001184165 -0.001188297maximum number of iterations reached -0.0005224767 -0.0005250316maximum number of iterations reached -0.0007388336 -0.0007402524maximum number of iterations reached 0.001081318 0.001079443maximum number of iterations reached -0.001271449 -0.001273127maximum number of iterations reached 0.0001105384 0.0001105389maximum number of iterations reached -0.001095713 -0.001099087maximum number of iterations reached 0.001004649 0.0009895875maximum number of iterations reached -2.108475e-05 -2.108472e-05maximum number of iterations reached -0.0004129804 -0.0004134397maximum number of iterations reached 3.80454e-05 3.804725e-05maximum number of iterations reached -0.0003526053 -0.000352965maximum number of iterations reached 0.001585191 0.001582611maximum number of iterations reached -0.0007818372 -0.000784022maximum number of iterations reached 0.0004394545 0.0004358853maximum number of iterations reached 0.0007982253 0.0007977814maximum number of iterations reached -0.00012318 -0.0001233802maximum number of iterations reached 0.001555207 0.001528221maximum number of iterations reached -8.862157e-05 -8.862212e-05maximum number of iterations reached -0.0004267811 -0.0004276534maximum number of iterations reached 0.001069249 0.001068113maximum number of iterations reached -0.001060015 -0.001066541maximum number of iterations reached -0.0003217997 -0.0003220025maximum number of iterations reached 0.0006648811 0.0006644696maximum number of iterations reached 0.0003725077 0.0003719714maximum number of iterations reached 0.0002554621 0.0002554636maximum number of iterations reached -0.0001587221 -0.0001588274maximum number of iterations reached 3.964819e-05 3.963969e-05maximum number of iterations reached 0.00203197 0.002028717maximum number of iterations reached -0.0002878485 -0.000287892maximum number of iterations reached -0.0003825017 -0.0003842334maximum number of iterations reached 0.0001315857 0.0001315766maximum number of iterations reached 8.181855e-05 8.18173e-05maximum number of iterations reached 0.001184998 0.001164402maximum number of iterations reached 0.0009799192 0.0009796042maximum number of iterations reached 0.0001178059 0.0001177995maximum number of iterations reached -0.0001493925 -0.0001503119maximum number of iterations reached 0.003794998 0.003770188maximum number of iterations reached -0.0001766266 -0.00017664maximum number of iterations reached 0.0001111533 0.0001106857maximum number of iterations reached -0.0001509391 -0.0001509913maximum number of iterations reached -0.000140977 -0.0001409902maximum number of iterations reached 9.735377e-05 9.711369e-05maximum number of iterations reached 0.0001163016 0.0001162746maximum number of iterations reached -0.0003401253 -0.0003422321maximum number of iterations reached 0.0002502309 0.0002501057maximum number of iterations reached -0.0002289188 -0.000229128maximum number of iterations reached -0.0005407406 -0.0005411461maximum number of iterations reached 0.000257568 0.0002556491maximum number of iterations reached 0.0005951061 0.0005948221maximum number of iterations reached -0.0003133922 -0.0003136056maximum number of iterations reached 0.0005492069 0.0005476717maximum number of iterations reached -0.001529695 -0.001532112maximum number of iterations reached 3.649608e-05 3.64151e-05maximum number of iterations reached 0.0004800257 0.0004799531maximum number of iterations reached -0.0004376113 -0.0004379867maximum number of iterations reached -0.0003410933 -0.000341213maximum number of iterations reached 0.001183962 0.001182628maximum number of iterations reached 0.001218042 0.001216735maximum number of iterations reached -0.0001687825 -0.0001689665maximum number of iterations reached 0.0005207664 0.0005122496maximum number of iterations reached 3.244167e-05 3.244188e-05maximum number of iterations reached 0.0008379302 0.0008371138maximum number of iterations reached -0.000356832 -0.0003571604maximum number of iterations reached -0.0001776506 -0.0001776656maximum number of iterations reached -0.0006678561 -0.0006680292maximum number of iterations reached 0.001155909 0.001152264maximum number of iterations reached -2.806318e-05 -2.80658e-05maximum number of iterations reached 0.001736341 0.001733409maximum number of iterations reached 0.0006956396 0.0006952476maximum number of iterations reached -0.0008972531 -0.0008998141maximum number of iterations reached 0.0007867471 0.0007866573maximum number of iterations reached 0.001276181 0.001273276maximum number of iterations reached -0.0006831933 -0.0006852349maximum number of iterations reached 2.931771e-05 2.931828e-05maximum number of iterations reached -0.0002009904 -0.0002009909maximum number of iterations reached 0.002338334 0.002303154maximum number of iterations reached 0.00150608 0.001503407maximum number of iterations reached -1.301093e-05 -1.301096e-05maximum number of iterations reached -0.0002459096 -0.0002468097maximum number of iterations reached 0.0007417074 0.0007413467maximum number of iterations reached -0.0008368935 -0.0008376538maximum number of iterations reached -0.0003261685 -0.0003287283maximum number of iterations reached -0.0003710449 -0.0003710762maximum number of iterations reached 1.9873e-05 1.987272e-05maximum number of iterations reached 2.00597e-05 2.004368e-05maximum number of iterations reached 0.0005806006 0.0005799635maximum number of iterations reached 0.0002222042 0.0002221659maximum number of iterations reached 0.0001532381 0.0001523672maximum number of iterations reached 0.004733128 0.004627968maximum number of iterations reached -0.0001979009 -0.000197942maximum number of iterations reached 4.2175e-05 4.207392e-05maximum number of iterations reached 0.00472291 0.004600713maximum number of iterations reached -0.0007306773 -0.0007312002maximum number of iterations reached -0.0008387176 -0.0008393209maximum number of iterations reached -0.0001733957 -0.0001734144maximum number of iterations reached 1.011615e-05 1.010976e-05maximum number of iterations reached 0.0002318753 0.0002318705maximum number of iterations reached -0.001936138 -0.001946671maximum number of iterations reached 5.005535e-05 4.989531e-05maximum number of iterations reached 0.0008310772 0.000830725maximum number of iterations reached -0.001065064 -0.001066491maximum number of iterations reached 0.0007232457 0.0007229876maximum number of iterations reached -0.001504619 -0.001507981maximum number of iterations reached -6.567822e-05 -6.568679e-05maximum number of iterations reached 0.0007164896 0.0007158524maximum number of iterations reached 0.0001574796 0.000157479maximum number of iterations reached 0.001088083 0.001086319maximum number of iterations reached 8.634747e-05 8.635112e-05maximum number of iterations reached -3.348064e-05 -3.348898e-05maximum number of iterations reached 1.82657e-05 1.826627e-05maximum number of iterations reached 0.0004883703 0.0004878657maximum number of iterations reached 0.0007041534 0.0007037981maximum number of iterations reached -0.001559144 -0.001568207maximum number of iterations reached 2.073966e-05 2.073995e-05maximum number of iterations reached -0.0003071771 -0.0003075931maximum number of iterations reached 0.0004567107 0.0004565577maximum number of iterations reached 0.0003977844 0.0003972127maximum number of iterations reached -0.0006959927 -0.000696295maximum number of iterations reached 0.0001929686 0.0001928983maximum number of iterations reached 0.001106501 0.001106144maximum number of iterations reached -0.0002465776 -0.0002468287maximum number of iterations reached -0.0004954639 -0.000497346maximum number of iterations reached 0.001156725 0.001156071maximum number of iterations reached 0.0004454893 0.0004454435maximum number of iterations reached 0.0003354261 0.0003332169maximum number of iterations reached 0.000517294 0.0005171954maximum number of iterations reached 0.002197485 0.002187629maximum number of iterations reached 9.222465e-05 9.221646e-05maximum number of iterations reached -0.0001677093 -0.0001677587maximum number of iterations reached -4.254432e-05 -4.264005e-05maximum number of iterations reached -0.0002152859 -0.0002155585maximum number of iterations reached -0.0003200553 -0.0003201386maximum number of iterations reached 0.0006436276 0.0006338858maximum number of iterations reached 0.0007297453 0.0007288202maximum number of iterations reached -0.001445947 -0.001447307maximum number of iterations reached -0.001698945 -0.001713089maximum number of iterations reached 0.001088359 0.001086251maximum number of iterations reached 0.004351944 0.004250957maximum number of iterations reached -0.0001276307 -0.000127683maximum number of iterations reached 0.0009108838 0.0008931949maximum number of iterations reached -0.0008763908 -0.0008808595maximum number of iterations reached 0.0009762261 0.000974192maximum number of iterations reached 3.146544e-05 3.146246e-05maximum number of iterations reached -0.001373777 -0.001376106maximum number of iterations reached -0.00054585 -0.0005461733maximum number of iterations reached -0.001093309 -0.001096155maximum number of iterations reached -0.0008115823 -0.0008117153maximum number of iterations reached -0.0001024764 -0.0001025024maximum number of iterations reached -0.0001913915 -0.0001913924maximum number of iterations reached 0.001671914 0.001667845maximum number of iterations reached -1.714369e-05 -1.714463e-05maximum number of iterations reached 0.001833543 0.001827341maximum number of iterations reached -0.001480886 -0.001483378maximum number of iterations reached -0.003448285 -0.003465581maximum number of iterations reached 0.002073007 0.002068851maximum number of iterations reached 8.456713e-05 8.454864e-05maximum number of iterations reached 4.013044e-05 4.013039e-05maximum number of iterations reached -0.001528783 -0.001532596maximum number of iterations reached 0.0001294021 0.0001294027maximum number of iterations reached -8.183713e-05 -8.216871e-05maximum number of iterations reached 0.001255269 0.001254131maximum number of iterations reached -0.0005536614 -0.0005566223maximum number of iterations reached 0.0009590411 0.0009582319maximum number of iterations reached -0.0004539619 -0.0004541744maximum number of iterations reached 0.0003260559 0.000325903maximum number of iterations reached -9.069959e-05 -9.073059e-05maximum number of iterations reached -0.0006156966 -0.0006165405maximum number of iterations reached 7.88583e-05 7.885844e-05maximum number of iterations reached -8.488779e-05 -8.488866e-05maximum number of iterations reached 0.001796562 0.001776912maximum number of iterations reached 0.002437586 0.002430522maximum number of iterations reached 0.0001173286 0.0001173282maximum number of iterations reached -0.0002475532 -0.0002482036maximum number of iterations reached 0.003232201 0.00321055maximum number of iterations reached -0.0003652122 -0.0003652876maximum number of iterations reached -3.900718e-05 -3.91086e-05maximum number of iterations reached 0.0008802392 0.0008797689maximum number of iterations reached -0.001342938 -0.001345672maximum number of iterations reached 0.0002974098 0.0002953133maximum number of iterations reached -0.0002621988 -0.0002622076maximum number of iterations reached -0.001151954 -0.001152272maximum number of iterations reached 0.0003517672 0.0003492179maximum number of iterations reached 0.0002300569 0.0002300571maximum number of iterations reached 4.516789e-05 4.51688e-05maximum number of iterations reached 0.0002832226 0.0002809649maximum number of iterations reached 0.001008415 0.001007309maximum number of iterations reached 0.00029039 0.0002903644maximum number of iterations reached 7.119802e-05 7.120041e-05maximum number of iterations reached -0.000983774 -0.0009846175maximum number of iterations reached 0.0006612101 0.000660941maximum number of iterations reached -9.491898e-05 -9.49327e-05maximum number of iterations reached 0.001205051 0.001203611maximum number of iterations reached -0.002109003 -0.002125907maximum number of iterations reached 0.001141167 0.001139609maximum number of iterations reached -0.001326136 -0.001338768maximum number of iterations reached 0.001650436 0.001642856maximum number of iterations reached -0.00165901 -0.001665721maximum number of iterations reached 0.001602284 0.001595463maximum number of iterations reached 0.00189121 0.001881054maximum number of iterations reached 0.001297938 0.001296866maximum number of iterations reached -3.693959e-05 -3.69438e-05maximum number of iterations reached -0.0001592304 -0.0001592506maximum number of iterations reached 9.772407e-05 9.771771e-05maximum number of iterations reached -0.0006072879 -0.0006074242maximum number of iterations reached 0.0002349574 0.0002346664maximum number of iterations reached 3.767474e-05 3.767474e-05maximum number of iterations reached 0.001633844 0.001630038maximum number of iterations reached 0.001382938 0.001381549maximum number of iterations reached -0.001458936 -0.0014662maximum number of iterations reached 0.002312401 0.002305745maximum number of iterations reached -0.0002776291 -0.0002779144maximum number of iterations reached -0.0001352796 -0.0001352806maximum number of iterations reached 0.0004855524 0.0004855167maximum number of iterations reached 0.001797605 0.001788904maximum number of iterations reached 0.0004781221 0.0004780883maximum number of iterations reached -2.521157e-05 -2.521382e-05maximum number of iterations reached -0.0006076476 -0.0006093661maximum number of iterations reached 0.0002077937 0.0002077799maximum number of iterations reached 0.0007229361 0.0007221831maximum number of iterations reached 0.0005417422 0.0005397835maximum number of iterations reached -0.0002878491 -0.0002879378maximum number of iterations reached -3.27215e-05 -3.272155e-05maximum number of iterations reached -2.433677e-05 -2.438229e-05maximum number of iterations reached 0.0003955523 0.0003953431maximum number of iterations reached -0.0001022998 -0.0001023074maximum number of iterations reached 0.0002416266 0.000240061maximum number of iterations reached 0.003571137 0.003541474maximum number of iterations reached 0.0004245654 0.0004244583maximum number of iterations reached 0.0001269615 0.0001263382maximum number of iterations reached 0.003607575 0.003555108maximum number of iterations reached -0.0002140668 -0.0002141132maximum number of iterations reached -7.440233e-05 -7.441325e-05maximum number of iterations reached 0.0001935272 0.000193508maximum number of iterations reached 5.863995e-05 5.845655e-05maximum number of iterations reached 0.001457131 0.001454042maximum number of iterations reached -2.900217e-05 -2.900311e-05maximum number of iterations reached 8.646296e-05 8.605869e-05maximum number of iterations reached 0.0002304139 0.0002303723maximum number of iterations reached 0.0001444159 0.000144395maximum number of iterations reached 0.0003327945 0.0003327719maximum number of iterations reached -0.000304704 -0.0003047564maximum number of iterations reached 3.80871e-05 3.808812e-05maximum number of iterations reached -0.0003936198 -0.0003938932maximum number of iterations reached 0.000111102 0.0001104507maximum number of iterations reached -4.050206e-05 -4.050756e-05maximum number of iterations reached -0.0003996915 -0.0003998042maximum number of iterations reached 0.0005862466 0.0005860634maximum number of iterations reached 0.0006804154 0.0006800706maximum number of iterations reached 0.000286304 0.0002861645maximum number of iterations reached 0.0008709098 0.0008693193maximum number of iterations reached 0.0004418372 0.0004417544maximum number of iterations reached 0.000547037 0.0005468553maximum number of iterations reached 0.0008212957 0.0008203858maximum number of iterations reached -0.0005828783 -0.0005834353maximum number of iterations reached -4.015067e-05 -4.015864e-05maximum number of iterations reached 0.0009540127 0.0009526829maximum number of iterations reached 5.578262e-05 5.578226e-05maximum number of iterations reached 0.00153242 0.001528867maximum number of iterations reached 0.001854288 0.001848495maximum number of iterations reached -0.000637714 -0.0006383246maximum number of iterations reached -5.172958e-05 -5.174075e-05maximum number of iterations reached -0.001442443 -0.001444922maximum number of iterations reached 0.0009788818 0.0009767536maximum number of iterations reached 0.001291947 0.001291558maximum number of iterations reached -0.001402632 -0.001404268maximum number of iterations reached 0.0008207494 0.0008158349maximum number of iterations reached 0.001802887 0.001800756maximum number of iterations reached -0.0001617527 -0.0001617543maximum number of iterations reached -0.0007100476 -0.000715041maximum number of iterations reached 0.002490816 0.002485184maximum number of iterations reached -0.0008623897 -0.0008625619maximum number of iterations reached 0.0005180482 0.0005144068maximum number of iterations reached -0.001103369 -0.001106188maximum number of iterations reached -0.0001651233 -0.0001651319maximum number of iterations reached -5.603065e-05 -5.61766e-05maximum number of iterations reached -0.001048844 -0.001051311maximum number of iterations reached -0.0006022883 -0.0006025781maximum number of iterations reached 0.0006254077 0.0006200801maximum number of iterations reached -7.656908e-05 -7.658235e-05maximum number of iterations reached -0.0001701008 -0.0001701258maximum number of iterations reached 0.000509861 0.0005098161maximum number of iterations reached -0.0006066284 -0.0006067871maximum number of iterations reached 4.693613e-05 4.683938e-05maximum number of iterations reached -0.0001673006 -0.000167318maximum number of iterations reached 0.0002301704 0.0002301446maximum number of iterations reached 0.0001895657 0.0001881935maximum number of iterations reached -0.0003914759 -0.0003922498maximum number of iterations reached -0.0002052076 -0.00020529maximum number of iterations reached 2.177953e-05 2.174598e-05maximum number of iterations reached 1.098407e-05 1.098439e-05maximum number of iterations reached 0.001119495 0.001117098maximum number of iterations reached 0.0005425578 0.000542493maximum number of iterations reached -6.375839e-05 -6.37733e-05maximum number of iterations reached -0.001058591 -0.001061545maximum number of iterations reached 0.0004695832 0.0004689926maximum number of iterations reached 2.280073e-05 2.276877e-05maximum number of iterations reached -5.479506e-05 -5.479766e-05maximum number of iterations reached -0.001021366 -0.001022551maximum number of iterations reached -0.0008723657 -0.0008748617maximum number of iterations reached -6.756962e-05 -6.757207e-05maximum number of iterations reached 8.184745e-05 8.184591e-05maximum number of iterations reached 0.0004201613 0.0004200654maximum number of iterations reached 0.00033566 0.0003355286maximum number of iterations reached 0.0005179783 0.0005177659maximum number of iterations reached 0.0003567997 0.0003563132maximum number of iterations reached -0.0001692903 -0.000169315maximum number of iterations reached 0.0001637049 0.0001637023maximum number of iterations reached 0.0007867665 0.0007860848maximum number of iterations reached 0.0001519606 0.0001519626maximum number of iterations reached -4.47322e-05 -4.474011e-05maximum number of iterations reached -0.0006880144 -0.0006889043maximum number of iterations reached -0.000689231 -0.0006980258maximum number of iterations reached 0.0001290699 0.0001290712maximum number of iterations reached -0.0007384587 -0.0007398029maximum number of iterations reached -0.00133153 -0.001335016maximum number of iterations reached 0.0004121667 0.0004081963maximum number of iterations reached 0.0009744507 0.0009736924maximum number of iterations reached -0.0006125949 -0.0006133861maximum number of iterations reached 0.001111063 0.001105945maximum number of iterations reached -0.0003418581 -0.0003418763maximum number of iterations reached -0.0004397596 -0.0004397952maximum number of iterations reached -0.0001760535 -0.0001762927maximum number of iterations reached -0.0004457352 -0.0004458918maximum number of iterations reached -0.0001315406 -0.0001315771maximum number of iterations reached 0.0004247923 0.0004236464maximum number of iterations reached -0.0006767951 -0.0006772916maximum number of iterations reached -0.0004665179 -0.0004667582maximum number of iterations reached 0.001868802 0.001847078maximum number of iterations reached -0.0003526921 -0.0003528447maximum number of iterations reached -2.5355e-05 -2.535506e-05maximum number of iterations reached 0.0002049878 0.0002047257maximum number of iterations reached -0.0005811334 -0.0005813819maximum number of iterations reached 0.0001489986 0.0001489475maximum number of iterations reached -0.001284612 -0.001296356maximum number of iterations reached 7.80699e-05 7.806967e-05maximum number of iterations reached -0.0005033728 -0.0005039417maximum number of iterations reached 0.000313179 0.0003116102maximum number of iterations reached 0.0004672995 0.0004671376maximum number of iterations reached 0.0002588172 0.0002587221maximum number of iterations reached 0.001087894 0.001075447maximum number of iterations reached 0.0008126405 0.0008110612maximum number of iterations reached 0.0003966878 0.0003965767maximum number of iterations reached -2.39575e-05 -2.396305e-05maximum number of iterations reached 0.0007626731 0.0007618066maximum number of iterations reached -0.0003608245 -0.0003612928maximum number of iterations reached 0.001533336 0.00151708maximum number of iterations reached 0.0007279538 0.000727321maximum number of iterations reached -5.985831e-05 -5.986831e-05maximum number of iterations reached -0.0006570041 -0.0006641342maximum number of iterations reached -0.0005836547 -0.0005838004maximum number of iterations reached 0.0003933601 0.0003931893maximum number of iterations reached 3.237048e-05 3.231168e-05maximum number of iterations reached 0.0004750354 0.0004748916maximum number of iterations reached 0.0007936192 0.0007930576maximum number of iterations reached 0.001050256 0.001033208maximum number of iterations reached 0.001080909 0.001080282maximum number of iterations reached 0.000963254 0.0009618308maximum number of iterations reached 4.760096e-05 4.754712e-05maximum number of iterations reached -0.0001471569 -0.0001472135maximum number of iterations reached 0.00128695 0.0012847maximum number of iterations reached -0.00101958 -0.001037176maximum number of iterations reached -5.845103e-05 -5.845838e-05maximum number of iterations reached 0.00068653 0.0006860378maximum number of iterations reached 0.001524415 0.001498534maximum number of iterations reached 0.0002571223 0.0002571211maximum number of iterations reached -0.0003520595 -0.0003522597maximum number of iterations reached 0.0007706225 0.0007619431maximum number of iterations reached 0.001003318 0.001001741maximum number of iterations reached -0.0009273831 -0.00092864maximum number of iterations reached 0.0001173405 0.0001171562maximum number of iterations reached 0.001402051 0.001401602maximum number of iterations reached 9.541802e-05 9.541888e-05maximum number of iterations reached -0.0007305998 -0.0007334606maximum number of iterations reached 0.0008181102 0.0008177736maximum number of iterations reached -0.001286336 -0.001287975maximum number of iterations reached 0.0002583963 0.0002578984maximum number of iterations reached -0.0006033948 -0.0006036646maximum number of iterations reached 0.000419036 0.0004189878maximum number of iterations reached -0.0004645839 -0.0004689108maximum number of iterations reached 0.002016978 0.002011663maximum number of iterations reached 0.0006584827 0.000658354maximum number of iterations reached 0.00228689 0.002275735maximum number of iterations reached -0.001993304 -0.002004134maximum number of iterations reached 0.0009743144 0.0009730636maximum number of iterations reached 2.951672e-05 2.951972e-05maximum number of iterations reached -0.0006751738 -0.0006760428maximum number of iterations reached -0.0003718403 -0.0003719799maximum number of iterations reached -0.0008893953 -0.0008913001maximum number of iterations reached -0.0003543403 -0.0003544164maximum number of iterations reached 0.001074365 0.001072637maximum number of iterations reached 0.0004480934 0.0004478611maximum number of iterations reached -3.214955e-05 -3.222075e-05maximum number of iterations reached -0.0009649104 -0.0009657104maximum number of iterations reached 0.0002749745 0.0002749562maximum number of iterations reached -0.001231418 -0.001233172maximum number of iterations reached 0.0004185473 0.0004177526maximum number of iterations reached 0.0009404164 0.0009400354maximum number of iterations reached 0.0001760245 0.0001760223maximum number of iterations reached -0.0008544356 -0.0008545603maximum number of iterations reached 0.0008398281 0.0008389724maximum number of iterations reached 0.00067514 0.0006749155maximum number of iterations reached 0.0007371413 0.0007360997maximum number of iterations reached -0.0006115055 -0.0006117713maximum number of iterations reached -0.001076943 -0.00108001maximum number of iterations reached -0.0004494498 -0.0004494821maximum number of iterations reached -0.0009909318 -0.0009923796maximum number of iterations reached 1.184897e-05 1.184893e-05maximum number of iterations reached 0.001804869 0.001778406maximum number of iterations reached -0.0006320059 -0.0006324242maximum number of iterations reached 0.001096792 0.00109201maximum number of iterations reached 1.293744e-05 1.293845e-05maximum number of iterations reached 0.002062047 0.002050386maximum number of iterations reached -0.0001474209 -0.0001474217maximum number of iterations reached 0.0003276892 0.0003276739maximum number of iterations reached -0.001177234 -0.00118285maximum number of iterations reached 0.0005374428 0.0005374184maximum number of iterations reached 0.001003066 0.001002252maximum number of iterations reached 0.000520197 0.0005186733maximum number of iterations reached 0.002336673 0.002331567maximum number of iterations reached -0.0002362014 -0.000236291maximum number of iterations reached 1.647488e-05 1.646102e-05maximum number of iterations reached 0.002161267 0.002138176maximum number of iterations reached 0.0001018653 0.0001018623maximum number of iterations reached 0.0006809746 0.0006802016maximum number of iterations reached -4.215728e-05 -4.215755e-05maximum number of iterations reached 4.072184e-05 4.068063e-05maximum number of iterations reached 0.0004441897 0.0004440913maximum number of iterations reached 0.0001164145 0.0001164058maximum number of iterations reached 2.354621e-05 2.353651e-05maximum number of iterations reached 0.005766221 0.005606218maximum number of iterations reached -0.0004934485 -0.0004943767maximum number of iterations reached 0.001241952 0.001228713maximum number of iterations reached -0.0008007969 -0.0008023808maximum number of iterations reached 0.0002831274 0.0002830693maximum number of iterations reached 9.990185e-05 9.989192e-05maximum number of iterations reached 3.088514e-05 3.082934e-05maximum number of iterations reached -0.001653759 -0.001658551maximum number of iterations reached -0.0006733456 -0.0006739981maximum number of iterations reached 0.0001731115 0.0001717923maximum number of iterations reached 0.0001695214 0.0001695218maximum number of iterations reached 0.0004636852 0.0004633448maximum number of iterations reached 0.0004257329 0.0004256939maximum number of iterations reached -0.0008359722 -0.0008372727maximum number of iterations reached 2.509112e-05 2.505102e-05maximum number of iterations reached 0.0008018674 0.0008012582maximum number of iterations reached 0.0002373607 0.000237277maximum number of iterations reached 1.016113e-05 1.015416e-05maximum number of iterations reached 0.002004812 0.001997346maximum number of iterations reached 0.0008049586 0.0008038634maximum number of iterations reached 7.431355e-05 7.399154e-05maximum number of iterations reached 7.075845e-05 7.075988e-05maximum number of iterations reached 0.0007972051 0.0007964528maximum number of iterations reached 8.680928e-05 8.681002e-05maximum number of iterations reached 0.0003032747 0.0003031193maximum number of iterations reached 0.000765545 0.0007652078maximum number of iterations reached -0.00105804 -0.001059257maximum number of iterations reached -0.00110449 -0.001105408maximum number of iterations reached 0.000532639 0.0005317548maximum number of iterations reached 0.0008214764 0.0008209774maximum number of iterations reached -0.0007063557 -0.0007071769maximum number of iterations reached -0.0005161134 -0.0005165342maximum number of iterations reached 0.0004468147 0.0004460316maximum number of iterations reached -0.00020775 -0.0002078532maximum number of iterations reached 0.0008449454 0.0008444766maximum number of iterations reached 3.218194e-05 3.217449e-05maximum number of iterations reached 0.001219325 0.001219091maximum number of iterations reached -0.0001376639 -0.0001376639maximum number of iterations reached -8.920925e-05 -8.943756e-05maximum number of iterations reached -0.0002052821 -0.0002052981maximum number of iterations reached -6.204797e-05 -6.204799e-05maximum number of iterations reached 0.001541046 0.001518097maximum number of iterations reached 0.0007147593 0.0007143717maximum number of iterations reached -0.0003664987 -0.0003665415maximum number of iterations reached 0.0001451005 0.00014448maximum number of iterations reached 0.0004699021 0.0004697459maximum number of iterations reached -0.00191021 -0.001914043maximum number of iterations reached 0.0006512815 0.0006503637maximum number of iterations reached -0.0002960549 -0.0002960786maximum number of iterations reached 0.000508706 0.0005027126maximum number of iterations reached 0.0002782649 0.000278112maximum number of iterations reached 0.0002511528 0.0002509604maximum number of iterations reached 0.0004609133 0.0004552529maximum number of iterations reached -0.0002208343 -0.0002209743maximum number of iterations reached -0.0002866999 -0.0002867859maximum number of iterations reached 0.0001090415 0.0001090403maximum number of iterations reached -0.0004180351 -0.000422008maximum number of iterations reached 0.0007083177 0.0007078175maximum number of iterations reached 0.0006825988 0.0006818892maximum number of iterations reached 0.002088608 0.002079049maximum number of iterations reached 0.0002618397 0.0002617702maximum number of iterations reached -0.00109824 -0.00110005maximum number of iterations reached 0.002150588 0.002137041maximum number of iterations reached 0.0004059999 0.0004059379maximum number of iterations reached -0.0003909608 -0.0003912421maximum number of iterations reached 0.0004111221 0.000410935maximum number of iterations reached -0.000735575 -0.0007368565maximum number of iterations reached 0.0005005072 0.0005002743maximum number of iterations reached 0.001674122 0.001663894maximum number of iterations reached 0.0008836869 0.0008827829maximum number of iterations reached -0.001783551 -0.001798866maximum number of iterations reached 0.0001849772 0.0001849618maximum number of iterations reached 0.0002182843 0.0002181451maximum number of iterations reached 0.0001092655 0.000109266maximum number of iterations reached -0.0004622475 -0.000462644maximum number of iterations reached 2.771924e-05 2.771912e-05maximum number of iterations reached 0.002259881 0.002249628maximum number of iterations reached 0.001557161 0.001551036maximum number of iterations reached 0.0002159769 0.000215843maximum number of iterations reached 0.0008397394 0.0008396791maximum number of iterations reached 1.623846e-05 1.623873e-05maximum number of iterations reached -0.001302834 -0.00130766maximum number of iterations reached 0.00044169 0.0004415447maximum number of iterations reached -9.064698e-05 -9.06476e-05maximum number of iterations reached 0.0001289127 0.0001288394maximum number of iterations reached 1.235979e-05 1.235125e-05maximum number of iterations reached 0.002130727 0.002128501maximum number of iterations reached -0.000333753 -0.0003340368maximum number of iterations reached -0.001764856 -0.001796334maximum number of iterations reached 0.0008276152 0.0008267165maximum number of iterations reached 0.0007259813 0.0007258574maximum number of iterations reached -0.0008470771 -0.0008599167maximum number of iterations reached 0.001158054 0.001156503maximum number of iterations reached 0.0004659082 0.00046584maximum number of iterations reached 5.435392e-05 5.423425e-05maximum number of iterations reached 0.0009784292 0.0009776799maximum number of iterations reached -0.0003969935 -0.0003970294maximum number of iterations reached 0.0001172671 0.0001167939maximum number of iterations reached 3.469767e-05 3.469842e-05maximum number of iterations reached 0.0001701268 0.0001701084maximum number of iterations reached 0.0001549535 0.0001540144maximum number of iterations reached -0.0004808911 -0.0004809184maximum number of iterations reached -0.0008073934 -0.0008081174maximum number of iterations reached 1.042663e-05 1.04186e-05maximum number of iterations reached 0.001118293 0.001114336maximum number of iterations reached 0.0007991642 0.0007974118maximum number of iterations reached 0.0003100807 0.000306568maximum number of iterations reached 0.000954872 0.0009547178maximum number of iterations reached 9.055315e-05 9.055078e-05maximum number of iterations reached -0.0008254028 -0.0008271244maximum number of iterations reached 0.0005089791 0.000508373maximum number of iterations reached -0.0002710812 -0.0002711391maximum number of iterations reached -0.0004787697 -0.0004796216maximum number of iterations reached -0.001751673 -0.001753879maximum number of iterations reached -0.0001415695 -0.0001423768maximum number of iterations reached 1.529794e-05 1.528133e-05maximum number of iterations reached 9.842176e-05 9.842099e-05maximum number of iterations reached -0.003018191 -0.003046309maximum number of iterations reached 0.002232808 0.002226539maximum number of iterations reached -0.0007228015 -0.0007246423maximum number of iterations reached 0.001105201 0.001104619maximum number of iterations reached -0.001180653 -0.001182277maximum number of iterations reached 0.0009620575 0.000961513maximum number of iterations reached 0.0001366294 0.0001366116maximum number of iterations reached -0.001019192 -0.001020853maximum number of iterations reached -0.0009726747 -0.0009749723maximum number of iterations reached 2.258133e-05 2.254464e-05maximum number of iterations reached 4.48502e-05 4.485203e-05maximum number of iterations reached 0.0001947478 0.0001947241maximum number of iterations reached 0.001091729 0.001089565maximum number of iterations reached -0.001789434 -0.001799344maximum number of iterations reached 0.0001741155 0.0001741168maximum number of iterations reached 0.001499585 0.001497905maximum number of iterations reached -0.001556435 -0.001568593maximum number of iterations reached 0.0002272504 0.0002272439maximum number of iterations reached 0.0001835592 0.0001835578maximum number of iterations reached -0.001354364 -0.001361606maximum number of iterations reached 0.0002744091 0.0002743503maximum number of iterations reached 0.0003907409 0.0003906058maximum number of iterations reached -0.0002583549 -0.0002603765maximum number of iterations reached 0.002983051 0.002970263maximum number of iterations reached -0.0001814147 -0.0001814289maximum number of iterations reached 0.001439519 0.001436611maximum number of iterations reached 0.0002133434 0.0002132301maximum number of iterations reached 0.0002756231 0.0002754261maximum number of iterations reached 2.903149e-05 2.903146e-05maximum number of iterations reached 0.00124656 0.00124237maximum number of iterations reached 0.0008555867 0.0008538486maximum number of iterations reached 0.0006103381 0.0006018461maximum number of iterations reached 0.0008486274 0.0008478677maximum number of iterations reached 0.0003517976 0.0003516469maximum number of iterations reached -0.001252055 -0.001261414maximum number of iterations reached -0.002063643 -0.002074494maximum number of iterations reached 0.0001806654 0.0001794277maximum number of iterations reached -0.0001397592 -0.0001397653maximum number of iterations reached 1.861998e-05 1.859665e-05maximum number of iterations reached 0.0003389384 0.0003387532maximum number of iterations reached 0.0009318986 0.000929389maximum number of iterations reached 0.0001783807 0.0001770542maximum number of iterations reached 0.0005384693 0.0005382854maximum number of iterations reached 7.997596e-05 7.996812e-05maximum number of iterations reached 6.629815e-05 6.629753e-05maximum number of iterations reached 0.00133731 0.001332463maximum number of iterations reached 0.0004693014 0.0004687252maximum number of iterations reached -9.950614e-05 -9.956407e-05maximum number of iterations reached -1.863127e-05 -1.863325e-05maximum number of iterations reached -0.001432578 -0.001434215maximum number of iterations reached 0.0007669379 0.0007661913maximum number of iterations reached 0.0001872611 0.0001871948maximum number of iterations reached -0.0002692191 -0.000269236maximum number of iterations reached -0.001477521 -0.001484886maximum number of iterations reached 0.001309164 0.001305919maximum number of iterations reached 0.001024583 0.001021779maximum number of iterations reached 0.0005277201 0.0005274473maximum number of iterations reached -0.000275709 -0.0002760301maximum number of iterations reached -6.077161e-05 -6.078103e-05maximum number of iterations reached -0.001779304 -0.001788344maximum number of iterations reached 1.945091e-05 1.945076e-05maximum number of iterations reached 6.411619e-05 6.411628e-05maximum number of iterations reached -0.0008785443 -0.000885226maximum number of iterations reached 0.0005108105 0.0005107478maximum number of iterations reached 0.0001910309 0.0001910255maximum number of iterations reached 0.0009893868 0.0009829529maximum number of iterations reached 0.0005924278 0.0005923053maximum number of iterations reached -0.0007832029 -0.0007836101maximum number of iterations reached 0.0002359565 0.0002350056maximum number of iterations reached 0.0005731038 0.0005727613maximum number of iterations reached 0.000175961 0.0001759577maximum number of iterations reached 0.0001292783 0.0001284271maximum number of iterations reached 0.000537964 0.0005379114maximum number of iterations reached -0.001519592 -0.001523363maximum number of iterations reached 0.001308397 0.001283768maximum number of iterations reached -0.000194911 -0.0001949778maximum number of iterations reached 0.000211166 0.0002111433maximum number of iterations reached 0.004279801 0.004228636maximum number of iterations reached -0.000490142 -0.0004908786maximum number of iterations reached 0.004438555 0.004372761maximum number of iterations reached 0.0006228416 0.000622434maximum number of iterations reached 0.0002123367 0.0002105897maximum number of iterations reached -0.0003099594 -0.0003099719maximum number of iterations reached 0.000271457 0.0002711858maximum number of iterations reached -0.0002269472 -0.0002269832maximum number of iterations reached -0.0002686409 -0.0002689216maximum number of iterations reached -0.0007527064 -0.0007528996maximum number of iterations reached -0.0005243828 -0.0005249879maximum number of iterations reached 0.0007370423 0.0007363318maximum number of iterations reached 0.0007717741 0.0007713496maximum number of iterations reached -0.001818719 -0.001823048maximum number of iterations reached 0.0002778521 0.0002777017maximum number of iterations reached 0.002343846 0.002333927maximum number of iterations reached -0.0002913125 -0.0002915246maximum number of iterations reached -0.0005695063 -0.0005696905maximum number of iterations reached 0.00132454 0.001322031maximum number of iterations reached 0.000226876 0.0002268502maximum number of iterations reached -0.001486288 -0.001495268maximum number of iterations reached 0.000120296 0.000120297maximum number of iterations reached 0.0003961691 0.0003959423maximum number of iterations reached 0.0001781317 0.0001781258maximum number of iterations reached 0.000240371 0.0002399623maximum number of iterations reached -0.0003339064 -0.0003339527maximum number of iterations reached -0.000647659 -0.0006487442maximum number of iterations reached 0.0008396694 0.000838867maximum number of iterations reached -9.549509e-05 -9.554873e-05maximum number of iterations reached 0.0005434254 0.0005434153maximum number of iterations reached 0.001120684 0.001119698maximum number of iterations reached -0.0004378101 -0.0004389124maximum number of iterations reached 0.001364307 0.001363887maximum number of iterations reached -0.001110993 -0.001112133maximum number of iterations reached -0.0007250366 -0.0007324707maximum number of iterations reached 0.0002825542 0.0002825458maximum number of iterations reached -0.0002007438 -0.0002007911maximum number of iterations reached 0.000557131 0.0005508975maximum number of iterations reached 0.001625728 0.001622175maximum number of iterations reached 5.298605e-05 5.298502e-05maximum number of iterations reached -7.245448e-05 -7.258059e-05maximum number of iterations reached -0.0003069309 -0.0003069902maximum number of iterations reached -0.000521192 -0.0005215381maximum number of iterations reached -7.682817e-05 -7.701696e-05maximum number of iterations reached 0.003658469 0.003609336maximum number of iterations reached 5.162738e-05 5.162471e-05maximum number of iterations reached 5.070787e-05 5.057692e-05maximum number of iterations reached 0.0003129832 0.0003129674maximum number of iterations reached -0.0005974957 -0.00059783maximum number of iterations reached 0.0009993864 0.0009989473maximum number of iterations reached -0.0002258317 -0.0002258569maximum number of iterations reached 0.0001667117 0.0001654247maximum number of iterations reached -0.0006609128 -0.0006612904maximum number of iterations reached 0.0005596671 0.0005594104maximum number of iterations reached 5.036258e-05 5.036256e-05maximum number of iterations reached -0.001692939 -0.001695837maximum number of iterations reached 0.0005243146 0.0005242467maximum number of iterations reached -0.0001965115 -0.0001965721maximum number of iterations reached 0.001443575 0.001441106maximum number of iterations reached -0.0009553362 -0.0009568331maximum number of iterations reached -0.0004746887 -0.0004747564maximum number of iterations reached 0.001320758 0.001318512maximum number of iterations reached 3.746161e-05 3.737352e-05maximum number of iterations reached -4.650071e-05 -4.650086e-05maximum number of iterations reached -0.0005172402 -0.0005176049maximum number of iterations reached 0.000516919 0.0005165568maximum number of iterations reached -0.001510638 -0.001515287maximum number of iterations reached 0.001016465 0.001015203maximum number of iterations reached -7.84495e-05 -7.847121e-05maximum number of iterations reached 0.0003893286 0.0003892536maximum number of iterations reached 0.0003979094 0.0003975062maximum number of iterations reached -9.012418e-05 -9.013838e-05maximum number of iterations reached -6.311181e-05 -6.311607e-05maximum number of iterations reached 0.0007002449 0.0006999079maximum number of iterations reached 0.0005347013 0.000534052maximum number of iterations reached 0.0009281354 0.0009266787maximum number of iterations reached -0.0006025429 -0.0006042688maximum number of iterations reached 0.000184544 0.0001845461maximum number of iterations reached 0.002456266 0.002429224maximum number of iterations reached -0.001592114 -0.001599078maximum number of iterations reached 0.001169433 0.001168841maximum number of iterations reached -0.0007152985 -0.0007181361maximum number of iterations reached 0.001613499 0.001599486maximum number of iterations reached 0.002084933 0.002080265maximum number of iterations reached -0.0001086192 -0.0001086213maximum number of iterations reached 0.001404593 0.001386631maximum number of iterations reached 0.002363814 0.00235912maximum number of iterations reached 0.0004578507 0.0004577447maximum number of iterations reached 3.955159e-05 3.950773e-05maximum number of iterations reached 0.002127991 0.002117293maximum number of iterations reached -0.001730426 -0.00173528maximum number of iterations reached 0.0001953954 0.0001938501maximum number of iterations reached 0.002346855 0.002337514maximum number of iterations reached 0.0001087131 0.0001087003maximum number of iterations reached 0.0001323876 0.0001320448maximum number of iterations reached 0.004377922 0.004335702maximum number of iterations reached -0.0007215014 -0.0007225015maximum number of iterations reached -8.434154e-05 -8.470832e-05maximum number of iterations reached 0.0007254915 0.0007249195maximum number of iterations reached -0.0005205772 -0.000521412maximum number of iterations reached 0.0004365155 0.000430857maximum number of iterations reached 0.004150648 0.004073741maximum number of iterations reached -6.352928e-05 -6.35402e-05maximum number of iterations reached -0.0002749557 -0.0002752401maximum number of iterations reached -0.000929799 -0.0009312016maximum number of iterations reached 2.562588e-05 2.557651e-05maximum number of iterations reached 0.0008011755 0.0008010153maximum number of iterations reached -0.0003499346 -0.0003500626maximum number of iterations reached 3.098725e-05 3.092046e-05maximum number of iterations reached 0.0009315942 0.0009308221maximum number of iterations reached 0.001193378 0.001189335maximum number of iterations reached 0.0008851708 0.000884901maximum number of iterations reached -5.032051e-05 -5.032563e-05maximum number of iterations reached 0.0004434908 0.0004433326maximum number of iterations reached 0.0009243755 0.0009237794maximum number of iterations reached 0.0001389368 0.0001389302maximum number of iterations reached 0.0008619065 0.0008596717maximum number of iterations reached 0.001990023 0.001985666maximum number of iterations reached 0.001043116 0.001041263maximum number of iterations reached -2.53835e-05 -2.538513e-05maximum number of iterations reached -0.001975976 -0.001991955maximum number of iterations reached 0.0004317946 0.0004312073maximum number of iterations reached -0.00123057 -0.001235156maximum number of iterations reached 6.835965e-05 6.835944e-05maximum number of iterations reached 0.0005011392 0.0005008129maximum number of iterations reached 0.001875059 0.001868206maximum number of iterations reached -0.0005368606 -0.0005374217maximum number of iterations reached 0.0006848552 0.0006848398maximum number of iterations reached -0.0002070839 -0.0002071574maximum number of iterations reached 0.00102256 0.001018694maximum number of iterations reached 0.001421756 0.001420842maximum number of iterations reached -0.0001961134 -0.0001962224maximum number of iterations reached -0.0003042066 -0.0003048295maximum number of iterations reached 0.002075771 0.002072179maximum number of iterations reached 0.0001013426 0.0001013409maximum number of iterations reached -0.0001350872 -0.0001354679maximum number of iterations reached 0.001584826 0.001576692maximum number of iterations reached 0.001531072 0.00150148maximum number of iterations reached 0.001766381 0.001763227maximum number of iterations reached 1.122081e-05 1.122077e-05maximum number of iterations reached -2.420564e-05 -2.425422e-05maximum number of iterations reached 0.002790368 0.002776068maximum number of iterations reached 3.553055e-05 3.552828e-05maximum number of iterations reached 0.0006421267 0.0006328158maximum number of iterations reached 0.0006269981 0.0006268724maximum number of iterations reached -0.001483652 -0.001485264maximum number of iterations reached 0.0009432075 0.000934119maximum number of iterations reached 0.001057813 0.0010572maximum number of iterations reached -0.001021626 -0.001024491maximum number of iterations reached 0.000747189 0.0007353435maximum number of iterations reached 6.812543e-05 6.811968e-05maximum number of iterations reached -9.247056e-05 -9.250056e-05maximum number of iterations reached -0.0003398351 -0.0003399715maximum number of iterations reached -0.001422665 -0.001427149maximum number of iterations reached 0.001819154 0.001814707maximum number of iterations reached -0.0001269922 -0.0001270191maximum number of iterations reached -0.0003344798 -0.0003348071maximum number of iterations reached -0.00140577 -0.001409615maximum number of iterations reached -0.0004224775 -0.0004225356maximum number of iterations reached 0.0002497862 0.0002496804maximum number of iterations reached -2.480704e-05 -2.480748e-05maximum number of iterations reached -0.001392167 -0.001394467maximum number of iterations reached -0.0002202726 -0.0002203697maximum number of iterations reached 0.00220444 0.002195348maximum number of iterations reached -7.183747e-05 -7.183757e-05maximum number of iterations reached -0.001758314 -0.001768995maximum number of iterations reached 0.0001792261 0.0001792235maximum number of iterations reached -0.0007875233 -0.0007899306maximum number of iterations reached -0.001636638 -0.001638794maximum number of iterations reached -0.000551953 -0.0005529123maximum number of iterations reached -0.0001485272 -0.0001493039maximum number of iterations reached 0.0006660507 0.0006651944maximum number of iterations reached -0.0002044568 -0.0002045118maximum number of iterations reached 0.0005668779 0.0005668424maximum number of iterations reached -0.0007083802 -0.0007090341maximum number of iterations reached -0.001206234 -0.001209691maximum number of iterations reached 6.365379e-05 6.365512e-05maximum number of iterations reached -0.0006633609 -0.0006640219maximum number of iterations reached 0.001260715 0.001250557maximum number of iterations reached 0.0008827486 0.0008820915maximum number of iterations reached -0.0009389025 -0.000939521maximum number of iterations reached -0.0002419074 -0.0002434299maximum number of iterations reached -0.0004443607 -0.0004444884maximum number of iterations reached -0.0001547056 -0.0001547245maximum number of iterations reached 2.544837e-05 2.541988e-05maximum number of iterations reached 0.0001288258 0.0001287975maximum number of iterations reached -0.0003974837 -0.0003976868maximum number of iterations reached 1.148147e-05 1.147272e-05maximum number of iterations reached 0.0003318848 0.000331878maximum number of iterations reached -0.0007933027 -0.0007936473maximum number of iterations reached 0.0004785809 0.0004778261maximum number of iterations reached 0.0002461425 0.0002461201maximum number of iterations reached 0.0001314598 0.0001314587maximum number of iterations reached 0.0008138249 0.0008100783maximum number of iterations reached 5.565151e-05 5.546017e-05maximum number of iterations reached -6.683482e-05 -6.684937e-05maximum number of iterations reached -0.000679512 -0.0006808364maximum number of iterations reached -0.0002602977 -0.0002603309maximum number of iterations reached 0.0005826741 0.0005819687maximum number of iterations reached 0.0001347202 0.0001347218maximum number of iterations reached -0.002654585 -0.002678459maximum number of iterations reached 0.0003142043 0.0003141728maximum number of iterations reached -0.0006793496 -0.00068002maximum number of iterations reached -0.0002291646 -0.0002292044maximum number of iterations reached -0.002252992 -0.002288297maximum number of iterations reached -0.001722855 -0.001729188maximum number of iterations reached 0.0001406191 0.0001405464maximum number of iterations reached 0.0009031354 0.0009026762maximum number of iterations reached -6.025606e-05 -6.027055e-05maximum number of iterations reached -0.001539986 -0.00154919maximum number of iterations reached 0.0002080495 0.0002080398maximum number of iterations reached 0.0008112951 0.0008065253maximum number of iterations reached 0.000145958 0.0001459584maximum number of iterations reached 0.0001843556 0.0001843165maximum number of iterations reached 0.0001920325 0.0001920306maximum number of iterations reached -0.0005869265 -0.0005877769maximum number of iterations reached 0.0001763175 0.0001763085maximum number of iterations reached 0.0002304341 0.0002303919maximum number of iterations reached 0.0001767154 0.0001767164maximum number of iterations reached -0.0008470839 -0.0008494292maximum number of iterations reached -0.0003246184 -0.00032536maximum number of iterations reached 0.001126447 0.001126067maximum number of iterations reached -0.0002640303 -0.0002640344maximum number of iterations reached -0.001380371 -0.001393135maximum number of iterations reached -1.121943e-05 -1.12199e-05maximum number of iterations reached -0.0001797446 -0.0001797451maximum number of iterations reached -0.001118264 -0.001131426maximum number of iterations reached -0.001119427 -0.001120675maximum number of iterations reached -0.0003912239 -0.000391253maximum number of iterations reached 0.0002938128 0.0002921162maximum number of iterations reached 0.000453857 0.000453847maximum number of iterations reached 8.647624e-05 8.64751e-05maximum number of iterations reached -0.0001868557 -0.0001875329maximum number of iterations reached -8.030402e-05 -8.032011e-05maximum number of iterations reached -0.0004177092 -0.000417833maximum number of iterations reached 0.0002905898 0.0002879995maximum number of iterations reached 0.001946201 0.001933794maximum number of iterations reached -0.001279094 -0.001280326maximum number of iterations reached 3.696014e-05 3.688182e-05maximum number of iterations reached 0.000425687 0.0004254952maximum number of iterations reached 0.0006132699 0.0006126978maximum number of iterations reached 0.0001013238 0.0001013235maximum number of iterations reached -0.0005844103 -0.0005846779maximum number of iterations reached 0.0001497495 0.0001488526maximum number of iterations reached 0.000505361 0.0005052702maximum number of iterations reached -0.0004236487 -0.0004240799maximum number of iterations reached 0.0006973682 0.0006969284maximum number of iterations reached 0.0008887416 0.0008883368maximum number of iterations reached -0.0002034148 -0.0002034344maximum number of iterations reached -0.0005512281 -0.0005518355maximum number of iterations reached 0.001877953 0.001869412maximum number of iterations reached 0.0002415949 0.0002413904maximum number of iterations reached 0.0006966529 0.0006959719maximum number of iterations reached -6.702714e-05 -6.703376e-05maximum number of iterations reached 5.6721e-05 5.654772e-05maximum number of iterations reached -0.0004618317 -0.0004622717maximum number of iterations reached -0.0003627259 -0.0003628913maximum number of iterations reached -7.342523e-05 -7.342543e-05maximum number of iterations reached -0.0009746854 -0.0009762277maximum number of iterations reached 0.00133039 0.001329136maximum number of iterations reached -6.074122e-05 -6.07491e-05maximum number of iterations reached 0.0004317529 0.0004315809maximum number of iterations reached 0.0009296411 0.0009270207maximum number of iterations reached 0.0004008115 0.0004005895maximum number of iterations reached 0.0004071398 0.0004067453maximum number of iterations reached -3.413227e-05 -3.413563e-05maximum number of iterations reached 0.0001130774 0.0001130289maximum number of iterations reached 0.0001054065 0.0001054066maximum number of iterations reached 0.0002115474 0.0002115409maximum number of iterations reached -0.0009067089 -0.0009089652maximum number of iterations reached 0.00160077 0.001599464maximum number of iterations reached -0.0006378514 -0.0006380055maximum number of iterations reached -0.001328991 -0.001337552maximum number of iterations reached 0.0006334311 0.000633409maximum number of iterations reached -0.0003470436 -0.0003470661maximum number of iterations reached -0.0005210556 -0.0005265626maximum number of iterations reached 0.001066495 0.00106495maximum number of iterations reached 8.666884e-05 8.666757e-05maximum number of iterations reached 0.0009152824 0.0009054721maximum number of iterations reached 0.001812339 0.001807205maximum number of iterations reached -0.0004361956 -0.0004362731maximum number of iterations reached 8.497195e-05 8.463688e-05maximum number of iterations reached -0.000894191 -0.0008960451maximum number of iterations reached 0.0005572331 0.0005570366maximum number of iterations reached 0.0005471541 0.0005394596maximum number of iterations reached 0.00116935 0.001164671maximum number of iterations reached 0.0007749388 0.0007746835maximum number of iterations reached 1.93756e-05 1.934861e-05maximum number of iterations reached -0.0005163952 -0.00051713maximum number of iterations reached -0.0002259717 -0.0002260046maximum number of iterations reached -0.000198188 -0.0001983702maximum number of iterations reached 0.001068323 0.001065249maximum number of iterations reached 0.0004466418 0.0004466199maximum number of iterations reached 0.0005232555 0.0005226556maximum number of iterations reached -0.0001125981 -0.0001126539maximum number of iterations reached -0.00107828 -0.001080092maximum number of iterations reached 8.122612e-05 8.087083e-05maximum number of iterations reached 0.0002777852 0.000277736maximum number of iterations reached 0.001358788 0.001355352maximum number of iterations reached 0.002167167 0.002159537maximum number of iterations reached -1.158664e-05 -1.158689e-05maximum number of iterations reached 2.233056e-05 2.230307e-05maximum number of iterations reached -1.185845e-05 -1.185844e-05maximum number of iterations reached 0.0007311455 0.0007299909maximum number of iterations reached 0.001314611 0.001313031maximum number of iterations reached -0.0004777766 -0.0004779816maximum number of iterations reached 9.374057e-06 9.368989e-06maximum number of iterations reached 0.000100838 0.0001008376maximum number of iterations reached 0.001412886 0.001407614maximum number of iterations reached -0.0008038537 -0.0008042095maximum number of iterations reached 0.0001422475 0.000142211maximum number of iterations reached 0.001719963 0.001716332maximum number of iterations reached 0.0007062564 0.0007048905maximum number of iterations reached 0.002076726 0.002065254maximum number of iterations reached 4.146446e-05 4.146382e-05maximum number of iterations reached 0.0001503254 0.0001502247maximum number of iterations reached 7.207654e-05 7.207725e-05maximum number of iterations reached -0.0009672059 -0.0009675573maximum number of iterations reached 0.0008850439 0.0008823033maximum number of iterations reached -0.0003588701 -0.0003589017maximum number of iterations reached 0.0005460966 0.0005458692maximum number of iterations reached -0.0008653259 -0.0008699488maximum number of iterations reached -0.002070983 -0.002080459maximum number of iterations reached 0.0004153143 0.0004150422maximum number of iterations reached 0.0004086595 0.0004063049maximum number of iterations reached 0.002528523 0.002522931maximum number of iterations reached 0.0004434402 0.0004434033maximum number of iterations reached 0.0006734681 0.0006729037maximum number of iterations reached 7.912071e-05 7.91152e-05maximum number of iterations reached 5.953679e-05 5.94917e-05maximum number of iterations reached 0.000655045 0.0006549641maximum number of iterations reached -0.0004137656 -0.0004140973maximum number of iterations reached 1.219684e-05 1.218692e-05maximum number of iterations reached 0.003796742 0.003757337maximum number of iterations reached -0.0004055093 -0.0004057627maximum number of iterations reached 0.000120937 0.000120317maximum number of iterations reached 0.002658574 0.002645531maximum number of iterations reached 0.0003507003 0.0003506157maximum number of iterations reached 0.001077564 0.001076074maximum number of iterations reached 0.001265432 0.001264423maximum number of iterations reached 0.001528333 0.001523882maximum number of iterations reached -0.0001763132 -0.0001763526maximum number of iterations reached 1.784946e-05 1.782522e-05maximum number of iterations reached 0.000524419 0.0005243172maximum number of iterations reached -0.0009696064 -0.0009706426maximum number of iterations reached -5.51334e-05 -5.51464e-05maximum number of iterations reached -0.001795477 -0.001808605maximum number of iterations reached 0.0005310954 0.0005306746maximum number of iterations reached -0.002124915 -0.002132864maximum number of iterations reached 2.065368e-05 2.062566e-05maximum number of iterations reached 0.0001119698 0.0001119496maximum number of iterations reached 0.0002865156 0.0002864517maximum number of iterations reached 0.0002246452 0.0002246285maximum number of iterations reached 0.0003909708 0.0003909168maximum number of iterations reached 0.0006059142 0.0006055891maximum number of iterations reached -0.002109082 -0.002113775maximum number of iterations reached -0.000911914 -0.0009126637maximum number of iterations reached -0.0007147831 -0.0007167626maximum number of iterations reached 0.0005859915 0.0005857537maximum number of iterations reached 0.0007132545 0.0007122008maximum number of iterations reached 9.910293e-05 9.91001e-05maximum number of iterations reached -0.0001443869 -0.000144454maximum number of iterations reached 5.539387e-05 5.539357e-05maximum number of iterations reached 0.0001208786 0.0001207808maximum number of iterations reached -5.581871e-05 -5.581908e-05maximum number of iterations reached 0.0008825779 0.0008821737maximum number of iterations reached -0.0002973214 -0.0002984283maximum number of iterations reached 3.654493e-05 3.654485e-05maximum number of iterations reached 0.000323786 0.0003237796maximum number of iterations reached -0.00085755 -0.0008681339maximum number of iterations reached 0.002275265 0.0022725maximum number of iterations reached -0.000489681 -0.0004898004maximum number of iterations reached 0.001078989 0.001062055maximum number of iterations reached 0.002050958 0.002046744maximum number of iterations reached -1.355441e-05 -1.355509e-05maximum number of iterations reached 0.0003055362 0.0003038336maximum number of iterations reached 0.0009734942 0.0009720849maximum number of iterations reached -0.0002210651 -0.0002210868maximum number of iterations reached 1.426922e-05 1.426426e-05maximum number of iterations reached -0.001025285 -0.001026858maximum number of iterations reached 0.000367293 0.000367226maximum number of iterations reached 0.0007061232 0.0006958586maximum number of iterations reached -0.00101652 -0.00102021maximum number of iterations reached 0.000513707 0.0005135537maximum number of iterations reached 2.193914e-05 2.190525e-05maximum number of iterations reached 0.000506111 0.0005055355maximum number of iterations reached 0.0006261395 0.0006259888maximum number of iterations reached 0.0007583053 0.000757265maximum number of iterations reached 0.001069765 0.001068144maximum number of iterations reached 1.22575e-05 1.224544e-05maximum number of iterations reached -0.0001404629 -0.0001404729maximum number of iterations reached -0.001660143 -0.001664073maximum number of iterations reached -0.000560297 -0.0005604609maximum number of iterations reached -0.0005977732 -0.0005984934maximum number of iterations reached 0.0001506421 0.0001506253maximum number of iterations reached 0.0002544303 0.0002543885maximum number of iterations reached -1.219509e-05 -1.219534e-05maximum number of iterations reached -0.0004759074 -0.0004770027maximum number of iterations reached 0.000940791 0.000940436maximum number of iterations reached 0.0006023204 0.0006008943maximum number of iterations reached 1.338217e-05 1.338217e-05maximum number of iterations reached 4.987238e-05 4.98757e-05maximum number of iterations reached 3.94772e-05 3.940467e-05maximum number of iterations reached 7.640413e-05 7.640398e-05maximum number of iterations reached -0.0001938009 -0.0001941122maximum number of iterations reached -0.0009052624 -0.0009061622maximum number of iterations reached 0.0004962633 0.0004958063maximum number of iterations reached 0.000800136 0.000799707maximum number of iterations reached 0.002433526 0.002418778maximum number of iterations reached -9.372793e-05 -9.373439e-05maximum number of iterations reached 3.543961e-05 3.543959e-05maximum number of iterations reached 0.0002613947 0.0002612773maximum number of iterations reached 0.0004159521 0.0004159136maximum number of iterations reached 0.001004172 0.001003349maximum number of iterations reached -0.0006378518 -0.0006382051maximum number of iterations reached 0.001570094 0.001569211maximum number of iterations reached -0.001753771 -0.001774956maximum number of iterations reached 0.00230826 0.002305298maximum number of iterations reached -0.0002821108 -0.000282154maximum number of iterations reached -0.0008920405 -0.0009007396maximum number of iterations reached -0.0001110857 -0.0001110884maximum number of iterations reached -8.930151e-05 -8.934154e-05maximum number of iterations reached 0.0003562633 0.0003556192maximum number of iterations reached 0.003400786 0.003382608maximum number of iterations reached 0.0001601013 0.0001600954maximum number of iterations reached -0.000858861 -0.0008684938maximum number of iterations reached 0.0004983614 0.0004981796maximum number of iterations reached 3.120828e-05 3.120912e-05maximum number of iterations reached -0.0002834106 -0.0002855975maximum number of iterations reached -0.0003378264 -0.0003379061maximum number of iterations reached 0.0002786864 0.0002786089maximum number of iterations reached 0.0002602207 0.0002592237maximum number of iterations reached 0.003514255 0.003458508maximum number of iterations reached -4.365417e-05 -4.36646e-05maximum number of iterations reached -0.0001792737 -0.0001803522maximum number of iterations reached 1.393722e-05 1.39369e-05maximum number of iterations reached -3.710954e-05 -3.712246e-05maximum number of iterations reached 0.0006076818 0.0006074352maximum number of iterations reached -0.0004087178 -0.000408899maximum number of iterations reached 0.0001479847 0.0001476604maximum number of iterations reached -0.0003712157 -0.0003713797maximum number of iterations reached 8.703157e-05 8.701999e-05maximum number of iterations reached 0.0007370671 0.0007365608maximum number of iterations reached -0.000515879 -0.0005161404maximum number of iterations reached 5.597309e-05 5.580801e-05maximum number of iterations reached 0.001142865 0.001141261maximum number of iterations reached 0.0004344089 0.0004343331maximum number of iterations reached -0.0006018111 -0.0006019459maximum number of iterations reached 0.0007713792 0.0007707742maximum number of iterations reached -0.0007779799 -0.0007786623maximum number of iterations reached -0.0005824336 -0.0005837119maximum number of iterations reached -2.96402e-05 -2.968899e-05maximum number of iterations reached 0.001292508 0.001288261maximum number of iterations reached 0.0005425635 0.0005419881maximum number of iterations reached 6.665088e-05 6.665204e-05maximum number of iterations reached 0.0008334817 0.0008332565maximum number of iterations reached 0.000245807 0.0002444129maximum number of iterations reached 0.001583978 0.001580917maximum number of iterations reached -0.001105747 -0.001108554maximum number of iterations reached 0.001179093 0.001177354maximum number of iterations reached 0.0007313345 0.0007310335maximum number of iterations reached 1.823496e-05 1.821803e-05maximum number of iterations reached -3.656706e-05 -3.656668e-05maximum number of iterations reached -0.0001621948 -0.0001622622maximum number of iterations reached 1.60971e-05 1.609717e-05maximum number of iterations reached 0.0004760047 0.0004758562maximum number of iterations reached 0.0003653296 0.0003650199maximum number of iterations reached 0.001722898 0.00172197maximum number of iterations reached 0.0006460426 0.0006447286maximum number of iterations reached 0.001102407 0.001096002maximum number of iterations reached 0.0002920445 0.0002920406maximum number of iterations reached -0.0001768006 -0.0001768033maximum number of iterations reached 0.0005857012 0.0005856663maximum number of iterations reached -0.0003040309 -0.000304053maximum number of iterations reached 0.0009465818 0.0009398857maximum number of iterations reached 0.001408512 0.001405959maximum number of iterations reached -0.0002212577 -0.0002213033maximum number of iterations reached 0.0001395978 0.0001389314maximum number of iterations reached -0.0006054524 -0.0006065854maximum number of iterations reached 1.21918e-05 1.219272e-05maximum number of iterations reached 0.0001500759 0.0001493093maximum number of iterations reached 0.0006919316 0.0006912728maximum number of iterations reached -0.0006067476 -0.0006072466maximum number of iterations reached 0.0004842141 0.0004785865maximum number of iterations reached 0.001090943 0.001087087maximum number of iterations reached -0.0003174421 -0.0003175582maximum number of iterations reached 5.116599e-05 5.101782e-05maximum number of iterations reached -0.0001038772 -0.0001038848maximum number of iterations reached -0.0005211654 -0.0005215351maximum number of iterations reached 0.0001710348 0.0001698435maximum number of iterations reached 0.0015126 0.001510116maximum number of iterations reached 0.000990934 0.0009898444maximum number of iterations reached 9.754146e-05 9.730152e-05maximum number of iterations reached 0.003114935 0.003087246maximum number of iterations reached -0.0002934772 -0.0002936382maximum number of iterations reached 0.003917272 0.003887683maximum number of iterations reached -0.000193039 -0.0001930893maximum number of iterations reached 0.0006534205 0.0006529039maximum number of iterations reached 0.00016914 0.0001690337maximum number of iterations reached 1.248335e-05 1.2472e-05maximum number of iterations reached -0.0002502848 -0.0002503439maximum number of iterations reached 0.0004399885 0.0004397114maximum number of iterations reached 1.966706e-05 1.964076e-05maximum number of iterations reached 0.002259999 0.002250029maximum number of iterations reached 0.0008711687 0.0008700309maximum number of iterations reached 0.001210383 0.001206384maximum number of iterations reached 0.00114322 0.001138414maximum number of iterations reached -0.0001401661 -0.0001402477maximum number of iterations reached 0.0001103081 0.0001102935maximum number of iterations reached -0.0003917084 -0.0003921029maximum number of iterations reached -0.0004804619 -0.0004805718maximum number of iterations reached -0.0012048 -0.001209442maximum number of iterations reached 0.001292183 0.001290978maximum number of iterations reached -0.0008113735 -0.0008134529maximum number of iterations reached 0.0003246363 0.0003246281maximum number of iterations reached 0.001746887 0.001739maximum number of iterations reached 0.0005614573 0.0005608696maximum number of iterations reached -0.000232245 -0.0002322923maximum number of iterations reached 0.0001287303 0.0001287228maximum number of iterations reached 0.0007862294 0.0007815667maximum number of iterations reached 0.002337412 0.002333983maximum number of iterations reached -0.0002398224 -0.0002398405maximum number of iterations reached -0.0001180212 -0.0001183015maximum number of iterations reached 0.001781471 0.001779209maximum number of iterations reached 0.0004222253 0.0004222012maximum number of iterations reached 0.000545634 0.0005388763maximum number of iterations reached 0.001241325 0.001238863maximum number of iterations reached 0.001404149 0.001403393maximum number of iterations reached 4.392161e-05 4.38557e-05maximum number of iterations reached 0.0005145678 0.0005145553maximum number of iterations reached -0.0002279073 -0.00022794maximum number of iterations reached 0.0002549139 0.0002528393maximum number of iterations reached -0.0005416508 -0.00054273maximum number of iterations reached -1.778739e-05 -1.778742e-05maximum number of iterations reached 5.932668e-05 5.916395e-05maximum number of iterations reached 0.0004862834 0.0004858472maximum number of iterations reached 0.0006828026 0.0006819481maximum number of iterations reached 3.6244e-05 3.615237e-05maximum number of iterations reached 3.257929e-05 3.257976e-05maximum number of iterations reached -0.001877181 -0.001882111maximum number of iterations reached 0.00111222 0.001107876maximum number of iterations reached 0.00024892 0.0002487339maximum number of iterations reached 0.0007448575 0.0007441939maximum number of iterations reached -0.000247811 -0.0002478757maximum number of iterations reached 2.316863e-05 2.312617e-05maximum number of iterations reached -0.0004215093 -0.0004215571maximum number of iterations reached -0.0009154122 -0.0009170261maximum number of iterations reached 0.001385513 0.001354983maximum number of iterations reached 0.001339016 0.001336667maximum number of iterations reached -0.001015827 -0.00101808maximum number of iterations reached 0.00239215 0.002379771maximum number of iterations reached -0.000480055 -0.0004808379maximum number of iterations reached -0.001002354 -0.001002828maximum number of iterations reached -0.0007943865 -0.0007986615maximum number of iterations reached 0.001239243 0.001237776maximum number of iterations reached 0.001836798 0.001825102maximum number of iterations reached 0.001025829 0.001025202maximum number of iterations reached 0.0007707228 0.0007654634maximum number of iterations reached 0.0001244661 0.0001244652maximum number of iterations reached 0.002271553 0.002249931maximum number of iterations reached 7.674062e-05 7.674035e-05maximum number of iterations reached 0.0009281203 0.000926672maximum number of iterations reached -2.515106e-05 -2.515109e-05maximum number of iterations reached 0.001146029 0.001136226

ランダムフォレスト

ロジスティック回帰

ニューラルネットワーク

# weights:  19
initial  value 933.997337 
iter  10 value 300.178552
iter  20 value 277.683055
iter  30 value 275.413400
final  value 275.390132 
converged
...
# weights:  73
initial  value 425.217856 
iter  10 value 217.175696
iter  20 value 206.790641
iter  30 value 201.110413
iter  40 value 196.924896
iter  50 value 194.350197
iter  60 value 192.038326
iter  70 value 191.243415
iter  80 value 190.156316
iter  90 value 189.236498
iter 100 value 188.731044
final  value 188.731044 
stopped after 100 iterations
glm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredglm.fit: fitted probabilities numerically 0 or 1 occurredSetting levels: control = X1, case = X2
Setting direction: controls < cases
Setting levels: control = X1, case = X2
Setting direction: controls > cases
Setting levels: control = X1, case = X2
Setting direction: controls < cases
Setting levels: control = X1, case = X2
Infinite values(s) in predictor, cannot build a valid ROC curve. NaN returned instead. roc.default(response, predictor, auc = TRUE, ...) でエラー: 
  No valid data provided.

まだコード解読中。

#for the Gbm grid search model (validation)
probsTestGbmGridVal = predict(modelGbm_CC_GADA_Lr, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestGbmGridVal$X2)
predTestGbmGridVal = log(as.numeric(probsTestGbmGridVal$X2)/(1-as.numeric(probsTestGbmGridVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTestGbmGridval <- roc(dataset_val[,Youroutcomevariable], predTestGbmGridVal)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestGbmGridval = auc(roc_objTestGbmGridval)
AUC_objTestGbmGridval
Area under the curve: 0.7143
ci.auc(roc_objTestGbmGridval)
95% CI: 0.6535-0.7751 (DeLong)
#for the Svm grid search model (validation)
probsTestSvmGridVal = predict(modelSvm_CC_GADA_Lr, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestSvmGridVal$X2)
predTestSvmGridVal = log(as.numeric(probsTestSvmGridVal$X2)/(1-as.numeric(probsTestSvmGridVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTestSvmGridval <- roc(dataset_val[,Youroutcomevariable], predTestSvmGridVal)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestSvmGridval = auc(roc_objTestSvmGridval)
AUC_objTestSvmGridval
Area under the curve: 0.5737
ci.auc(roc_objTestSvmGridval)
95% CI: 0.5092-0.6382 (DeLong)
#for the knn grid search model (validation)
probsTestknnGridVal = predict(modelknn_CC_GADA_Lr, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestknnGridVal$X2)
probsTestknnGridVal$X2[probsTestknnGridVal$X2 == 1] <- 0.999999
probsTestknnGridVal$X2[probsTestknnGridVal$X2 == 0] <- 0.000001
predTestknnGridVal = log(as.numeric(probsTestknnGridVal$X2)/(1-as.numeric(probsTestknnGridVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTestknnGridval <- roc(dataset_val[,Youroutcomevariable], predTestknnGridVal)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestknnGridval = auc(roc_objTestknnGridval)
AUC_objTestknnGridval
Area under the curve: 0.6588
ci.auc(roc_objTestknnGridval)
95% CI: 0.5925-0.7251 (DeLong)
#for the nnet grid search model (validation)
probsTestnnetGridVal = predict(modelnnet_CC_GADA_Lr, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestnnetGridVal$X2)
predTestnnetGridVal = log(as.numeric(probsTestnnetGridVal$X2)/(1-as.numeric(probsTestnnetGridVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTestnnetGridval <- roc(dataset_val[,Youroutcomevariable], predTestnnetGridVal)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestnnetGridval = auc(roc_objTestnnetGridval)
AUC_objTestnnetGridval
Area under the curve: 0.6493
ci.auc(roc_objTestnnetGridval)
95% CI: 0.5809-0.7176 (DeLong)
#for the rf model (validation)
probsTestRfVal = predict(modelRf_CC_GADA, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestRfVal$X2)
probsTestRfVal$X2[probsTestRfVal$X2 == 1] <- 0.999999
probsTestRfVal$X2[probsTestRfVal$X2 == 0] <- 0.000001
predTestRfVal = log(as.numeric(probsTestRfVal$X2)/(1-as.numeric(probsTestRfVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTestRfval <- roc(dataset_val[,Youroutcomevariable], predTestRfVal)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestRfval = auc(roc_objTestRfval)
AUC_objTestRfval
Area under the curve: 0.65
ci.auc(roc_objTestRfval)
95% CI: 0.5806-0.7194 (DeLong)
#for the logistic regression model (validation)
probsTestlgVal = predict(modelLG_CC_GADA, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestlgVal$X2)
predTestLGVal = log(as.numeric(probsTestlgVal$X2)/(1-as.numeric(probsTestlgVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTestLGval <- roc(dataset_val[,Youroutcomevariable], predTestLGVal)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestLGval = auc(roc_objTestLGval)
AUC_objTestLGval
Area under the curve: 0.646
ci.auc(roc_objTestLGval)
95% CI: 0.5773-0.7148 (DeLong)
#for the logistic regression model MARS (validation)
probsTestmarsVal = predict(modelMARS_CC_GADA_Lr, newdata=dataset_val, type = "prob")
dataset_val =data.frame(dataset_val,probsTestmarsVal$X2)
# predTestMARSVal = log(as.numeric(probsTestmarsVal$X2)/(1-as.numeric(probsTestmarsVal$X2)))
#then create a roc object and calculate the ROC on the validation dataset
roc_objTesMARSGval <- roc(dataset_val[,Youroutcomevariable], probsTestmarsVal$X2)
Setting levels: control = X1, case = X2
Setting direction: controls < cases
AUC_objTestMARSval = auc(roc_objTesMARSGval)
AUC_objTestMARSval
Area under the curve: 0.6707
ci.auc(roc_objTesMARSGval)
95% CI: 0.6102-0.7313 (DeLong)
#plot the roc curves
plot(roc_objTestRfval, col = "gray85",main = "",add=FALSE)
plot(roc_objTestLGval, col = "gray45", add = TRUE)
plot(roc_objTestSvmGridval, co = "black", add = TRUE)
plot(roc_objTestGbmGridval, col = "gray85",  lty = 3, add = TRUE)
plot(roc_objTestnnetGridval, col = "black",lty = 3, add = TRUE)
plot(roc_objTestknnGridval, col = "gray45", lty = 3, add = TRUE)
plot(roc_objTesMARSGval, col = "gray99", lty = 3, add = TRUE)

model=c('LR','GBM','SVM','RF','Nnet','Knn','LGMARS')
AUC = c(AUC_objTestLGval, AUC_objTestGbmGridval, AUC_objTestSvmGridval, AUC_objTestRfval, AUC_objTestnnetGridval, AUC_objTestknnGridval,AUC_objTestMARSval)
ValResults = data.frame(model, AUC)

myft <- regulartable(ValResults)
myft <- theme_vanilla(myft)
myft <- autofit(myft)
doc <- read_docx()
doc <- body_add_flextable(doc, value = myft)
#print(doc, target = paste0("extAUC_sampling", sampling, "formula_",as.character(formula.model)[3],".docx"))
print(doc) ### 外部ファイルではなく
rdocx document with 2 element(s)

* styles:
                Normal              heading 1              heading 2 
           "paragraph"            "paragraph"            "paragraph" 
             heading 3 Default Paragraph Font           Normal Table 
           "paragraph"            "character"                "table" 
               No List                 strong               centered 
           "numbering"            "character"            "paragraph" 
        table_template    Light List Accent 2            Titre 1 Car 
               "table"                "table"            "character" 
           Titre 2 Car            Titre 3 Car          Image Caption 
           "character"            "character"            "paragraph" 
         Table Caption     Table Professional                  toc 1 
           "paragraph"                "table"            "paragraph" 
                 toc 2           Balloon Text    Texte de bulles Car 
           "paragraph"            "paragraph"            "character" 
          reference_id          graphic title            table title 
           "character"            "paragraph"            "paragraph" 

* Content at cursor location:
#use prediction-recall curve to validate the models########################################################
#calculate the AUPRC for the validation dataset
prRFval = pr.curve(1-dataset_val$probsTestRfVal.X2,dataset_val$probsTestRfVal.X2, curve = TRUE)
prLGval =  pr.curve(1-dataset_val$probsTestlgVal.X2,dataset_val$probsTestlgVal.X2, curve = TRUE) 
prSVMval = pr.curve(1-dataset_val$probsTestSvmGridVal.X2,dataset_val$probsTestSvmGridVal.X2, curve = TRUE) 
prGBMval = pr.curve(1-dataset_val$probsTestGbmGridVal.X2,dataset_val$probsTestGbmGridVal.X2, curve = TRUE) 
prNNval = pr.curve(1-dataset_val$probsTestnnetGridVal.X2,dataset_val$probsTestnnetGridVal.X2, curve = TRUE)
prKNNval = pr.curve(1-dataset_val$probsTestknnGridVal.X2,dataset_val$probsTestknnGridVal.X2, curve = TRUE)
prMARSval = pr.curve(1-dataset_val$probsTestmarsVal,dataset_val$probsTestmarsVal.X2, curve = TRUE)
#return the AUPRC
prRFval

  Precision-recall curve

    Area under curve (Integral):
     0.9993581 

    Area under curve (Davis & Goadrich):
     0.9993581 

    Curve for scores from  0  to  1 
    ( can be plotted with plot(x) )
prLGval

  Precision-recall curve

    Area under curve (Integral):
     1 

    Area under curve (Davis & Goadrich):
     1 

    Curve for scores from  1.320738e-06  to  0.9999987 
    ( can be plotted with plot(x) )
prSVMval

  Precision-recall curve

    Area under curve (Integral):
     1 

    Area under curve (Davis & Goadrich):
     1 

    Curve for scores from  0.1025672  to  0.8974328 
    ( can be plotted with plot(x) )
prGBMval

  Precision-recall curve

    Area under curve (Integral):
     0.9999021 

    Area under curve (Davis & Goadrich):
     0.9999021 

    Curve for scores from  0.01101329  to  0.9889867 
    ( can be plotted with plot(x) )
prNNval

  Precision-recall curve

    Area under curve (Integral):
     1 

    Area under curve (Davis & Goadrich):
     1 

    Curve for scores from  0.004511938  to  0.9954881 
    ( can be plotted with plot(x) )
prKNNval

  Precision-recall curve

    Area under curve (Integral):
     1 

    Area under curve (Davis & Goadrich):
     1 

    Curve for scores from  0.01769912  to  0.9823009 
    ( can be plotted with plot(x) )
prMARSval

  Precision-recall curve

    Area under curve (Integral):
     0.9983392 

    Area under curve (Davis & Goadrich):
     0.9983392 

    Curve for scores from  0.02699495  to  0.9730051 
    ( can be plotted with plot(x) )
model=c('LG','GBM','SVM','RF','Nnet','Knn','LGMARS')
pr = c(prLGval$auc.integral, prGBMval$auc.integral, prSVMval$auc.integral, prRFval$auc.integral, prNNval$auc.integral, prKNNval$auc.integral,prMARSval$auc.integral)
ValResults = data.frame(model, pr)

myft <- regulartable(ValResults)
myft <- theme_vanilla(myft)
myft <- autofit(myft)
doc <- read_docx()
doc <- body_add_flextable(doc, value = myft)
#print(doc, target = paste0("extpr_sampling", sampling, "formula_",as.character(formula.model)[3],".docx"))
print(doc)
rdocx document with 2 element(s)

* styles:
                Normal              heading 1              heading 2 
           "paragraph"            "paragraph"            "paragraph" 
             heading 3 Default Paragraph Font           Normal Table 
           "paragraph"            "character"                "table" 
               No List                 strong               centered 
           "numbering"            "character"            "paragraph" 
        table_template    Light List Accent 2            Titre 1 Car 
               "table"                "table"            "character" 
           Titre 2 Car            Titre 3 Car          Image Caption 
           "character"            "character"            "paragraph" 
         Table Caption     Table Professional                  toc 1 
           "paragraph"                "table"            "paragraph" 
                 toc 2           Balloon Text    Texte de bulles Car 
           "paragraph"            "paragraph"            "character" 
          reference_id          graphic title            table title 
           "character"            "paragraph"            "paragraph" 

* Content at cursor location:
# plot PR curve for the test curve in red, without legend
### pdf(paste0("prcurve", sampling, "formula_",as.character(formula.model)[3],".pdf"))
plot(prRFval, color = "gray85",auc.main=FALSE, main = "") 
plot( prLGval, color = "gray45", add = TRUE)
plot( prSVMval, color = "black", add = TRUE)
plot( prGBMval, color = "gray85", lty = 3, add = TRUE)
plot( prNNval, color = "black", lty = 3, add = TRUE)
plot( prKNNval, color = "gray45", lty = 3,add = TRUE)
plot(prMARSval, col = "gray99", lty = 3, add = TRUE)

### dev.off()
#######plot the calibration plots with loess smoother #########################################
#for logistic regression
#create 10 risk groups
dataset_val %>% mutate(quintile=ntile(dataset_val$probsTestlgVal.X2,10)) -> dataset_val_10
Youroutcomevariable_num <- paste(Youroutcomevariable,"num")
dataset_val_10[as.numeric(dataset_val_10[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0
dataset_val_10[as.numeric(dataset_val_10[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1

#average the observed and expected probabilities of patients in each risk group 
obs = aggregate(as.numeric(dataset_val_10[,Youroutcomevariable_num]), list(dataset_val_10$quintile),mean)
exptd = aggregate(dataset_val_10$probsTestlgVal.X2, list(dataset_val_10$quintile),mean)
obsn =aggregate(as.formula(paste0(Youroutcomevariable ,"~ quintile")), dataset_val_10, length)

#CIs for scatter points
lci = obs - (1.96*(((obs*(1-obs))/obsn[,Youroutcomevariable])^.5))
lci[lci<0]<-0

uci = obs + (1.96*(((obs*(1-obs))/obsn[,Youroutcomevariable])^.5))
uci[uci>1]<-1

LR_Cali_Plot = data.frame(exptd$x,obs$x, uci$x, lci$x)

calLG <- ggplot(LR_Cali_Plot, aes(x= exptd$x, y=obs$x)) +
  geom_point(size = 2) + 
  geom_smooth(method=lm, se=FALSE, col = "black", lwd = 1) +
  geom_abline(slope=1, intercept=0, lty=2 ) +
  scale_x_continuous(name = "Expected", breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) +
  scale_y_continuous(name = "Observed", breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) +
  geom_errorbar(aes(ymin=lci$x, ymax=uci$x), width=0.02) +
  theme_bw()
calLG

#for SVM
#create 10 risk groups
dataset_val %>% mutate(quintile=ntile(dataset_val$probsTestSvmGridVal.X2,10)) -> dataset_val_10_SVM
dataset_val_10_SVM[as.numeric(dataset_val_10_SVM[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0
dataset_val_10_SVM[as.numeric(dataset_val_10_SVM[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1
#average the observed and expected probabilities of patients in each risk group 
obs_SVM = aggregate(as.numeric(dataset_val_10_SVM[,Youroutcomevariable_num]), list(dataset_val_10_SVM$quintile),mean)
exptd_SVM = aggregate(dataset_val_10_SVM$probsTestSvmGridVal.X2, list(dataset_val_10_SVM$quintile),mean)
obsn_SVM =aggregate(as.formula(paste0(Youroutcomevariable ,"~ quintile")), dataset_val_10_SVM, length)


#CIs for scatter points
lci_SVM = obs_SVM- (1.96*(((obs_SVM*(1-obs_SVM))/obsn_SVM[,Youroutcomevariable])^.5))
lci_SVM[lci_SVM<0]<-0

uci_SVM = obs_SVM + (1.96*(((obs_SVM*(1-obs_SVM))/obsn_SVM[,Youroutcomevariable])^.5))
uci_SVM[uci_SVM>1]<-1
SVM_Cali_Plot = data.frame(exptd_SVM$x,obs_SVM$x, uci_SVM$x, lci_SVM$x)

calSVM <- ggplot(SVM_Cali_Plot, aes(x= exptd_SVM$x, y=obs_SVM$x)) +
  geom_point(size = 2) + 
  geom_smooth(method=lm, se=FALSE, col = "black", lwd = 1) +
  geom_abline(slope=1, intercept=0, lty=2 ) +
  scale_x_continuous(name = "Expected", breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) +
  scale_y_continuous(name = "Observed", breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) +
  geom_errorbar(aes(ymin=lci_SVM$x, ymax=uci_SVM$x), width=0.02) +
  theme_bw()
calSVM

#for Random Forest    
#create 10 risk groups
dataset_val %>% mutate(quintile=ntile(dataset_val$probsTestRfVal.X2,10)) -> dataset_val_10_RF
dataset_val_10_RF[as.numeric(dataset_val_10_RF[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0
dataset_val_10_RF[as.numeric(dataset_val_10_RF[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1
#average the observed and expected probabilities of patients in each risk group 
obs_RF = aggregate(as.numeric(dataset_val_10_RF[,Youroutcomevariable_num]), list(dataset_val_10_RF$quintile),mean)
exptd_RF = aggregate(dataset_val_10_RF$probsTestRfVal.X2, list(dataset_val_10_RF$quintile),mean)
obsn_RF =aggregate(as.formula(paste0(Youroutcomevariable ,"~ quintile")), dataset_val_10_RF, length)


#CIs for scatter points
lci_RF = obs_RF- (1.96*(((obs_RF*(1-obs_RF))/obsn_RF[,Youroutcomevariable])^.5))
lci_RF[lci_RF<0]<-0

uci_RF = obs_RF + (1.96*(((obs_RF*(1-obs_RF))/obsn_RF[,Youroutcomevariable])^.5))
uci_RF[uci_RF>1]<-1
RF_Cali_Plot = data.frame(exptd_RF$x,obs_RF$x, uci_RF$x, lci_RF$x)

calRF <- ggplot(RF_Cali_Plot, aes(x= exptd_RF$x, y=obs_RF$x)) +
  geom_point(size = 2) + 
  geom_smooth(method=lm, se=FALSE, col = "black", lwd = 1) +
  geom_abline(slope=1, intercept=0, lty=2 ) +
  scale_x_continuous(name = "Expected", breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) +
  scale_y_continuous(name = "Observed", breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) +
  geom_errorbar(aes(ymin=lci_RF$x, ymax=uci_RF$x), width=0.02) +
  theme_bw()
calRF

#for GBM
#create 10 risk groups dataset_val %>% mutate(quintile=ntile(dataset_val\(probsTestGbmGridVal.X2,10)) -> dataset_val_10_GBM dataset_val_10_GBM[as.numeric(dataset_val_10_GBM[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0 dataset_val_10_GBM[as.numeric(dataset_val_10_GBM[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1 #average the observed and expected probabilities of patients in each risk group obs_GBM = aggregate(as.numeric(dataset_val_10_GBM[,Youroutcomevariable_num]), list(dataset_val_10_GBM\)quintile),mean) exptd_GBM = aggregate(dataset_val_10_GBM\(probsTestGbmGridVal.X2, list(dataset_val_10_GBM\)quintile),mean) obsn_GBM =aggregate(as.formula(paste0(Youroutcomevariable ,“~ quintile”)), dataset_val_10_GBM, length)

#CIs for scatter points lci_GBM = obs_GBM- (1.96(((obs_GBM(1-obs_GBM))/obsn_GBM[,Youroutcomevariable])^.5)) lci_GBM[lci_GBM<0]<-0

uci_GBM = obs_GBM + (1.96(((obs_GBM(1-obs_GBM))/obsn_GBM[,Youroutcomevariable])^.5)) uci_GBM[uci_GBM>1]<-1 GBM_Cali_Plot = data.frame(exptd_GBM\(x,obs_GBM\)x, uci_GBM\(x, lci_GBM\)x)

calGBM <-ggplot(GBM_Cali_Plot, aes(x= exptd_GBM\(x, y=obs_GBM\)x)) + geom_point(size = 2) + geom_smooth(method=lm, se=FALSE, col = “black”, lwd = 1) + geom_abline(slope=1, intercept=0, lty=2 ) + scale_x_continuous(name = “Expected”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + scale_y_continuous(name = “Observed”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + geom_errorbar(aes(ymin=lci_GBM\(x, ymax=uci_GBM\)x), width=0.02) + theme_bw() calGBM #for KNN
#create 10 risk groups dataset_val %>% mutate(quintile=ntile(dataset_val\(probsTestknnGridVal.X2,10)) -> dataset_val_10_KNN dataset_val_10_KNN[as.numeric(dataset_val_10_KNN[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0 dataset_val_10_KNN[as.numeric(dataset_val_10_KNN[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1 #average the observed and expected probabilities of patients in each risk group obs_KNN = aggregate(as.numeric(dataset_val_10_KNN[,Youroutcomevariable_num]), list(dataset_val_10_KNN\)quintile),mean) exptd_KNN = aggregate(dataset_val_10_KNN\(probsTestknnGridVal.X2, list(dataset_val_10_KNN\)quintile),mean) obsn_KNN =aggregate(as.formula(paste0(Youroutcomevariable ,“~ quintile”)), dataset_val_10_KNN, length)

#CIs for scatter points lci_KNN = obs_KNN- (1.96(((obs_KNN(1-obs_KNN))/obsn_KNN[,Youroutcomevariable])^.5)) lci_KNN[lci_KNN<0]<-0

uci_KNN = obs_KNN + (1.96(((obs_KNN(1-obs_KNN))/obsn_KNN[,Youroutcomevariable])^.5)) uci_KNN[uci_KNN>1]<-1 KNN_Cali_Plot = data.frame(exptd_KNN\(x,obs_KNN\)x, uci_KNN\(x, lci_KNN\)x)

calKNN <- ggplot(KNN_Cali_Plot, aes(x= exptd_KNN\(x, y=obs_KNN\)x)) + geom_point(size = 2) + geom_smooth(method=lm, se=FALSE, col = “black”, lwd = 1) + geom_abline(slope=1, intercept=0, lty=2 ) + scale_x_continuous(name = “Expected”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + scale_y_continuous(name = “Observed”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + geom_errorbar(aes(ymin=lci_KNN\(x, ymax=uci_KNN\)x), width=0.02) + theme_bw() calKNN #for NN
#create 10 risk groups dataset_val %>% mutate(quintile=ntile(dataset_val\(probsTestnnetGridVal.X2,10)) -> dataset_val_10_NN dataset_val_10_NN[as.numeric(dataset_val_10_NN[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0 dataset_val_10_NN[as.numeric(dataset_val_10_NN[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1 #average the observed and expected probabilities of patients in each risk group obs_NN = aggregate(as.numeric(dataset_val_10_NN[,Youroutcomevariable_num]), list(dataset_val_10_NN\)quintile),mean) exptd_NN = aggregate(dataset_val_10_NN\(probsTestnnetGridVal.X2, list(dataset_val_10_NN\)quintile),mean) obsn_NN =aggregate(as.formula(paste0(Youroutcomevariable ,“~ quintile”)), dataset_val_10_NN, length)

#CIs for scatter points lci_NN = obs_NN- (1.96(((obs_NN(1-obs_NN))/obsn_NN[,Youroutcomevariable])^.5)) lci_NN[lci_NN<0]<-0

uci_NN = obs_NN + (1.96(((obs_NN(1-obs_NN))/obsn_NN[,Youroutcomevariable])^.5)) uci_NN[uci_NN>1]<-1 NN_Cali_Plot = data.frame(exptd_NN\(x,obs_NN\)x, uci_NN\(x, lci_NN\)x)

calNN <- ggplot(NN_Cali_Plot, aes(x= exptd_NN\(x, y=obs_NN\)x)) + geom_point(size = 2) + geom_smooth(method=lm, se=FALSE, col = “black”, lwd = 1) + geom_abline(slope=1, intercept=0, lty=2 ) + scale_x_continuous(name = “Expected”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + scale_y_continuous(name = “Observed”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + geom_errorbar(aes(ymin=lci_NN\(x, ymax=uci_NN\)x), width=0.02) + theme_bw() calNN

#for LGMARS #create 10 risk groups dataset_val %>% mutate(quintile=ntile(dataset_val\(probsTestmarsVal.X2,10)) -> dataset_val_10_MARS dataset_val_10_MARS[as.numeric(dataset_val_10_MARS[,Youroutcomevariable])== 1,Youroutcomevariable_num] <- 0 dataset_val_10_MARS[as.numeric(dataset_val_10_MARS[,Youroutcomevariable])== 2,Youroutcomevariable_num] <- 1 #average the observed and expected probabilities of patients in each risk group obs_MARS = aggregate(as.numeric(dataset_val_10_MARS[,Youroutcomevariable_num]), list(dataset_val_10_MARS\)quintile),mean) exptd_MARS = aggregate(dataset_val_10_MARS\(probsTestmarsVal.X2, list(dataset_val_10_MARS\)quintile),mean) obsn_MARS =aggregate(as.formula(paste0(Youroutcomevariable ,“~ quintile”)), dataset_val_10_MARS, length)

#CIs for scatter points lci_MARS = obs_MARS- (1.96(((obs_MARS(1-obs_MARS))/obsn_MARS[,Youroutcomevariable])^.5)) lci_MARS[lci_MARS<0]<-0

uci_MARS = obs_MARS + (1.96(((obs_MARS(1-obs_MARS))/obsn_MARS[,Youroutcomevariable])^.5)) uci_MARS[uci_MARS>1]<-1 MARS_Cali_Plot = data.frame(exptd_MARS\(x,obs_MARS\)x, uci_MARS\(x, lci_MARS\)x)

calMARS <- ggplot(MARS_Cali_Plot, aes(x= exptd_MARS\(x, y=obs_MARS\)x)) + geom_point(size = 2) + geom_smooth(method=lm, se=FALSE, col = “black”, lwd = 1) + geom_abline(slope=1, intercept=0, lty=2 ) + scale_x_continuous(name = “Expected”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + scale_y_continuous(name = “Observed”, breaks = c(0.0, 0.2,0.4,0.6,0.8,1.0),limits = c(0,1)) + geom_errorbar(aes(ymin=lci_MARS\(x, ymax=uci_MARS\)x), width=0.02) + theme_bw() calMARS

plot_grid(calGBM,calKNN,calLG,calMARS,calNN,calRF,calSVM, labels = c(‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’,‘G’), label_size = 12) ggsave(paste0(“calibration_sampling”, sampling, “formula_”,as.character(formula.model)[3],“.pdf”)) #calcluate Calibration slope for each model

dataset_val2 <- dataset_val dataset_val2[,Youroutcomevariable] <- as.numeric(dataset_val2[,Youroutcomevariable])-1

calslopeGBM <- glm(formula(paste0(Youroutcomevariable," ~ probsTestGbmGridVal.X2“)), family=gaussian, data=dataset_val2)\(coefficients calslopeSVM <-glm(formula(paste0(Youroutcomevariable," ~ probsTestSvmGridVal.X2")), family=gaussian, data=dataset_val2)\)coefficients calslopeKNN <-glm(formula(paste0(Youroutcomevariable,” ~ probsTestknnGridVal.X2“)), family=gaussian, data=dataset_val2)\(coefficients calslopeNN <-glm(formula(paste0(Youroutcomevariable," ~ probsTestnnetGridVal.X2")), family=gaussian, data=dataset_val2)\)coefficients calslopeRF <-glm(formula(paste0(Youroutcomevariable,” ~ probsTestRfVal.X2“)), family=gaussian, data=dataset_val2)\(coefficients calslopeLG <-glm(formula(paste0(Youroutcomevariable," ~ probsTestlgVal.X2")), family=gaussian, data=dataset_val2)\)coefficients calslopeMARS <-glm(formula(paste0(Youroutcomevariable,” ~ probsTestmarsVal.X2")), family=gaussian, data=dataset_val2)$coefficients

#calcluate Calibration in the large for each model########################################################### #predicted risks are understated if _b[_cons] > 0 or overstated if _b[_cons] < 0 callargeGBM <- summary(glm(formula(paste0(Youroutcomevariable," ~ offset(probsTestGbmGridVal.X2)“)), family=gaussian, data=dataset_val2))\(coefficients[1] callargeSVM <- summary(glm(formula(paste0(Youroutcomevariable," ~ offset(probsTestSvmGridVal.X2)")), family=gaussian, data=dataset_val2))\)coefficients[1] callargeKNN <- summary(glm(formula(paste0(Youroutcomevariable,” ~ offset(probsTestknnGridVal.X2)“)), family=gaussian, data=dataset_val2))\(coefficients[1] callargeNN <- summary(glm(formula(paste0(Youroutcomevariable," ~ offset(probsTestnnetGridVal.X2)")), family=gaussian, data=dataset_val2))\)coefficients[1] callargeRF <- summary(glm(formula(paste0(Youroutcomevariable,” ~ offset(probsTestRfVal.X2)“)), family=gaussian, data=dataset_val2))\(coefficients[1] callargeLG <- summary(glm(formula(paste0(Youroutcomevariable," ~ offset(probsTestlgVal.X2)")), family=gaussian, data=dataset_val2))\)coefficients[1] callargeMARS <- summary(glm(formula(paste0(Youroutcomevariable,” ~ offset(probsTestmarsVal.X2)")), family=gaussian, data=dataset_val2))$coefficients[1]

#calcluate overall misCalibration for each model############################################################# #the slope coefficient beta of the linear predictors reflects the deviations from the ideal slope of 1. #If p is significant then there is deviation from zero mc1 = glm(formula(paste0(Youroutcomevariable," ~ probsTestGbmGridVal.X2+ offset(probsTestGbmGridVal.X2)“)), family=gaussian, data=dataset_val2) mc2 = glm(formula(paste0(Youroutcomevariable,” ~ probsTestSvmGridVal.X2 + offset(probsTestSvmGridVal.X2)“)), family=gaussian, data=dataset_val2) mc3 = glm(formula(paste0(Youroutcomevariable,” ~ probsTestknnGridVal.X2 + offset(probsTestknnGridVal.X2)“)), family=gaussian, data=dataset_val2) mc4 = glm(formula(paste0(Youroutcomevariable,” ~ probsTestnnetGridVal.X2 + offset(probsTestnnetGridVal.X2)“)), family=gaussian, data=dataset_val2) mc5 = glm(formula(paste0(Youroutcomevariable,” ~ probsTestRfVal.X2 + offset(probsTestRfVal.X2)“)), family=gaussian, data=dataset_val2) mc6 = glm(formula(paste0(Youroutcomevariable,” ~ probsTestlgVal.X2 + offset(probsTestlgVal.X2)“)), family=gaussian, data=dataset_val2) mc7 = glm(formula(paste0(Youroutcomevariable,” ~ probsTestmarsVal.X2 + offset(probsTestmarsVal.X2)")), family=gaussian, data=dataset_val2)

calpvalueGBM <- summary(mc1)\(coefficients[2,c(4)] calpvalueSVM <-summary(mc2)\)coefficients[2,c(4)] calpvalueKNN <-summary(mc3)\(coefficients[2,c(4)] calpvalueNN <-summary(mc4)\)coefficients[2,c(4)] calpvalueRF <- summary(mc5)\(coefficients[2,c(4)] calpvalueLG <- summary(mc6)\)coefficients[2,c(4)] calpvalueMARS <- summary(mc7)$coefficients[2,c(4)]

model=c(‘LR’,‘GBM’,‘SVM’,‘RF’,‘Nnet’,‘Knn’,‘LGMARS’) intercept = c(calslopeLG[1], calslopeGBM[1], calslopeSVM[1], calslopeRF[1], calslopeNN[1], calslopeKNN[1],calslopeMARS[1]) slope = c(calslopeLG[2], calslopeGBM[2], calslopeSVM[2], calslopeRF[2], calslopeNN[2], calslopeKNN[2],calslopeMARS[2]) inthelarge = c(callargeLG, callargeGBM, callargeSVM, callargeRF, callargeNN, callargeKNN,callargeMARS) pvalue = c(calpvalueLG, calpvalueGBM, calpvalueSVM, calpvalueRF, calpvalueNN, calpvalueKNN,calpvalueMARS) ValResults = data.frame(model, intercept, slope, inthelarge, pvalue)

myft <- regulartable(ValResults) myft <- theme_vanilla(myft) myft <- autofit(myft) doc <- read_docx() doc <- body_add_flextable(doc, value = myft) print(doc, target = paste0(“calibrationplot_sampling”, sampling, “formula_”,as.character(formula.model)[3],“.docx”))

#Decision curve analysis dataset_val_10\(probsTestlgVal.X1 = 1-dataset_val_10\)probsTestlgVal.X2

dcaLR = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestlgVal.X2”)) dcaSVM = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestSvmGridVal.X2”)) dcaRF = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestRfVal.X2”)) dcaGBM = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestGbmGridVal.X2”)) dcaKNN = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestknnGridVal.X2”)) dcaNN = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestnnetGridVal.X2”)) dcaMARS = dca(data = dataset_val_10, outcome = “insulinRequire num”, predictors = c(“probsTestmarsVal.X2”))

#https://www.mskcc.org/sites/default/files/node/4511/documents/v3-worked-example-of-decision-curve-analysis-using-r.pdf

threshold <- dcaLR\(net.benefit\)threshold100 probtest <- dcaLR\(net.benefit\)probsTestlgVal.X2 model <- rep(“LR”,length(probtest)) dcadata <- data.frame(model,probtest,threshold) threshold <- dcaSVM\(net.benefit\)threshold100 probtest <- dcaSVM\(net.benefit\)probsTestSvmGridVal.X2 model <- rep(“SVM”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaRF\(net.benefit\)threshold100 probtest <- dcaRF\(net.benefit\)probsTestRfVal.X2 model <- rep(“RF”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaGBM\(net.benefit\)threshold100 probtest <- dcaGBM\(net.benefit\)probsTestGbmGridVal.X2 model <- rep(“GBM”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaKNN\(net.benefit\)threshold100 probtest <- dcaKNN\(net.benefit\)probsTestknnGridVal.X2 model <- rep(“KNN”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaNN\(net.benefit\)threshold100 probtest <- dcaNN\(net.benefit\)probsTestnnetGridVal.X2 model <- rep(“NN”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaMARS\(net.benefit\)threshold100 probtest <- dcaMARS\(net.benefit\)probsTestmarsVal.X2 model <- rep(“MARS”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaMARS\(net.benefit\)threshold100 probtest <- dcaMARS\(net.benefit\)all model <- rep(“all”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold)) threshold <- dcaMARS\(net.benefit\)threshold*100 probtest <- dcaMARS\(net.benefit\)none model <- rep(“none”,length(probtest)) dcadata <- rbind(dcadata, data.frame(model,probtest,threshold))

ggplot(dcadata, aes(x = threshold, y = probtest, group = model, linetype = model, colour = model)) + geom_line() + coord_cartesian(ylim =c(-0.25,0.20)) + theme(legend.key.width = unit(1.5,“cm”)) + xlab(“Probability threshold”) + ylab(“Net benefit”) + theme(legend.title=element_blank()) + theme(legend.position = c(0.7, 0.8)) ggsave(paste0(“decision_curve_analysis”,sampling, “formula_”,as.character(formula.model)[3],“.pdf”), units = “in”, height = 6.5, width = 6.5)

#correlation matrix of predictions - validation dataset predMatrixVal = data.frame(dataset_val\(probsTestGbmGridVal.X2 ,dataset_val\)probsTestSvmGridVal.X2, dataset_val\(probsTestknnGridVal.X2 , dataset_val\)probsTestnnetGridVal.X2 , dataset_val\(probsTestRfVal.X2, dataset_val\)probsTestlgVal.X2, dataset_val$probsTestmarsVal.X2) names(predMatrixVal)[1] <-“GBM” names(predMatrixVal)[2] <-“SVM” names(predMatrixVal)[3] <-“KNN” names(predMatrixVal)[4] <-“NN” names(predMatrixVal)[5] <-“RF” names(predMatrixVal)[6] <-“LR” names(predMatrixVal)[7] <-“LRMARS”

MVal = cor(predMatrixVal) pdf(paste0(“corrplot”, sampling, “formula_”,as.character(formula.model)[3],“.pdf”)) corrplot(MVal, method=“number”,tl.cex = 1) dev.off()

library(GGally) ggpairs(predMatrixVal,labeller = “label_parsed”, axisLabels = “none”) ggsave(paste0(“corrplot_scatter”, sampling, “formula_”,as.character(formula.model)[3],“.pdf”),units = “in”,height = 9, width = 9) #create a variable importance dataframe########################################################### # Svm and KNN do not have built-in variable importance score Model = c(‘Logistic Regression’,‘Stochastic Gradient Boosting’, ‘Neural Network’, ‘Random Forest’, ‘GLM MARS’) # calculate the variable importance scores # varImp function provides the variable importance LGImp <- varImp(modelLG_CC_GADA, scale = FALSE) LGImp

gmbImp <- varImp(modelGbm_CC_GADA_Lr, scale = FALSE) gmbImp

nnetImp <- varImp(modelnnet_CC_GADA_Lr, scale = FALSE) nnetImp

rfImp <- varImp(modelRf_CC_GADA, scale = FALSE) rfImp

MarsImp <- varImp(modelMARS_CC_GADA_Lr, scale = FALSE) MarsImp

impdata <- data.frame(LG = LGImp\(importance,GBM = gmbImp\)importance, NNET = nnetImp\(importance,LGMARS = MarsImp\)importance) impdata <- cbind(rownames(impdata),impdata) names(impdata) <- c(“variables”,“LR”,“GBM”,“NNET”,“LGMARS”) impdata <- impdata %>% gather(models,values, -variables) %>% dplyr::group_by(models) %>% dplyr::mutate(values =values/sum(values) * 100) %>% dplyr::ungroup()

ggplot(impdata,aes(x = variables, y = values)) + geom_bar(stat=“identity”,width=0.06) + coord_flip()+ ylab(“Scaled variable importance score”) + xlab("") + scale_y_continuous(expand = c(0, 0)) + theme(axis.text.y = element_blank(),axis.ticks.y = element_blank()) + facet_grid(models~.)

ggsave(paste0(“parameters_importance”, sampling, “formula_”,as.character(formula.model)[3],“.pdf”)) #build the DF with the scaled variable importance scores #divide each variable importance scores by max to scale # Yourcovariate1 = c(1.00,0.99,0.43,0.97) # Yourcovariate2 = c(0.73, 0.53, 0.65, 1.00) # Yourcovariate3 = c(0.99,1.00,1.00, 0.91) # varImpDF = data.frame(Model,Yourcovariate1,Yourcovariate2,Yourcovariate3) # # #build the plots of the variable importance ranks # plotVarImp1 = ggplot(data = varImpDF, aes(x = Model, y = varImpDF\(Yourcovariate1))+geom_bar(stat="identity",width=0.06)+ coord_flip()+ ylab("Scaled variable importance score")+ # xlab("") + ggtitle("Your covariate 1") + scale_y_continuous(expand = c(0, 0)) +theme(axis.text.y = element_blank(),axis.ticks.y = element_blank() ) # # plotVarImp2 = ggplot(data = varImpDF, aes(x = Model, y = varImpDF\)Yourcovariate2))+geom_bar(stat=“identity”,width=0.06)+ coord_flip()+ ylab(“Scaled variable importance score”)+ # xlab("“) + ggtitle(”Your covariate 2“) + scale_y_continuous(expand = c(0, 0)) +theme(axis.text.y = element_blank(),axis.ticks.y = element_blank() ) # # plotVarImp3 = ggplot(data = varImpDF, aes(x = Model, y = varImpDF\(Yourcovariate3))+geom_bar(stat="identity",width=0.06)+ coord_flip()+ ylab("Scaled variable importance score")+ # xlab("") + ggtitle("Your covariate 3") + scale_y_continuous(expand = c(0, 0)) +theme(axis.text.y = element_blank(),axis.ticks.y = element_blank() ) # # plotVarImp3 = ggplot(data = varImpDF, aes(x = Model, y = varImpDF\)Yourcovariate3))+geom_bar(stat=”identity“,width=0.06)+ coord_flip()+ ylab(”Scaled variable importance score“)+ # xlab(”“) + ggtitle(”Your covariate 3") + scale_y_continuous(expand = c(0, 0)) +theme(axis.text.y = element_blank(),axis.ticks.y = element_blank() ) # # #plot the charts on one row # par(mfrow=c(1,3)) # plot(plotVarImp1) # plot(plotVarImp2) # plot(plotVarImp3) # grid.arrange(plotVarImp1, plotVarImp2, plotVarImp3,ncol = 3)

5 - save the objects for future use

save(data_train,dataset_val,ValResults,control,modelLG_CC_GADA, modelRf_CC_GADA, modelSvm_CC_GADA_Lr, modelGbm_CC_GADA_Lr, modelnnet_CC_GADA_Lr,modelknn_CC_GADA_Lr,impdata, results_grid_CC_GADA,gmbImp, rfImp, nnetImp,dataset_val_10, file = paste0(“results_sampling”, sampling, “formula_”,as.character(formula.model)[3],“.Rdata”))

LS0tCnRpdGxlOiAiTWFjaGluZSBMZWFybmluZyBMeW5hbSBtZXRob2RzIgphdXRob3I6ICJCQUJBLCBZb3NoaWhpa28iCmRhdGU6ICIyMDIxLzYvMjMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyMg44Op44Kk44OW44Op44Oq44Gu44Ot44O844OJCgplYXJ0aCDjgYzjgqTjg7Pjgrnjg4jjg7zjg6vjgafjgY3jgarjgYvjgaPjgZ/jga7jgafjgIHnnIHnlaXjgIIKCmBgYHtyIHdhcm5pbmcgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQpsaWJyYXJ5KHJlY2lwZXMsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoY2FyZXQsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoa25pdHIsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoa2VybmxhYiwgd2Fybi5jb25mbGljdHM9RkFMU0UsIHF1aWV0bHk9VFJVRSkKbGlicmFyeShETXdSMikgICMjIyBETXdSIOOBr+OBquOBj+OBn+OBo+OBpuOBhOOCi+OBn+OCgeOAgeS/ruatowpsaWJyYXJ5KHJhbmRvbUZvcmVzdCwgd2Fybi5jb25mbGljdHM9RkFMU0UsIHF1aWV0bHk9VFJVRSkKbGlicmFyeShwUk9DLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KGdncGxvdDIsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkocmVhZHN0YXRhMTMsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkocnBhcnQsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkocnBhcnQucGxvdCwgd2Fybi5jb25mbGljdHM9RkFMU0UsIHF1aWV0bHk9VFJVRSkKbGlicmFyeShnYm0sIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoZ3JpZEV4dHJhLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KGRwbHlyLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KHRpZHlyLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KHB1cnJyLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KHBST0MsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoUFJST0MsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoY29ycnBsb3QsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoUmNwcCwgd2Fybi5jb25mbGljdHM9RkFMU0UsIHF1aWV0bHk9VFJVRSkKbGlicmFyeShybGFuZywgd2Fybi5jb25mbGljdHM9RkFMU0UsIHF1aWV0bHk9VFJVRSkKIyBleHBvcnQgdG8gd29yZCBvZmZpY2UKbGlicmFyeShyZWFkeGwsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkob2ZmaWNlciwgd2Fybi5jb25mbGljdHM9RkFMU0UsIHF1aWV0bHk9VFJVRSkKbGlicmFyeShydmcsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCmxpYnJhcnkoZmxleHRhYmxlLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KGNvd3Bsb3QsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCgpsaWJyYXJ5KGNvbXBhcmVHcm91cHMsIHdhcm4uY29uZmxpY3RzPUZBTFNFLCBxdWlldGx5PVRSVUUpCgpsaWJyYXJ5KHJlYWRyLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpsaWJyYXJ5KGVhcnRoLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSwgcXVpZXRseT1UUlVFKQpgYGAKCiMjIOODh+ODvOOCv+OCkuiqreOBv+i+vOOCgAoK44G+44Ga44CB44OH44O844K/44KS6Kqt44G/44GT44G/44G+44GZ44CCCuOBquOBiuOAgeOBk+OBriBEeXNsZXhpYSDnoJTnqbbjga/jgIHoqrLpoYzmlbDjgYwzMuOBguOCiuOAgeOBneOCjOOBnuOCjO+8leWIl+OAgeWQiOioiDE2MOWIl+OBjCB3aWRlIOODleOCqeODvOODnuODg+ODiOOBp+S4puOCk+OBp+OBhOOBvuOBmeOAggrjgZ3jgZPjgafjgIHku4rlm57jga/jgIEiR2VuZGVyIiwgIk5hdGl2ZWxhbmciLCAiQWdlIiwgIkFjY3VyYWN5MSIsIkFjY3VyYWN5MiIsIkFjY3VyYWN5MyIsICJBY2N1cmFjeTQiLCAiRHlzbGV4aWEiIOOBoOOBkeOBruWwj+OBleOBhOWIl+OBq+WkieaPm+OBl+OBvuOBmeOAggoKYGBge3IgZWNobz1GQUxTRX0KZGZEeXNsZXhpYSA8LSByZWFkX2RlbGltKCIvVm9sdW1lcy9IREQvU3luYy9iYWJhL1ItYmVua3lvL01ML0R5dC1kZXNrdG9wLmNzdiIsICI7IiwgZXNjYXBlX2RvdWJsZSA9IEZBTFNFLCB0cmltX3dzID0gVFJVRSkKI2RmRHlzbGV4aWEgPC0gcmVhZF9kZWxpbSgiQzovVXNlcnMvYmFiYS9TeW5jL1ItYmVua3lvL01ML0R5dC1kZXNrdG9wLmNzdiIsICI7IiwgZXNjYXBlX2RvdWJsZSA9IEZBTFNFLCB0cmltX3dzID0gVFJVRSkKCm15dmFycyA8LSBjKCJHZW5kZXIiLCAiTmF0aXZlbGFuZyIsICJBZ2UiLCAiQWNjdXJhY3kxIiwiQWNjdXJhY3kyIiwiQWNjdXJhY3kzIiwgIkFjY3VyYWN5NCIsICJEeXNsZXhpYSIpICAKZGZEeXNsZXhpYSA8LSBkZkR5c2xleGlhW215dmFyc10KYGBgCgozNjQ06KGM44Gu44OH44O844K/44GM44GC44KL44Gf44KB44CBTHluYW0g6KuW5paH44Gr5rqW44GY44Gm44CB5pyA5Yid44GuOTYw6KGM44KS44OI44Os44O844OL44Oz44KwIChkYXRhX3RyYWluKeOAgeacgOW+jOOBrjUwNOihjOOCkuipleS+oeeUqOODh+ODvOOCvyAoZGF0YXNldF92YWwpIOOBqOOBl+OBvuOBmeOAggrjgarjgYrjgIHjgZPjgozjgonjga7jg4fjg7zjgr/jg5Xjg6zjg7zjg6DlkI3jga/lkb3lkI3opo/liYfjgYvjgonlpJbjgozjgabjgYTjgb7jgZnjgIIK44GT44KM44Gv44CBTHluYW0g44Gu44K544Kv44Oq44OX44OI44KS5L2/44GG44Gf44KB44Gn44GZ44CCCgpgYGB7cn0KZGF0YV90cmFpbiA8LSBoZWFkKGRmRHlzbGV4aWEsIG4gPSA5NjApCmRhdGFzZXRfdmFsIDwtIHRhaWwoZGZEeXNsZXhpYSwgbiA9IDUwNCkKYGBgCgrjgZPjgZPjgYvjgonlhYjjga/jgIEgTHluYW0gMjAyMSDjga7lhazplovjgrnjgq/jg6rjg5fjg4jjgafjgZnjgIIKCmBgYHtyIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQpzZWVkY2hvaWNlIDwtIDcgCgppcy5mYWN0MiA9IHNhcHBseShkYXRhX3RyYWluLCBpcy5mYWN0b3IpCmZhY3RvcnMyLmRmIDwtIGRhdGFfdHJhaW5bLCBpcy5mYWN0Ml0KbGFwcGx5KGZhY3RvcnMyLmRmLCBsZXZlbHMpCgppcy5mYWN0MyA9IHNhcHBseShkYXRhc2V0X3ZhbCwgaXMuZmFjdG9yKQpmYWN0b3JzMy5kZiA8LSBkYXRhc2V0X3ZhbFssIGlzLmZhY3QzXQpsYXBwbHkoZmFjdG9yczMuZGYsIGxldmVscykKCnZhcmlhYmxlX2ZhY3RvcnMgPC0gYygiR2VuZGVyIiwiTmF0aXZlbGFuZyIsIkR5c2xleGlhIikgIyMjIOWkieabtApkYXRhX3RyYWluIDwtIGRhdGFfdHJhaW4gJT4lICBtdXRhdGVfYXQodmFyaWFibGVfZmFjdG9ycywgZmFjdG9yKQpkYXRhc2V0X3ZhbCA9IGRhdGFzZXRfdmFsICU+JSAgbXV0YXRlX2F0KHZhcmlhYmxlX2ZhY3RvcnMsIGZhY3RvcikKCmZlYXR1cmU2Lm5hbWVzID0gbmFtZXMoZGF0YV90cmFpbikKZm9yIChmIGluIGZlYXR1cmU2Lm5hbWVzKSB7CiAgaWYgKGNsYXNzKGRhdGFfdHJhaW5bW2ZdXSkgPT0gImZhY3RvciIpIHsKICAgIGxldmVsczYgPC0gdW5pcXVlKGMoZGF0YV90cmFpbltbZl1dKSkKICAgIGRhdGFfdHJhaW5bW2ZdXSA8LSBmYWN0b3IoZGF0YV90cmFpbltbZl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBtYWtlLm5hbWVzKGxldmVsczYpKQogIH0KfQoKCmZlYXR1cmU3Lm5hbWVzID0gbmFtZXMoZGF0YXNldF92YWwpCmZvciAoZiBpbiBmZWF0dXJlNy5uYW1lcykgewogIGlmIChjbGFzcyhkYXRhc2V0X3ZhbFtbZl1dKSA9PSAiZmFjdG9yIikgewogICAgbGV2ZWxzNyA8LSB1bmlxdWUoYyhkYXRhc2V0X3ZhbFtbZl1dKSkKICAgIGRhdGFzZXRfdmFsW1tmXV0gPC0gZmFjdG9yKGRhdGFzZXRfdmFsW1tmXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBtYWtlLm5hbWVzKGxldmVsczcpKQogIH0KfQpgYGAKCuODouODh+ODq+OCkuS9nOaIkOOBl+OBvuOBmeOAggrjg6Ljg4fjg6vjga7lvaLlvI/jga/jgIHjg63jgrjjgrnjg4bjgqPjg4Pjgq/lm57luLDjgajlkIzjgZjjgoLjga7jgpLku5bjgafjgoLkvb/nlKjjgZfjgb7jgZnjgIIKCmBgYHtyfQpmb3JtdWxhLm1vZGVsIDwtIGZvcm11bGEoRHlzbGV4aWEgfiBHZW5kZXIgKyBBZ2UgKyBOYXRpdmVsYW5nICsgQWNjdXJhY3kxICsgQWNjdXJhY3kyICsgQWNjdXJhY3kzICsgQWNjdXJhY3k0KSAjIyMg5aSJ5pu0CmBgYAoK44GT44GT44GL44KJ44Gu5Yem55CG44Gv44KI44GP44KP44GL44Gj44Gm44GE44G+44Gb44KT44CCCijoq5bmlofjgavop6PoqqzjgYLjgoopCgpgYGB7cn0KWW91cm91dGNvbWV2YXJpYWJsZSA8LSBhcy5jaGFyYWN0ZXIoZm9ybXVsYS5tb2RlbClbMl0KCiMgc3RhbmRhcmRpemVkIGRhdGEgc2V0cwpzdGFuZGFyZGl6ZWQgPC1yZWNpcGUoZm9ybXVsYS5tb2RlbCAsIGRhdGEgPSBkYXRhX3RyYWluKSAlPiUgCiAgc3RlcF9jZW50ZXIoYWxsX251bWVyaWMoKSkgJT4lCiAgc3RlcF9zY2FsZShhbGxfbnVtZXJpYygpKQoKdHJhaW5lZF9yZWMgPC0gcHJlcChzdGFuZGFyZGl6ZWQsIHRyYWluaW5nID0gZGF0YV90cmFpbikKZGF0YV90cmFpbiA8LSBiYWtlKHRyYWluZWRfcmVjLCBuZXdfZGF0YSA9IGRhdGFfdHJhaW4pCmRhdGFzZXRfdmFsICA8LSBiYWtlKHRyYWluZWRfcmVjLCBuZXdfZGF0YSA9IGRhdGFzZXRfdmFsKQoKc2FtcGxpbmcgPC0gTlVMTAoKY29udHJvbCA8LSB0cmFpbkNvbnRyb2wobWV0aG9kID0gInJlcGVhdGVkY3YiLCBudW1iZXIgPSAxMCwgcmVwZWF0cyA9IDUsY2xhc3NQcm9icyA9IFRSVUUsc3VtbWFyeUZ1bmN0aW9uID0gdHdvQ2xhc3NTdW1tYXJ5LCBzYW1wbGluZyA9IHNhbXBsaW5nLCBzYXZlUHJlZGljdGlvbnMgPSBUUlVFKQpjb250cm9sX1JhbmRfU2VhcmNoIDwtIHRyYWluQ29udHJvbChtZXRob2QgPSAicmVwZWF0ZWRjdiIsIG51bWJlciA9IDEwLCByZXBlYXRzID0gNSxjbGFzc1Byb2JzID0gVFJVRSxzdW1tYXJ5RnVuY3Rpb24gPSB0d29DbGFzc1N1bW1hcnksIHNhbXBsaW5nID0gc2FtcGxpbmcsIHNhdmVQcmVkaWN0aW9ucyA9IFRSVUUsIHNlYXJjaCA9ICJyYW5kb20iKQpgYGAKCuOBk+OBk+OBi+OCieOAgeapn+aisOWtpue/kuOBruODouODh+ODq+OBjOWni+OBvuOCiuOBvuOBmeOAggoKR3JhZGllbnQgQm9vc3RyaW5nIE1hY2hpbmUKCmBgYHtyIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQpnZXRNb2RlbEluZm8oKSRnYm0kcGFyYW1ldGVycwpmbG9vcihzcXJ0KE5DT0woZGF0YV90cmFpbikpKQpnYm1HcmlkIDwtICBleHBhbmQuZ3JpZChpbnRlcmFjdGlvbi5kZXB0aCA9IGMoMSwgMywgNywgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBuLnRyZWVzID0gYygxMCwgNTAsMTAwLDIwMCksIAogICAgICAgICAgICAgICAgICAgICAgICBzaHJpbmthZ2UgPSBzZXEoZnJvbSA9IDAuMDEsIHRvID0gMC4xLCBieSA9IDAuMDIpLAogICAgICAgICAgICAgICAgICAgICAgICBuLm1pbm9ic2lubm9kZSA9IGMoNSwyMCw1MCwxMDAsMjAwKSkgCnNldC5zZWVkKHNlZWRjaG9pY2UpCm1vZGVsR2JtX0NDX0dBREFfTHIgPC0gdHJhaW4oZm9ybXVsYS5tb2RlbCwgZGF0YSA9IGRhdGFfdHJhaW4sIG1ldGhvZCA9ICJnYm0iLCB0ckNvbnRyb2wgPSBjb250cm9sLCB2ZXJib3NlID0gRkFMU0UsbWV0cmljID0gJ1JPQycsdHVuZUdyaWQ9Z2JtR3JpZCkKYGBgCgrjgrXjg53jg7zjg4jjg5njgq/jg4jjg6vjg57jgrfjg7MKCmBgYHtyIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQojIyMg44K144Od44O844OI44OZ44Kv44OI44Or44Oe44K344OzCmdldE1vZGVsSW5mbygpJHN2bVJhZGlhbCRwYXJhbWV0ZXJzCnN2bUdyaWQgPC0gIGV4cGFuZC5ncmlkKHNpZ21hID0gYygwLjAwMDEsMC4wMDEsMC4wMSwgMC4xLCAxLCAxMCwgMTAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHNlcShmcm9tID0gMC4xLCB0byA9IDIsIGJ5ID0gMC4xKSkgCnNldC5zZWVkKHNlZWRjaG9pY2UpCm1vZGVsU3ZtX0NDX0dBREFfTHIgPC0gdHJhaW4oZm9ybXVsYS5tb2RlbCwgZGF0YSA9IGRhdGFfdHJhaW4sIG1ldGhvZCA9ICJzdm1SYWRpYWwiLCB0ckNvbnRyb2wgPSBjb250cm9sLCB2ZXJib3NlID0gRkFMU0UsbWV0cmljID0gJ1JPQycsdHVuZUdyaWQ9c3ZtR3JpZCkKYGBgCgrjg6njg7Pjg4Djg6Djg5Xjgqnjg6zjgrnjg4gKCmBgYHtyIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQojIyMg44Op44Oz44OA44Og44OV44Kp44Os44K544OICmdldE1vZGVsSW5mbygpJHJmJHBhcmFtZXRlcnMKcmZHcmlkIDwtICBleHBhbmQuZ3JpZChtdHJ5ID0gc2VxKGZyb20gPSAxLCB0byA9IDUsIGJ5ID0gMSkpCnNldC5zZWVkKHNlZWRjaG9pY2UpCm1vZGVsUmZfQ0NfR0FEQSA8LSB0cmFpbihmb3JtdWxhLm1vZGVsLCBkYXRhID0gZGF0YV90cmFpbiwgbWV0aG9kID0gJ3JmJywgdHJDb250cm9sID0gY29udHJvbCxtZXRyaWMgPSAnUk9DJywgdHVuZUdyaWQgPSByZkdyaWQpCmBgYAoK44Ot44K444K544OG44Kj44OD44Kv5Zue5biwCgpgYGB7ciBlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0KIyMjIOODreOCuOOCueODhuOCo+ODg+OCr+WbnuW4sApzZXQuc2VlZChzZWVkY2hvaWNlKQptb2RlbExHX0NDX0dBREEgPC0gdHJhaW4oZm9ybXVsYS5tb2RlbCwgZGF0YSA9IGRhdGFfdHJhaW4sIG1ldGhvZCA9ICJnbG0iLCBmYW1pbHkgPSAiYmlub21pYWwiLCB0ckNvbnRyb2wgPSBjb250cm9sLG1ldHJpYyA9ICdST0MnKQpgYGAKCuODi+ODpeODvOODqeODq+ODjeODg+ODiOODr+ODvOOCrwoKYGBge3IgZWNobyA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9CiMjIyDjg4vjg6Xjg7zjg6njg6vjg43jg4Pjg4jjg6/jg7zjgq8KZ2V0TW9kZWxJbmZvKCkkbm5ldCRwYXJhbWV0ZXJzCm5uZXRHcmlkIDwtICBleHBhbmQuZ3JpZChzaXplID0gc2VxKGZyb20gPSAyLCB0byA9IDEwLCBieSA9IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVjYXkgPSBjKDEsMC41LCAwLjEsIDAuMDEsIDAuMDAxLCAwLjAwMDEsIDAuMDAwMDEsIDAuMDAwMDAxLCAwLjAwMDAwMDEpKQoKc2V0LnNlZWQoc2VlZGNob2ljZSkKbW9kZWxubmV0X0NDX0dBREFfTHIgPC0gdHJhaW4oZm9ybXVsYS5tb2RlbCwgZGF0YSA9IGRhdGFfdHJhaW4sIG1ldGhvZCA9ICJubmV0IiwgdHJDb250cm9sID0gY29udHJvbCxtZXRyaWMgPSAnUk9DJywgdHVuZUdyaWQgPSBubmV0R3JpZCkKYGBgCgpr6L+R5YKNCgpgYGB7ciBlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0KZ2V0TW9kZWxJbmZvKCkka25uJHBhcmFtZXRlcnMKa25uR3JpZCA8LSAgZXhwYW5kLmdyaWQoayA9IHNlcShmcm9tID0gMSwgdG8gPSAyMDAsIGJ5ID0gMSkpCnNldC5zZWVkKHNlZWRjaG9pY2UpCm1vZGVsa25uX0NDX0dBREFfTHIgPC0gdHJhaW4oZm9ybXVsYS5tb2RlbCwgZGF0YSA9IGRhdGFfdHJhaW4sIG1ldGhvZCA9ICJrbm4iLCB0ckNvbnRyb2wgPSBjb250cm9sLG1ldHJpYyA9ICdST0MnLCB0dW5lR3JpZCA9IGtubkdyaWQpCmBgYAoK5aSa5aSJ6YeP6YGp5b+c55qE5Zue5biw44K544OX44Op44Kk44OzCgpgYGB7ciBlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0KZ2V0TW9kZWxJbmZvKCkkZWFydGgkcGFyYW1ldGVycwptYXJzZ3JpZCA8LSBleHBhbmQuZ3JpZCgKICBkZWdyZWUgPSAxOjMsIAogIG5wcnVuZSA9IHNlcSgxLCAxMDAsIGxlbmd0aC5vdXQgPSAxMCkgJT4lIGZsb29yKCkKKQpzZXQuc2VlZChzZWVkY2hvaWNlKQptb2RlbE1BUlNfQ0NfR0FEQV9MciA8LSB0cmFpbihmb3JtdWxhLm1vZGVsLCBkYXRhID0gZGF0YV90cmFpbiwgbWV0aG9kID0gImVhcnRoIiwgZ2xtPWxpc3QoZmFtaWx5PSdiaW5vbWlhbCcpLHRyQ29udHJvbCA9IGNvbnRyb2wsLG1ldHJpYyA9ICdST0MnLHR1bmVHcmlkPW1hcnNncmlkKQpgYGAKCue1kOaenOOBruimgee0hOOBp+OBmeOAggoKYGBge3J9CnN1bW1hcnkobW9kZWxrbm5fQ0NfR0FEQV9McikKc3VtbWFyeShtb2RlbG5uZXRfQ0NfR0FEQV9McikgCnN1bW1hcnkobW9kZWxMR19DQ19HQURBKQpzdW1tYXJ5KG1vZGVsUmZfQ0NfR0FEQSkKc3VtbWFyeShtb2RlbFN2bV9DQ19HQURBX0xyKQpzdW1tYXJ5KG1vZGVsR2JtX0NDX0dBREFfTHIpCnN1bW1hcnkobW9kZWxNQVJTX0NDX0dBREFfTHIpCmBgYAoK5Zuz5YyW44GX44G+44GZ44CCCgpgYGB7cn0KcmVzdWx0c19ncmlkX0NDX0dBREEgPC0gcmVzYW1wbGVzKGxpc3QoTG9naXN0aWNSZWdyZXNzaW9uID0gbW9kZWxMR19DQ19HQURBLCBTdG9jaGFzdGljR3JhZGllbnRCb29zdGluZyA9IG1vZGVsR2JtX0NDX0dBREFfTHIsIFN1cHBvcnRWZWN0b3JNYWNoaW5lID0gbW9kZWxTdm1fQ0NfR0FEQV9MciwgTmV1cmFsTmV0d29yayA9IG1vZGVsbm5ldF9DQ19HQURBX0xyLFJhbmRvbUZvcmVzdCA9IG1vZGVsUmZfQ0NfR0FEQSwgS05lYXJlc3ROZWlnaGJvdXJzID0gbW9kZWxrbm5fQ0NfR0FEQV9MciwgbG9naXN0aWNyZWdyZXNzaW9uTUFSUyA9IG1vZGVsTUFSU19DQ19HQURBX0xyKSkKCnN1bW1hcnkocmVzdWx0c19ncmlkX0NDX0dBREEpCgpyZXN1bHRzX2dyaWRfQ0NfR0FEQSRtZXRyaWNzCgp4eXBsb3QocmVzdWx0c19ncmlkX0NDX0dBREEsIHdoYXQgPSAiQmxhbmRBbHRtYW4iKQoKYndwbG90KHJlc3VsdHNfZ3JpZF9DQ19HQURBKQoKZG90cGxvdChyZXN1bHRzX2dyaWRfQ0NfR0FEQSkKCnNwbG9tKHJlc3VsdHNfZ3JpZF9DQ19HQURBKQoKZGlmZnMgPC0gZGlmZihyZXN1bHRzX2dyaWRfQ0NfR0FEQSwgbWV0cmljID0gIlJPQyIpCnN1bW1hcnkoZGlmZnMpCmBgYAoK44GT44GT44GL44KJ44Gv44CB5aal5b2T5oCn44Gu6KmV5L6h44KS6KGM44GE44G+44GZ44CCCgrjgb7jgZrjga/jgIHplqLmlbDjga7kvZzmiJDjgIIK6ZW344GE44Gu44Gn44CB44Kz44O844OJ44Gv6Z2e6KGo56S644Gr44GX44G+44GZ44CCCgpgYGB7ciBlY2hvID0gRkFMU0V9Cm5lc3RlZF9jdiA8LSBmdW5jdGlvbihkYXRhLCAgayxmb3JtdWxhLm1vZGVsLCAgc2VlZCA9IE5VTEwsc2FtcGxpbmcgPSBzYW1wbGluZykgewogIGlmICghaXMubnVsbChzZWVkKSkgewogICAgc2V0LnNlZWQoc2VlZCkKICB9CiAgCiAgZm9sZHMgPC0gY3JlYXRlRm9sZHMoZGF0YSREeXNsZXhpYSwgayA9IGspICAjIyMg5aSJ5pu0CiAgYXVjIDwtIGxhcHBseSgxOmssIGZ1bmN0aW9uKGspIHsKICAgIHRyYWluX2FuZF92YWxpZGF0ZSggZGF0YSwgZm9sZHNbW2tdXSwgc2FtcGxpbmcgPSBzYW1wbGluZyxmb3JtdWxhLm1vZGVsID0gZm9ybXVsYS5tb2RlbCkKICB9KQogIGF1Ywp9CgoKdHJhaW5fYW5kX3ZhbGlkYXRlIDwtIGZ1bmN0aW9uKCBkYXRhLCBmb2xkLCBzYW1wbGluZyA9IHNhbXBsaW5nLGZvcm11bGEubW9kZWwgPSBmb3JtdWxhLm1vZGVsKSB7CiAgZGF0YV90cmFpbiA8LSBkYXRhWy1mb2xkLF0KICBkYXRhX3ZhbCA8LSBkYXRhW2ZvbGQsXQogICNmb3IgdXNlIGluIGRlZmF1bHQgYW5kIGdyaWQgc2VhcmNoIG9wdGltaXNlZCBtb2RlbHMKICBjb250cm9sIDwtIHRyYWluQ29udHJvbChtZXRob2QgPSAicmVwZWF0ZWRjdiIsIG51bWJlciA9IDUsIHJlcGVhdHMgPSAxLGNsYXNzUHJvYnMgPSBUUlVFLHN1bW1hcnlGdW5jdGlvbiA9IHR3b0NsYXNzU3VtbWFyeSwgc2FtcGxpbmcgPSBzYW1wbGluZywgc2F2ZVByZWRpY3Rpb25zID0gVFJVRSkKICAjZm9yIHVzZSBpbiByYW5kb20gc2VhcmNoIG9wdGltaXNlZCBtb2RlbHMKICBjb250cm9sX1JhbmRfU2VhcmNoIDwtIHRyYWluQ29udHJvbChtZXRob2QgPSAicmVwZWF0ZWRjdiIsIG51bWJlciA9IDUsIHJlcGVhdHMgPSAxLGNsYXNzUHJvYnMgPSBUUlVFLHN1bW1hcnlGdW5jdGlvbiA9IHR3b0NsYXNzU3VtbWFyeSwgc2FtcGxpbmcgPSBzYW1wbGluZywgc2F2ZVByZWRpY3Rpb25zID0gVFJVRSwgc2VhcmNoID0gInJhbmRvbSIpCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIDMgLSBUcmFpbiB0aGUgbW9kZWxzIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIAogICMgVGhlIHRyYWluIGZ1bmN0aW9uIHNldHMgdXAgYSBncmlkIG9mIHR1bmluZyBwYXJhbWV0ZXJzIGZvciBhIG51bWJlciBvZiBjbGFzc2lmaWNhdGlvbiBhbmQgcmVncmVzc2lvbiAKICAjIFJPQyAgdXNlZCB0byBzZWxlY3QgdGhlIG9wdGltYWwgbW9kZWwgdXNpbmcgdGhlIGxhcmdlc3QgdmFsdWUuCiAgCiAgCiAgIyB0cmFpbiB0aGUgR3JhZGllbnQgYm9vdHN0cmFwIE1hY2hpbmUgbW9kZWwgKFN0b2NoYXN0aWMgR3JhZGllbnQgQm9vc3RpbmcpCiAgIyB1dGlsczo6YnJvd3NlVmlnbmV0dGVzKCJnYm0iKQogICMgdmVyYm9zZSBpcyBhbiBhcmd1bWVudCBvZiB0aGUgZ21iIHBhY2thZ2UsIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gcHJpbnQgb3V0IHByb2dyZXNzIGFuZCAKICAjIHBlcmZvcm1hbmNlIGluZGljYXRvcnMKICAKICAKICAKICAjYnVpbGQgYWxsIHRoZSBHYm0gKFN0b2NoYXN0aWMgZ3JhZGllbnQgYm9vc3RpbmcgbW9kZWwpIG1vZGVscwogICN0dW5pbmcgcGFyYW1ldGVyczogbi50cmVlcyAobnVtYmVyIG9mICBpdGVyYXRpb25zKSwgaW50ZXJhY3Rpb24gZGVwdGggKGNvbXBsZXhpdHkpLCBzaHJpbmthZ2UgKGxlYXJuaW5nIHJhdGUpLCBuLm1pbm9ic2lubm9kZSAobWluIG51bWJlciBvZiB0cmFpbmluZyBkZXQgZGFtcGxlcyBpbiBhIG5vZGUgdG8gY29tbWVuY2Ugc3BsaXR0aW5nKQogICNsZWFybmluZyByYXRlIHNocmlua3MgdGhlIGNvbnRyaWJ1dGlvbiBvZiBlYWNoIHRyZWUgYnkgbGVhcm5pbmdfcmF0ZQogIAogIGdldE1vZGVsSW5mbygpJGdibSRwYXJhbWV0ZXJzCiAgI1Nocmlua2FnZTogdGhlIHNtYWxsZXIgdGhlIG51bWJlciwgdGhlIGJldHRlciB0aGUgcHJlZGljdGl2ZSB2YWx1ZSwgdGhlIG1vcmUgdHJlZXMgcmVxdWlyZWQsIGFuZCB0aGUgbW9yZSBjb21wdXRhdGlvbmFsIGNvc3QuCiAgI3RoZSBzbWFsbGVyIHRoZSBzaHJpbmthZ2UsIHRoZSBtb3JlIHRyZWVzIHlvdSBzaG91bGQgaGF2ZQogIAogICMgRmV0Y2ggbWF4IFZhbHVlIGZvciBpbnRlcmFjdGlvbi5kZXB0aCAKICBmbG9vcihzcXJ0KE5DT0woZGF0YSkpKQogICNzZXQgdXAgdGhlIGdyaWQKICBnYm1HcmlkIDwtICBleHBhbmQuZ3JpZChpbnRlcmFjdGlvbi5kZXB0aCA9IGMoMSwgMywgNywgMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgIG4udHJlZXMgPSBjKDEwLCA1MCwxMDAsMjAwKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hyaW5rYWdlID0gc2VxKGZyb20gPSAwLjAxLCB0byA9IDAuMSwgYnkgPSAwLjAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBuLm1pbm9ic2lubm9kZSA9IGMoNSwxMCwyMCkpIAogIAogICN0dW5lIHRoZSBoeXBlci1wYXJhbWV0ZXJzIHVzaW5nICBHcmlkIFNlYXJjaAogIAogIG1vZGVsR2JtX0NDX0dBREFfTHIgPC0gdHJhaW4oZm9ybXVsYS5tb2RlbCwgZGF0YSA9IGRhdGFfdHJhaW4sIG1ldGhvZCA9ICJnYm0iLCB0ckNvbnRyb2wgPSBjb250cm9sLCB2ZXJib3NlID0gRkFMU0UsbWV0cmljID0gJ1JPQycsdHVuZUdyaWQ9Z2JtR3JpZCkKICAjcmFuZG9tIHNlYXJjaCBJbmRlcGVuZGVudGx5IGRyYXdzIGZyb20gYSB1bmlmb3JtIGRlbnNpdHkgZnJvbSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIHNwYWNlIGFzIHdvdWxkIGJlIHNwYW5uZWQgYnkgYSByZWd1bGFyIGdyaWQsCiAgI3dlIGRvIG5vdCB1c2UgcmFuZG9tIGh5cGVycGFyYW1ldGVyIHNlYXJjaCBmb3IgZ2JtIG1vZGVscyBhcyBpdCBtYXkgYmUgaW5lZmZpY2llbnRzIAogIAogICMgdHJhaW4gdGhlIFNWTSBtb2RlbAogICMgU3VwcG9ydCBWZWN0b3IgTWFjaGluZXMgd2l0aCBSYWRpYWwgQmFzaXMgRnVuY3Rpb24gS2VybmVsIChTVk0gY2xhc3NpZmllciB1c2luZyBhIG5vbi1saW5lYXIga2VybmVsKQogICNSQkYgaXMgYSByZWFzb25hYmxlIGZpcnN0IGNob2ljZSwgaXQgY2FuIGhhbmRsZSBub25saW5lYXIgcmVsYXRpb25zaGlwcwogICNDIGlzIHRoZSBwZW5hbHR5IHBhcmFtZXRlciBvZiB0aGUgZXJyb3IgdGVybS4gSXQgY29udHJvbHMgdGhlIHRyYWRlIG9mZiBiZXR3ZWVuIHNtb290aCBkZWNpc2lvbiBib3VuZGFyeSAoc21hbGwgYykgYW5kIGNsYXNzaWZ5aW5nIHRoZSB0cmFpbmluZyBwb2ludHMgY29ycmVjdGx5LgogICNsYXJnZXIgdmFsdWVzIG9mIEMgZm9jdXMgYXR0ZW50aW9uIG1vcmUgb24gKGNvcnJlY3RseSBjbGFzc2lmaWVkKSBwb2ludHMgbmVhciB0aGUgZGVjaXNpb24gYm91bmRhcnkgKHdpZ2dseSBib3VuZGFyeSksIHdoaWxlIHNtYWxsZXIgdmFsdWVzIGludm9sdmUgZGF0YSBmdXJ0aGVyIGF3YXkgKHdpZGVyIG1hcmdpbnMpLgogICMgc2lnbWEgdGhlIHJhZGl1cy9zcHJlYWQvZGVjaXNpb24gYm91bmRhcnkgb2YgdGhlIGtlcm5lbAogICNXaGVuIGdhbW1hIGlzIGxvdywgdGhlICdjdXJ2ZScgb2YgdGhlIGRlY2lzaW9uIGJvdW5kYXJ5IGlzIHZlcnkgbG93IGFuZCB0aHVzIHRoZSBkZWNpc2lvbiByZWdpb24gaXMgdmVyeSBicm9hZC4gCiAgI1doZW4gZ2FtbWEgaXMgaGlnaCwgdGhlICdjdXJ2ZScgb2YgdGhlIGRlY2lzaW9uIGJvdW5kYXJ5IGlzIGhpZ2gsIHdoaWNoIGNyZWF0ZXMgaXNsYW5kcyBvZiBkZWNpc2lvbi1ib3VuZGFyaWVzIGFyb3VuZCBkYXRhIHBvaW50cy4KICAKICAjdXNpbmcgdHJhaW5pbmcgZGF0YXNldCBhbmQgZGVmYXVsdCBwYXJhbWV0ZXJzCiAgZ2V0TW9kZWxJbmZvKCkkc3ZtUmFkaWFsJHBhcmFtZXRlcnMKICBzdm1HcmlkIDwtICBleHBhbmQuZ3JpZChzaWdtYSA9IGMoMC4wMSwgMC4xLCAxLCAxMCwgMTAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gc2VxKGZyb20gPSAwLjEsIHRvID0gMSwgYnkgPSAwLjA1KSkgCiAgCiAgI3VzaW5nIHRyYWluaW5nIGRhdGFzZXQgYW5kIHR1bmUgdGhlIGh5cGVyLXBhcmFtZXRlcnMgdXNpbmcgQ2FyZXQgR3JpZCBTZWFyY2gKICAKICBtb2RlbFN2bV9DQ19HQURBX0xyIDwtIHRyYWluKGZvcm11bGEubW9kZWwsIGRhdGEgPSBkYXRhX3RyYWluLCBtZXRob2QgPSAic3ZtUmFkaWFsIiwgdHJDb250cm9sID0gY29udHJvbCwgdmVyYm9zZSA9IFRSVUUsbWV0cmljID0gJ1JPQycsdHVuZUdyaWQ9c3ZtR3JpZCkKICAKICAKICAjIHRyYWluIHRoZSBSYW5kb20gZm9yZXN0IG1vZGVsCiAgI3BhcmFtZXRlciBtdHJ5IGlzIHRoZSBudW1iZXIgb2YgdmFyaWFibGVzIGF2YWlsYWJsZSBmb3Igc3BsaXR0aW5nIGF0IGVhY2ggdHJlZSBub2RlCiAgI1RoZSBkZWZhdWx0IGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgbnVtYmVyIG9mIHByZWRpY3RvciB2YXJpYWJsZXMgKHJvdW5kZWQgZG93bikKICAjYXMgd2UgYXJlIG9ubHkgdXNpbmcgdGhyZWUgdmFyaWFibGVzIHdlIGRvIG5vdCBvcHRpbWlzZSB0aGUgcGFyYW1ldGVycwogICNGb3IgbXRyeSByZWZlciB0byBodHRwOi8vY29kZS5lbnYuZHVrZS5lZHUvcHJvamVjdHMvbWdldC9leHBvcnQvSEVBRC9NR0VUL1RydW5rL1B5dGhvblBhY2thZ2UvZGlzdC9UcmFjT25saW5lRG9jdW1lbnRhdGlvbi9Eb2N1bWVudGF0aW9uL0FyY0dJU1JlZmVyZW5jZS9SYW5kb21Gb3Jlc3RNb2RlbC5GaXRUb0FyY0dJU1RhYmxlLmh0bWwKICAKICAjdXNpbmcgdHJhaW5pbmcgZGF0YXNldCBhbmQgZGVmYXVsdCBwYXJhbWV0ZXJzCiAgCiAgbW9kZWxSZl9DQ19HQURBIDwtIHRyYWluKGZvcm11bGEubW9kZWwsIGRhdGEgPSBkYXRhX3RyYWluLCBtZXRob2QgPSAncmYnLCB0ckNvbnRyb2wgPSBjb250cm9sLG1ldHJpYyA9ICdST0MnKQogIAogIAogICMgdHJhaW4gYSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsCiAgI3VzaW5nIHRyYWluaW5nIGRhdGFzZXQKICAjdGhlcmUgYXJlIG5vIHR1bmluZyBwYXJhbWV0ZXJzIGZvciBnbG0gbWV0aG9kIHdpdGhpbiBjYXJldAogIAogIG1vZGVsTEdfQ0NfR0FEQSA8LSB0cmFpbihmb3JtdWxhLm1vZGVsLCBkYXRhID0gZGF0YV90cmFpbiwgbWV0aG9kID0gImdsbSIsIGZhbWlseSA9ICJiaW5vbWlhbCIsIHRyQ29udHJvbCA9IGNvbnRyb2wsbWV0cmljID0gJ1JPQycpCiAgCiAgCiAgIyB0cmFpbiBuZXVyYWwgbmV0d29yawogIGdldE1vZGVsSW5mbygpJG5uZXQkcGFyYW1ldGVycwogICNzaXplIHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIHVuaXRzIGluIGhpZGRlbiBsYXllciAobm5ldCBmaXQgYSBzaW5nbGUgaGlkZGVuIGxheWVyIG5ldXJhbCBuZXR3b3JrKSAKICAjZGVjYXkgcGFyYW1ldGVyIGlzIHRoZSByZWd1bGFyaXphdGlvbiBwYXJhbWV0ZXIgdG8gYXZvaWQgb3Zlci1maXR0aW5nCiAgbm5ldEdyaWQgPC0gIGV4cGFuZC5ncmlkKHNpemUgPSBzZXEoZnJvbSA9IDEsIHRvID0gMTAsIGJ5ID0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2F5ID0gYygwLjUsIDAuMSwgMC4wMSwgMC4wMDEsIDAuMDAwMSwgMC4wMDAwMSwgMC4wMDAwMDEsIDAuMDAwMDAwMSkpCiAgCiAgI3R1bmUgdGhlIGh5cGVyLXBhcmFtZXRlcnMgdXNpbmcgQ2FyZXQgR3JpZCBTZWFyY2gKICAKICBtb2RlbG5uZXRfQ0NfR0FEQV9MciA8LSB0cmFpbihmb3JtdWxhLm1vZGVsLCBkYXRhID0gZGF0YV90cmFpbiwgbWV0aG9kID0gIm5uZXQiLCB0ckNvbnRyb2wgPSBjb250cm9sLG1ldHJpYyA9ICdST0MnLCB0dW5lR3JpZCA9IG5uZXRHcmlkKQogIAogIAogICMgdHJhaW4gYSBrLW5lYXJlc3QtbmVpZ2hib3VycwogICNiYXNlZCBvbiBldWNsaWRlYW4gZGlzdGFuY2UKICBnZXRNb2RlbEluZm8oKSRrbm4kcGFyYW1ldGVycwogICNrIHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIG5laWdoYm91cnMuIAogIGtubkdyaWQgPC0gIGV4cGFuZC5ncmlkKGsgPSBzZXEoZnJvbSA9IDEsIHRvID0gMTAwLCBieSA9IDEpKQogICN0dW5lIHRoZSBoeXBlci1wYXJhbWV0ZXJzIHVzaW5nIENhcmV0IEdyaWQgU2VhcmNoCiAgCiAgbW9kZWxrbm5fQ0NfR0FEQV9MciA8LSB0cmFpbihmb3JtdWxhLm1vZGVsLCBkYXRhID0gZGF0YV90cmFpbiwgbWV0aG9kID0gImtubiIsIHRyQ29udHJvbCA9IGNvbnRyb2wsbWV0cmljID0gJ1JPQycsIHR1bmVHcmlkID0ga25uR3JpZCkKICAKICBtYXJzZ3JpZCA8LSBleHBhbmQuZ3JpZCgKICAgIGRlZ3JlZSA9IDE6MywgCiAgICBucHJ1bmUgPSBzZXEoMiwgMTAwLCBsZW5ndGgub3V0ID0gMTApICU+JSBmbG9vcigpCiAgKQogIAogICN0dW5lIHRoZSBoeXBlci1wYXJhbWV0ZXJzIHVzaW5nICBHcmlkIFNlYXJjaAogIAogIG1vZGVsTUFSU19DQ19HQURBX0xyIDwtIHRyYWluKGZvcm11bGEubW9kZWwsIGRhdGEgPSBkYXRhX3RyYWluLCBtZXRob2QgPSAiZWFydGgiLCBnbG09bGlzdChmYW1pbHk9J2Jpbm9taWFsJyksdHJDb250cm9sID0gY29udHJvbCwsbWV0cmljID0gJ1JPQycsdHVuZUdyaWQ9bWFyc2dyaWQpCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyA0IC0gUGVyZm9ybSB2YWxpZGF0aW9uIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIAogICNmb3IgdGhlIEdibSBncmlkIHNlYXJjaCBtb2RlbCAodmFsaWRhdGlvbikKICBwcm9ic1Rlc3RHYm1HcmlkVmFsID0gcHJlZGljdChtb2RlbEdibV9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFfdmFsLCB0eXBlID0gInByb2IiKQogIGRhdGFfdmFsID1kYXRhLmZyYW1lKGRhdGFfdmFsLHByb2JzVGVzdEdibUdyaWRWYWwkWDIpCiAgcHJlZFRlc3RHYm1HcmlkVmFsID0gbG9nKGFzLm51bWVyaWMocHJvYnNUZXN0R2JtR3JpZFZhbCRYMikvKDEtYXMubnVtZXJpYyhwcm9ic1Rlc3RHYm1HcmlkVmFsJFgyKSkpCiAgI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldAogIHJvY19vYmpUZXN0R2JtR3JpZHZhbCA8LSByb2MoZGF0YV92YWxbLFlvdXJvdXRjb21ldmFyaWFibGVdLCBwcmVkVGVzdEdibUdyaWRWYWwpCiAgQVVDX29ialRlc3RHYm1HcmlkdmFsID0gYXVjKHJvY19vYmpUZXN0R2JtR3JpZHZhbCkKICBBVUNfb2JqVGVzdEdibUdyaWR2YWwKICBjaS5hdWMocm9jX29ialRlc3RHYm1HcmlkdmFsKQogIAogIAogICNmb3IgdGhlIFN2bSBncmlkIHNlYXJjaCBtb2RlbCAodmFsaWRhdGlvbikKICBwcm9ic1Rlc3RTdm1HcmlkVmFsID0gcHJlZGljdChtb2RlbFN2bV9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFfdmFsLCB0eXBlID0gInByb2IiKQogIGRhdGFfdmFsID1kYXRhLmZyYW1lKGRhdGFfdmFsLHByb2JzVGVzdFN2bUdyaWRWYWwkWDIpCiAgcHJlZFRlc3RTdm1HcmlkVmFsID0gbG9nKGFzLm51bWVyaWMocHJvYnNUZXN0U3ZtR3JpZFZhbCRYMikvKDEtYXMubnVtZXJpYyhwcm9ic1Rlc3RTdm1HcmlkVmFsJFgyKSkpCiAgI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldAogIHJvY19vYmpUZXN0U3ZtR3JpZHZhbCA8LSByb2MoZGF0YV92YWxbLFlvdXJvdXRjb21ldmFyaWFibGVdLCBwcmVkVGVzdFN2bUdyaWRWYWwpCiAgQVVDX29ialRlc3RTdm1HcmlkdmFsID0gYXVjKHJvY19vYmpUZXN0U3ZtR3JpZHZhbCkKICBBVUNfb2JqVGVzdFN2bUdyaWR2YWwKICBjaS5hdWMocm9jX29ialRlc3RTdm1HcmlkdmFsKQogIAogICNmb3IgdGhlIGtubiBncmlkIHNlYXJjaCBtb2RlbCAodmFsaWRhdGlvbikKICBwcm9ic1Rlc3Rrbm5HcmlkVmFsID0gcHJlZGljdChtb2RlbGtubl9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFfdmFsLCB0eXBlID0gInByb2IiKQogIGRhdGFfdmFsID1kYXRhLmZyYW1lKGRhdGFfdmFsLHByb2JzVGVzdGtubkdyaWRWYWwkWDIpCiAgcHJvYnNUZXN0a25uR3JpZFZhbCRYMltwcm9ic1Rlc3Rrbm5HcmlkVmFsJFgyID09IDFdIDwtIDAuOTk5OTk5CiAgcHJvYnNUZXN0a25uR3JpZFZhbCRYMltwcm9ic1Rlc3Rrbm5HcmlkVmFsJFgyID09IDBdIDwtIDAuMDAwMDAxCiAgcHJlZFRlc3Rrbm5HcmlkVmFsID0gbG9nKGFzLm51bWVyaWMocHJvYnNUZXN0a25uR3JpZFZhbCRYMikvKDEtYXMubnVtZXJpYyhwcm9ic1Rlc3Rrbm5HcmlkVmFsJFgyKSkpCiAgI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldAogIHJvY19vYmpUZXN0a25uR3JpZHZhbCA8LSByb2MoZGF0YV92YWxbLFlvdXJvdXRjb21ldmFyaWFibGVdLCBwcmVkVGVzdGtubkdyaWRWYWwpCiAgQVVDX29ialRlc3Rrbm5HcmlkdmFsID0gYXVjKHJvY19vYmpUZXN0a25uR3JpZHZhbCkKICBBVUNfb2JqVGVzdGtubkdyaWR2YWwKICBjaS5hdWMocm9jX29ialRlc3Rrbm5HcmlkdmFsKQogIAogICNmb3IgdGhlIG5uZXQgZ3JpZCBzZWFyY2ggbW9kZWwgKHZhbGlkYXRpb24pCiAgcHJvYnNUZXN0bm5ldEdyaWRWYWwgPSBwcmVkaWN0KG1vZGVsbm5ldF9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFfdmFsLCB0eXBlID0gInByb2IiKQogIGRhdGFfdmFsID1kYXRhLmZyYW1lKGRhdGFfdmFsLHByb2JzVGVzdG5uZXRHcmlkVmFsJFgyKQogIHByZWRUZXN0bm5ldEdyaWRWYWwgPSBsb2coYXMubnVtZXJpYyhwcm9ic1Rlc3RubmV0R3JpZFZhbCRYMikvKDEtYXMubnVtZXJpYyhwcm9ic1Rlc3RubmV0R3JpZFZhbCRYMikpKQogICN0aGVuIGNyZWF0ZSBhIHJvYyBvYmplY3QgYW5kIGNhbGN1bGF0ZSB0aGUgUk9DIG9uIHRoZSB2YWxpZGF0aW9uIGRhdGFzZXQKICByb2Nfb2JqVGVzdG5uZXRHcmlkdmFsIDwtIHJvYyhkYXRhX3ZhbFssWW91cm91dGNvbWV2YXJpYWJsZV0sIHByZWRUZXN0bm5ldEdyaWRWYWwpCiAgQVVDX29ialRlc3RubmV0R3JpZHZhbCA9IGF1Yyhyb2Nfb2JqVGVzdG5uZXRHcmlkdmFsKQogIEFVQ19vYmpUZXN0bm5ldEdyaWR2YWwKICBjaS5hdWMocm9jX29ialRlc3RubmV0R3JpZHZhbCkKICAKICAjZm9yIHRoZSByZiBtb2RlbCAodmFsaWRhdGlvbikKICBwcm9ic1Rlc3RSZlZhbCA9IHByZWRpY3QobW9kZWxSZl9DQ19HQURBLCBuZXdkYXRhPWRhdGFfdmFsLCB0eXBlID0gInByb2IiKQogIGRhdGFfdmFsID1kYXRhLmZyYW1lKGRhdGFfdmFsLHByb2JzVGVzdFJmVmFsJFgyKQogIHByb2JzVGVzdFJmVmFsJFgyW3Byb2JzVGVzdFJmVmFsJFgyID09IDFdIDwtIDAuOTk5OTk5CiAgcHJvYnNUZXN0UmZWYWwkWDJbcHJvYnNUZXN0UmZWYWwkWDIgPT0gMF0gPC0gMC4wMDAwMDEKICBwcmVkVGVzdFJmVmFsID0gbG9nKGFzLm51bWVyaWMocHJvYnNUZXN0UmZWYWwkWDIpLygxLWFzLm51bWVyaWMocHJvYnNUZXN0UmZWYWwkWDIpKSkKICAjdGhlbiBjcmVhdGUgYSByb2Mgb2JqZWN0IGFuZCBjYWxjdWxhdGUgdGhlIFJPQyBvbiB0aGUgdmFsaWRhdGlvbiBkYXRhc2V0CiAgcm9jX29ialRlc3RSZnZhbCA8LSByb2MoZGF0YV92YWxbLFlvdXJvdXRjb21ldmFyaWFibGVdLCBwcmVkVGVzdFJmVmFsKQogIEFVQ19vYmpUZXN0UmZ2YWwgPSBhdWMocm9jX29ialRlc3RSZnZhbCkKICBBVUNfb2JqVGVzdFJmdmFsCiAgY2kuYXVjKHJvY19vYmpUZXN0UmZ2YWwpCiAgCiAgI2ZvciB0aGUgbG9naXN0aWMgcmVncmVzc2lvbiBtb2RlbCAodmFsaWRhdGlvbikKICBwcm9ic1Rlc3RsZ1ZhbCA9IHByZWRpY3QobW9kZWxMR19DQ19HQURBLCBuZXdkYXRhPWRhdGFfdmFsLCB0eXBlID0gInByb2IiKQogIGRhdGFfdmFsID1kYXRhLmZyYW1lKGRhdGFfdmFsLHByb2JzVGVzdGxnVmFsJFgyKQogIHByZWRUZXN0TEdWYWwgPSBsb2coYXMubnVtZXJpYyhwcm9ic1Rlc3RsZ1ZhbCRYMikvKDEtYXMubnVtZXJpYyhwcm9ic1Rlc3RsZ1ZhbCRYMikpKQogICN0aGVuIGNyZWF0ZSBhIHJvYyBvYmplY3QgYW5kIGNhbGN1bGF0ZSB0aGUgUk9DIG9uIHRoZSB2YWxpZGF0aW9uIGRhdGFzZXQKICByb2Nfb2JqVGVzdExHdmFsIDwtIHJvYyhkYXRhX3ZhbFssWW91cm91dGNvbWV2YXJpYWJsZV0sIHByZWRUZXN0TEdWYWwpCiAgQVVDX29ialRlc3RMR3ZhbCA9IGF1Yyhyb2Nfb2JqVGVzdExHdmFsKQogIEFVQ19vYmpUZXN0TEd2YWwKICBjaS5hdWMocm9jX29ialRlc3RMR3ZhbCkKICAKICAjZm9yIHRoZSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsICh2YWxpZGF0aW9uKQogIHByb2JzVGVzdE1BUlNWYWwgPSBwcmVkaWN0KCBtb2RlbE1BUlNfQ0NfR0FEQV9MciwgbmV3ZGF0YT1kYXRhX3ZhbCwgdHlwZSA9ICJwcm9iIikKICBkYXRhX3ZhbCA9ZGF0YS5mcmFtZShkYXRhX3ZhbCxwcm9ic1Rlc3RNQVJTVmFsJFgyKQogIHByZWRUZXN0TUFSU1ZhbCA9IGxvZyhhcy5udW1lcmljKHByb2JzVGVzdE1BUlNWYWwkWDIpLygxLWFzLm51bWVyaWMocHJvYnNUZXN0TUFSU1ZhbCRYMikpKQogICN0aGVuIGNyZWF0ZSBhIHJvYyBvYmplY3QgYW5kIGNhbGN1bGF0ZSB0aGUgUk9DIG9uIHRoZSB2YWxpZGF0aW9uIGRhdGFzZXQKICByb2Nfb2JqVGVzdE1BUlN2YWwgPC0gcm9jKGRhdGFfdmFsWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSwgcHJlZFRlc3RNQVJTVmFsKQogIEFVQ19vYmpUZXN0TUFSU3ZhbCA9IGF1Yyhyb2Nfb2JqVGVzdE1BUlN2YWwpCiAgQVVDX29ialRlc3RNQVJTdmFsCiAgY2kuYXVjKHJvY19vYmpUZXN0TUFSU3ZhbCkKICByZXMgPC0gYyggIEFVQ19vYmpUZXN0R2JtR3JpZHZhbCwgIEFVQ19vYmpUZXN0U3ZtR3JpZHZhbCwgIEFVQ19vYmpUZXN0a25uR3JpZHZhbCwgIEFVQ19vYmpUZXN0bm5ldEdyaWR2YWwsQVVDX29ialRlc3RSZnZhbCxBVUNfb2JqVGVzdExHdmFsLEFVQ19vYmpUZXN0TUFSU3ZhbCkKfQpgYGAKCuOBp+OBr+OAgeOBhOOCiOOBhOOCiOWun+ihjOOBp+OBmeOAggoKYGBge3J9CnNhbXBsaW5nIDwtIE5VTEwgIApyZXNfbm9uZV9sIDwtIG5lc3RlZF9jdihkYXRhX3RyYWluLCA1LGZvcm11bGEubW9kZWwsIHNhbXBsaW5nID0gc2FtcGxpbmcpCnJlc19ub25lIDwtIGRvLmNhbGwocmJpbmQsIHJlc19ub25lX2wpIApyZXMgPC0gYXBwbHkocmVzX25vbmUsMixtZWFuKQpyZXN2YXIgPC0gYXBwbHkocmVzX25vbmUsMixzZCkKcmVzIC0xLjk2KihyZXN2YXIvc3FydCg1KSkKcmVzICsgMS45NioocmVzdmFyL3NxcnQoNSkpCm1vZGVscyA8LSBjKCJHYm0iLCAgIlN2bSIsICAia25uIiwgICJubmV0IiwiUmYiLCJMRyIsIk1BUlMiKQpyZXMgPC0gZGF0YS5mcmFtZShtb2RlbHMscmVzKQpuYW1lcyhyZXMpIDwtIGMoIk1vZGVscyIsICJBVUMiKQpteWZ0IDwtIHJlZ3VsYXJ0YWJsZShyZXMpCm15ZnQgPC0gdGhlbWVfdmFuaWxsYShteWZ0KQpteWZ0IDwtIGF1dG9maXQobXlmdCkKZG9jIDwtIHJlYWRfZG9jeCgpCmRvYyA8LSBib2R5X2FkZF9mbGV4dGFibGUoZG9jLCB2YWx1ZSA9IG15ZnQpCiNwcmludChkb2MsIHRhcmdldCA9IHBhc3RlMCgibmVzdGVkQ1Zfc2FtcGxpbmciLCBzYW1wbGluZywgImZvcm11bGFfIixhcy5jaGFyYWN0ZXIoZm9ybXVsYS5tb2RlbClbM10sIi5kb2N4IikpCnByaW50KGRvYykgIyMjIOWHuuWKm+OCkuODleOCoeOCpOODq+OBp+OBr+OBquOBj+S4i+OBq+WkieabtApgYGAKCgrjgb7jgaDjgrPjg7zjg4nop6Poqq3kuK3jgIIKCgpgYGB7cn0KI2ZvciB0aGUgR2JtIGdyaWQgc2VhcmNoIG1vZGVsICh2YWxpZGF0aW9uKQpwcm9ic1Rlc3RHYm1HcmlkVmFsID0gcHJlZGljdChtb2RlbEdibV9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFzZXRfdmFsLCB0eXBlID0gInByb2IiKQpkYXRhc2V0X3ZhbCA9ZGF0YS5mcmFtZShkYXRhc2V0X3ZhbCxwcm9ic1Rlc3RHYm1HcmlkVmFsJFgyKQpwcmVkVGVzdEdibUdyaWRWYWwgPSBsb2coYXMubnVtZXJpYyhwcm9ic1Rlc3RHYm1HcmlkVmFsJFgyKS8oMS1hcy5udW1lcmljKHByb2JzVGVzdEdibUdyaWRWYWwkWDIpKSkKI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldApyb2Nfb2JqVGVzdEdibUdyaWR2YWwgPC0gcm9jKGRhdGFzZXRfdmFsWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSwgcHJlZFRlc3RHYm1HcmlkVmFsKQpBVUNfb2JqVGVzdEdibUdyaWR2YWwgPSBhdWMocm9jX29ialRlc3RHYm1HcmlkdmFsKQpBVUNfb2JqVGVzdEdibUdyaWR2YWwKY2kuYXVjKHJvY19vYmpUZXN0R2JtR3JpZHZhbCkKYGBgCgpgYGB7cn0KI2ZvciB0aGUgU3ZtIGdyaWQgc2VhcmNoIG1vZGVsICh2YWxpZGF0aW9uKQpwcm9ic1Rlc3RTdm1HcmlkVmFsID0gcHJlZGljdChtb2RlbFN2bV9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFzZXRfdmFsLCB0eXBlID0gInByb2IiKQpkYXRhc2V0X3ZhbCA9ZGF0YS5mcmFtZShkYXRhc2V0X3ZhbCxwcm9ic1Rlc3RTdm1HcmlkVmFsJFgyKQpwcmVkVGVzdFN2bUdyaWRWYWwgPSBsb2coYXMubnVtZXJpYyhwcm9ic1Rlc3RTdm1HcmlkVmFsJFgyKS8oMS1hcy5udW1lcmljKHByb2JzVGVzdFN2bUdyaWRWYWwkWDIpKSkKI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldApyb2Nfb2JqVGVzdFN2bUdyaWR2YWwgPC0gcm9jKGRhdGFzZXRfdmFsWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSwgcHJlZFRlc3RTdm1HcmlkVmFsKQpBVUNfb2JqVGVzdFN2bUdyaWR2YWwgPSBhdWMocm9jX29ialRlc3RTdm1HcmlkdmFsKQpBVUNfb2JqVGVzdFN2bUdyaWR2YWwKY2kuYXVjKHJvY19vYmpUZXN0U3ZtR3JpZHZhbCkKYGBgCgpgYGB7cn0KI2ZvciB0aGUga25uIGdyaWQgc2VhcmNoIG1vZGVsICh2YWxpZGF0aW9uKQpwcm9ic1Rlc3Rrbm5HcmlkVmFsID0gcHJlZGljdChtb2RlbGtubl9DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFzZXRfdmFsLCB0eXBlID0gInByb2IiKQpkYXRhc2V0X3ZhbCA9ZGF0YS5mcmFtZShkYXRhc2V0X3ZhbCxwcm9ic1Rlc3Rrbm5HcmlkVmFsJFgyKQpwcm9ic1Rlc3Rrbm5HcmlkVmFsJFgyW3Byb2JzVGVzdGtubkdyaWRWYWwkWDIgPT0gMV0gPC0gMC45OTk5OTkKcHJvYnNUZXN0a25uR3JpZFZhbCRYMltwcm9ic1Rlc3Rrbm5HcmlkVmFsJFgyID09IDBdIDwtIDAuMDAwMDAxCnByZWRUZXN0a25uR3JpZFZhbCA9IGxvZyhhcy5udW1lcmljKHByb2JzVGVzdGtubkdyaWRWYWwkWDIpLygxLWFzLm51bWVyaWMocHJvYnNUZXN0a25uR3JpZFZhbCRYMikpKQojdGhlbiBjcmVhdGUgYSByb2Mgb2JqZWN0IGFuZCBjYWxjdWxhdGUgdGhlIFJPQyBvbiB0aGUgdmFsaWRhdGlvbiBkYXRhc2V0CnJvY19vYmpUZXN0a25uR3JpZHZhbCA8LSByb2MoZGF0YXNldF92YWxbLFlvdXJvdXRjb21ldmFyaWFibGVdLCBwcmVkVGVzdGtubkdyaWRWYWwpCkFVQ19vYmpUZXN0a25uR3JpZHZhbCA9IGF1Yyhyb2Nfb2JqVGVzdGtubkdyaWR2YWwpCkFVQ19vYmpUZXN0a25uR3JpZHZhbApjaS5hdWMocm9jX29ialRlc3Rrbm5HcmlkdmFsKQpgYGAKCmBgYHtyfQojZm9yIHRoZSBubmV0IGdyaWQgc2VhcmNoIG1vZGVsICh2YWxpZGF0aW9uKQpwcm9ic1Rlc3RubmV0R3JpZFZhbCA9IHByZWRpY3QobW9kZWxubmV0X0NDX0dBREFfTHIsIG5ld2RhdGE9ZGF0YXNldF92YWwsIHR5cGUgPSAicHJvYiIpCmRhdGFzZXRfdmFsID1kYXRhLmZyYW1lKGRhdGFzZXRfdmFsLHByb2JzVGVzdG5uZXRHcmlkVmFsJFgyKQpwcmVkVGVzdG5uZXRHcmlkVmFsID0gbG9nKGFzLm51bWVyaWMocHJvYnNUZXN0bm5ldEdyaWRWYWwkWDIpLygxLWFzLm51bWVyaWMocHJvYnNUZXN0bm5ldEdyaWRWYWwkWDIpKSkKI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldApyb2Nfb2JqVGVzdG5uZXRHcmlkdmFsIDwtIHJvYyhkYXRhc2V0X3ZhbFssWW91cm91dGNvbWV2YXJpYWJsZV0sIHByZWRUZXN0bm5ldEdyaWRWYWwpCkFVQ19vYmpUZXN0bm5ldEdyaWR2YWwgPSBhdWMocm9jX29ialRlc3RubmV0R3JpZHZhbCkKQVVDX29ialRlc3RubmV0R3JpZHZhbApjaS5hdWMocm9jX29ialRlc3RubmV0R3JpZHZhbCkKYGBgCgpgYGB7cn0KI2ZvciB0aGUgcmYgbW9kZWwgKHZhbGlkYXRpb24pCnByb2JzVGVzdFJmVmFsID0gcHJlZGljdChtb2RlbFJmX0NDX0dBREEsIG5ld2RhdGE9ZGF0YXNldF92YWwsIHR5cGUgPSAicHJvYiIpCmRhdGFzZXRfdmFsID1kYXRhLmZyYW1lKGRhdGFzZXRfdmFsLHByb2JzVGVzdFJmVmFsJFgyKQpwcm9ic1Rlc3RSZlZhbCRYMltwcm9ic1Rlc3RSZlZhbCRYMiA9PSAxXSA8LSAwLjk5OTk5OQpwcm9ic1Rlc3RSZlZhbCRYMltwcm9ic1Rlc3RSZlZhbCRYMiA9PSAwXSA8LSAwLjAwMDAwMQpwcmVkVGVzdFJmVmFsID0gbG9nKGFzLm51bWVyaWMocHJvYnNUZXN0UmZWYWwkWDIpLygxLWFzLm51bWVyaWMocHJvYnNUZXN0UmZWYWwkWDIpKSkKI3RoZW4gY3JlYXRlIGEgcm9jIG9iamVjdCBhbmQgY2FsY3VsYXRlIHRoZSBST0Mgb24gdGhlIHZhbGlkYXRpb24gZGF0YXNldApyb2Nfb2JqVGVzdFJmdmFsIDwtIHJvYyhkYXRhc2V0X3ZhbFssWW91cm91dGNvbWV2YXJpYWJsZV0sIHByZWRUZXN0UmZWYWwpCkFVQ19vYmpUZXN0UmZ2YWwgPSBhdWMocm9jX29ialRlc3RSZnZhbCkKQVVDX29ialRlc3RSZnZhbApjaS5hdWMocm9jX29ialRlc3RSZnZhbCkKYGBgCgpgYGB7cn0KI2ZvciB0aGUgbG9naXN0aWMgcmVncmVzc2lvbiBtb2RlbCAodmFsaWRhdGlvbikKcHJvYnNUZXN0bGdWYWwgPSBwcmVkaWN0KG1vZGVsTEdfQ0NfR0FEQSwgbmV3ZGF0YT1kYXRhc2V0X3ZhbCwgdHlwZSA9ICJwcm9iIikKZGF0YXNldF92YWwgPWRhdGEuZnJhbWUoZGF0YXNldF92YWwscHJvYnNUZXN0bGdWYWwkWDIpCnByZWRUZXN0TEdWYWwgPSBsb2coYXMubnVtZXJpYyhwcm9ic1Rlc3RsZ1ZhbCRYMikvKDEtYXMubnVtZXJpYyhwcm9ic1Rlc3RsZ1ZhbCRYMikpKQojdGhlbiBjcmVhdGUgYSByb2Mgb2JqZWN0IGFuZCBjYWxjdWxhdGUgdGhlIFJPQyBvbiB0aGUgdmFsaWRhdGlvbiBkYXRhc2V0CnJvY19vYmpUZXN0TEd2YWwgPC0gcm9jKGRhdGFzZXRfdmFsWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSwgcHJlZFRlc3RMR1ZhbCkKQVVDX29ialRlc3RMR3ZhbCA9IGF1Yyhyb2Nfb2JqVGVzdExHdmFsKQpBVUNfb2JqVGVzdExHdmFsCmNpLmF1Yyhyb2Nfb2JqVGVzdExHdmFsKQpgYGAKCmBgYHtyfQojZm9yIHRoZSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsIE1BUlMgKHZhbGlkYXRpb24pCnByb2JzVGVzdG1hcnNWYWwgPSBwcmVkaWN0KG1vZGVsTUFSU19DQ19HQURBX0xyLCBuZXdkYXRhPWRhdGFzZXRfdmFsLCB0eXBlID0gInByb2IiKQpkYXRhc2V0X3ZhbCA9ZGF0YS5mcmFtZShkYXRhc2V0X3ZhbCxwcm9ic1Rlc3RtYXJzVmFsJFgyKQojIHByZWRUZXN0TUFSU1ZhbCA9IGxvZyhhcy5udW1lcmljKHByb2JzVGVzdG1hcnNWYWwkWDIpLygxLWFzLm51bWVyaWMocHJvYnNUZXN0bWFyc1ZhbCRYMikpKQojdGhlbiBjcmVhdGUgYSByb2Mgb2JqZWN0IGFuZCBjYWxjdWxhdGUgdGhlIFJPQyBvbiB0aGUgdmFsaWRhdGlvbiBkYXRhc2V0CnJvY19vYmpUZXNNQVJTR3ZhbCA8LSByb2MoZGF0YXNldF92YWxbLFlvdXJvdXRjb21ldmFyaWFibGVdLCBwcm9ic1Rlc3RtYXJzVmFsJFgyKQpBVUNfb2JqVGVzdE1BUlN2YWwgPSBhdWMocm9jX29ialRlc01BUlNHdmFsKQpBVUNfb2JqVGVzdE1BUlN2YWwKY2kuYXVjKHJvY19vYmpUZXNNQVJTR3ZhbCkKYGBgCgoKYGBge3J9CiNwbG90IHRoZSByb2MgY3VydmVzCnBsb3Qocm9jX29ialRlc3RSZnZhbCwgY29sID0gImdyYXk4NSIsbWFpbiA9ICIiLGFkZD1GQUxTRSkKcGxvdChyb2Nfb2JqVGVzdExHdmFsLCBjb2wgPSAiZ3JheTQ1IiwgYWRkID0gVFJVRSkKcGxvdChyb2Nfb2JqVGVzdFN2bUdyaWR2YWwsIGNvID0gImJsYWNrIiwgYWRkID0gVFJVRSkKcGxvdChyb2Nfb2JqVGVzdEdibUdyaWR2YWwsIGNvbCA9ICJncmF5ODUiLCAgbHR5ID0gMywgYWRkID0gVFJVRSkKcGxvdChyb2Nfb2JqVGVzdG5uZXRHcmlkdmFsLCBjb2wgPSAiYmxhY2siLGx0eSA9IDMsIGFkZCA9IFRSVUUpCnBsb3Qocm9jX29ialRlc3Rrbm5HcmlkdmFsLCBjb2wgPSAiZ3JheTQ1IiwgbHR5ID0gMywgYWRkID0gVFJVRSkKcGxvdChyb2Nfb2JqVGVzTUFSU0d2YWwsIGNvbCA9ICJncmF5OTkiLCBsdHkgPSAzLCBhZGQgPSBUUlVFKQpgYGAKCmBgYHtyfQptb2RlbD1jKCdMUicsJ0dCTScsJ1NWTScsJ1JGJywnTm5ldCcsJ0tubicsJ0xHTUFSUycpCkFVQyA9IGMoQVVDX29ialRlc3RMR3ZhbCwgQVVDX29ialRlc3RHYm1HcmlkdmFsLCBBVUNfb2JqVGVzdFN2bUdyaWR2YWwsIEFVQ19vYmpUZXN0UmZ2YWwsIEFVQ19vYmpUZXN0bm5ldEdyaWR2YWwsIEFVQ19vYmpUZXN0a25uR3JpZHZhbCxBVUNfb2JqVGVzdE1BUlN2YWwpClZhbFJlc3VsdHMgPSBkYXRhLmZyYW1lKG1vZGVsLCBBVUMpCgpteWZ0IDwtIHJlZ3VsYXJ0YWJsZShWYWxSZXN1bHRzKQpteWZ0IDwtIHRoZW1lX3ZhbmlsbGEobXlmdCkKbXlmdCA8LSBhdXRvZml0KG15ZnQpCmRvYyA8LSByZWFkX2RvY3goKQpkb2MgPC0gYm9keV9hZGRfZmxleHRhYmxlKGRvYywgdmFsdWUgPSBteWZ0KQojcHJpbnQoZG9jLCB0YXJnZXQgPSBwYXN0ZTAoImV4dEFVQ19zYW1wbGluZyIsIHNhbXBsaW5nLCAiZm9ybXVsYV8iLGFzLmNoYXJhY3Rlcihmb3JtdWxhLm1vZGVsKVszXSwiLmRvY3giKSkKcHJpbnQoZG9jKSAjIyMg5aSW6YOo44OV44Kh44Kk44Or44Gn44Gv44Gq44GP5LiL44Gr5Ye65YqbCmBgYAoKYGBge3J9CiN1c2UgcHJlZGljdGlvbi1yZWNhbGwgY3VydmUgdG8gdmFsaWRhdGUgdGhlIG1vZGVscyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiNjYWxjdWxhdGUgdGhlIEFVUFJDIGZvciB0aGUgdmFsaWRhdGlvbiBkYXRhc2V0CnByUkZ2YWwgPSBwci5jdXJ2ZSgxLWRhdGFzZXRfdmFsJHByb2JzVGVzdFJmVmFsLlgyLGRhdGFzZXRfdmFsJHByb2JzVGVzdFJmVmFsLlgyLCBjdXJ2ZSA9IFRSVUUpCnByTEd2YWwgPSAgcHIuY3VydmUoMS1kYXRhc2V0X3ZhbCRwcm9ic1Rlc3RsZ1ZhbC5YMixkYXRhc2V0X3ZhbCRwcm9ic1Rlc3RsZ1ZhbC5YMiwgY3VydmUgPSBUUlVFKSAKcHJTVk12YWwgPSBwci5jdXJ2ZSgxLWRhdGFzZXRfdmFsJHByb2JzVGVzdFN2bUdyaWRWYWwuWDIsZGF0YXNldF92YWwkcHJvYnNUZXN0U3ZtR3JpZFZhbC5YMiwgY3VydmUgPSBUUlVFKSAKcHJHQk12YWwgPSBwci5jdXJ2ZSgxLWRhdGFzZXRfdmFsJHByb2JzVGVzdEdibUdyaWRWYWwuWDIsZGF0YXNldF92YWwkcHJvYnNUZXN0R2JtR3JpZFZhbC5YMiwgY3VydmUgPSBUUlVFKSAKcHJOTnZhbCA9IHByLmN1cnZlKDEtZGF0YXNldF92YWwkcHJvYnNUZXN0bm5ldEdyaWRWYWwuWDIsZGF0YXNldF92YWwkcHJvYnNUZXN0bm5ldEdyaWRWYWwuWDIsIGN1cnZlID0gVFJVRSkKcHJLTk52YWwgPSBwci5jdXJ2ZSgxLWRhdGFzZXRfdmFsJHByb2JzVGVzdGtubkdyaWRWYWwuWDIsZGF0YXNldF92YWwkcHJvYnNUZXN0a25uR3JpZFZhbC5YMiwgY3VydmUgPSBUUlVFKQpwck1BUlN2YWwgPSBwci5jdXJ2ZSgxLWRhdGFzZXRfdmFsJHByb2JzVGVzdG1hcnNWYWwsZGF0YXNldF92YWwkcHJvYnNUZXN0bWFyc1ZhbC5YMiwgY3VydmUgPSBUUlVFKQojcmV0dXJuIHRoZSBBVVBSQwpwclJGdmFsCnByTEd2YWwKcHJTVk12YWwKcHJHQk12YWwKcHJOTnZhbApwcktOTnZhbApwck1BUlN2YWwKYGBgCgpgYGB7cn0KbW9kZWw9YygnTEcnLCdHQk0nLCdTVk0nLCdSRicsJ05uZXQnLCdLbm4nLCdMR01BUlMnKQpwciA9IGMocHJMR3ZhbCRhdWMuaW50ZWdyYWwsIHByR0JNdmFsJGF1Yy5pbnRlZ3JhbCwgcHJTVk12YWwkYXVjLmludGVncmFsLCBwclJGdmFsJGF1Yy5pbnRlZ3JhbCwgcHJOTnZhbCRhdWMuaW50ZWdyYWwsIHByS05OdmFsJGF1Yy5pbnRlZ3JhbCxwck1BUlN2YWwkYXVjLmludGVncmFsKQpWYWxSZXN1bHRzID0gZGF0YS5mcmFtZShtb2RlbCwgcHIpCgpteWZ0IDwtIHJlZ3VsYXJ0YWJsZShWYWxSZXN1bHRzKQpteWZ0IDwtIHRoZW1lX3ZhbmlsbGEobXlmdCkKbXlmdCA8LSBhdXRvZml0KG15ZnQpCmRvYyA8LSByZWFkX2RvY3goKQpkb2MgPC0gYm9keV9hZGRfZmxleHRhYmxlKGRvYywgdmFsdWUgPSBteWZ0KQojcHJpbnQoZG9jLCB0YXJnZXQgPSBwYXN0ZTAoImV4dHByX3NhbXBsaW5nIiwgc2FtcGxpbmcsICJmb3JtdWxhXyIsYXMuY2hhcmFjdGVyKGZvcm11bGEubW9kZWwpWzNdLCIuZG9jeCIpKQpwcmludChkb2MpCmBgYAoKYGBge3J9CiMgcGxvdCBQUiBjdXJ2ZSBmb3IgdGhlIHRlc3QgY3VydmUgaW4gcmVkLCB3aXRob3V0IGxlZ2VuZAojIyMgcGRmKHBhc3RlMCgicHJjdXJ2ZSIsIHNhbXBsaW5nLCAiZm9ybXVsYV8iLGFzLmNoYXJhY3Rlcihmb3JtdWxhLm1vZGVsKVszXSwiLnBkZiIpKQpwbG90KHByUkZ2YWwsIGNvbG9yID0gImdyYXk4NSIsYXVjLm1haW49RkFMU0UsIG1haW4gPSAiIikgCnBsb3QoIHByTEd2YWwsIGNvbG9yID0gImdyYXk0NSIsIGFkZCA9IFRSVUUpCnBsb3QoIHByU1ZNdmFsLCBjb2xvciA9ICJibGFjayIsIGFkZCA9IFRSVUUpCnBsb3QoIHByR0JNdmFsLCBjb2xvciA9ICJncmF5ODUiLCBsdHkgPSAzLCBhZGQgPSBUUlVFKQpwbG90KCBwck5OdmFsLCBjb2xvciA9ICJibGFjayIsIGx0eSA9IDMsIGFkZCA9IFRSVUUpCnBsb3QoIHByS05OdmFsLCBjb2xvciA9ICJncmF5NDUiLCBsdHkgPSAzLGFkZCA9IFRSVUUpCnBsb3QocHJNQVJTdmFsLCBjb2wgPSAiZ3JheTk5IiwgbHR5ID0gMywgYWRkID0gVFJVRSkKIyMjIGRldi5vZmYoKQpgYGAKCmBgYHtyfQojIyMjIyMjcGxvdCB0aGUgY2FsaWJyYXRpb24gcGxvdHMgd2l0aCBsb2VzcyBzbW9vdGhlciAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojZm9yIGxvZ2lzdGljIHJlZ3Jlc3Npb24KI2NyZWF0ZSAxMCByaXNrIGdyb3VwcwpkYXRhc2V0X3ZhbCAlPiUgbXV0YXRlKHF1aW50aWxlPW50aWxlKGRhdGFzZXRfdmFsJHByb2JzVGVzdGxnVmFsLlgyLDEwKSkgLT4gZGF0YXNldF92YWxfMTAKWW91cm91dGNvbWV2YXJpYWJsZV9udW0gPC0gcGFzdGUoWW91cm91dGNvbWV2YXJpYWJsZSwibnVtIikKZGF0YXNldF92YWxfMTBbYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMFssWW91cm91dGNvbWV2YXJpYWJsZV0pPT0gMSxZb3Vyb3V0Y29tZXZhcmlhYmxlX251bV0gPC0gMApkYXRhc2V0X3ZhbF8xMFthcy5udW1lcmljKGRhdGFzZXRfdmFsXzEwWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSk9PSAyLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSA8LSAxCgojYXZlcmFnZSB0aGUgb2JzZXJ2ZWQgYW5kIGV4cGVjdGVkIHByb2JhYmlsaXRpZXMgb2YgcGF0aWVudHMgaW4gZWFjaCByaXNrIGdyb3VwIApvYnMgPSBhZ2dyZWdhdGUoYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMFssWW91cm91dGNvbWV2YXJpYWJsZV9udW1dKSwgbGlzdChkYXRhc2V0X3ZhbF8xMCRxdWludGlsZSksbWVhbikKZXhwdGQgPSBhZ2dyZWdhdGUoZGF0YXNldF92YWxfMTAkcHJvYnNUZXN0bGdWYWwuWDIsIGxpc3QoZGF0YXNldF92YWxfMTAkcXVpbnRpbGUpLG1lYW4pCm9ic24gPWFnZ3JlZ2F0ZShhcy5mb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlICwifiBxdWludGlsZSIpKSwgZGF0YXNldF92YWxfMTAsIGxlbmd0aCkKCiNDSXMgZm9yIHNjYXR0ZXIgcG9pbnRzCmxjaSA9IG9icyAtICgxLjk2KigoKG9icyooMS1vYnMpKS9vYnNuWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSleLjUpKQpsY2lbbGNpPDBdPC0wCgp1Y2kgPSBvYnMgKyAoMS45NiooKChvYnMqKDEtb2JzKSkvb2JzblssWW91cm91dGNvbWV2YXJpYWJsZV0pXi41KSkKdWNpW3VjaT4xXTwtMQoKTFJfQ2FsaV9QbG90ID0gZGF0YS5mcmFtZShleHB0ZCR4LG9icyR4LCB1Y2kkeCwgbGNpJHgpCgpjYWxMRyA8LSBnZ3Bsb3QoTFJfQ2FsaV9QbG90LCBhZXMoeD0gZXhwdGQkeCwgeT1vYnMkeCkpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArIAogIGdlb21fc21vb3RoKG1ldGhvZD1sbSwgc2U9RkFMU0UsIGNvbCA9ICJibGFjayIsIGx3ZCA9IDEpICsKICBnZW9tX2FibGluZShzbG9wZT0xLCBpbnRlcmNlcHQ9MCwgbHR5PTIgKSArCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiRXhwZWN0ZWQiLCBicmVha3MgPSBjKDAuMCwgMC4yLDAuNCwwLjYsMC44LDEuMCksbGltaXRzID0gYygwLDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiT2JzZXJ2ZWQiLCBicmVha3MgPSBjKDAuMCwgMC4yLDAuNCwwLjYsMC44LDEuMCksbGltaXRzID0gYygwLDEpKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1sY2kkeCwgeW1heD11Y2kkeCksIHdpZHRoPTAuMDIpICsKICB0aGVtZV9idygpCmNhbExHCmBgYAoKCmBgYHtyfQojZm9yIFNWTQojY3JlYXRlIDEwIHJpc2sgZ3JvdXBzCmRhdGFzZXRfdmFsICU+JSBtdXRhdGUocXVpbnRpbGU9bnRpbGUoZGF0YXNldF92YWwkcHJvYnNUZXN0U3ZtR3JpZFZhbC5YMiwxMCkpIC0+IGRhdGFzZXRfdmFsXzEwX1NWTQpkYXRhc2V0X3ZhbF8xMF9TVk1bYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9TVk1bLFlvdXJvdXRjb21ldmFyaWFibGVdKT09IDEsWW91cm91dGNvbWV2YXJpYWJsZV9udW1dIDwtIDAKZGF0YXNldF92YWxfMTBfU1ZNW2FzLm51bWVyaWMoZGF0YXNldF92YWxfMTBfU1ZNWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSk9PSAyLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSA8LSAxCiNhdmVyYWdlIHRoZSBvYnNlcnZlZCBhbmQgZXhwZWN0ZWQgcHJvYmFiaWxpdGllcyBvZiBwYXRpZW50cyBpbiBlYWNoIHJpc2sgZ3JvdXAgCm9ic19TVk0gPSBhZ2dyZWdhdGUoYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9TVk1bLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSksIGxpc3QoZGF0YXNldF92YWxfMTBfU1ZNJHF1aW50aWxlKSxtZWFuKQpleHB0ZF9TVk0gPSBhZ2dyZWdhdGUoZGF0YXNldF92YWxfMTBfU1ZNJHByb2JzVGVzdFN2bUdyaWRWYWwuWDIsIGxpc3QoZGF0YXNldF92YWxfMTBfU1ZNJHF1aW50aWxlKSxtZWFuKQpvYnNuX1NWTSA9YWdncmVnYXRlKGFzLmZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUgLCJ+IHF1aW50aWxlIikpLCBkYXRhc2V0X3ZhbF8xMF9TVk0sIGxlbmd0aCkKCgojQ0lzIGZvciBzY2F0dGVyIHBvaW50cwpsY2lfU1ZNID0gb2JzX1NWTS0gKDEuOTYqKCgob2JzX1NWTSooMS1vYnNfU1ZNKSkvb2Jzbl9TVk1bLFlvdXJvdXRjb21ldmFyaWFibGVdKV4uNSkpCmxjaV9TVk1bbGNpX1NWTTwwXTwtMAoKdWNpX1NWTSA9IG9ic19TVk0gKyAoMS45NiooKChvYnNfU1ZNKigxLW9ic19TVk0pKS9vYnNuX1NWTVssWW91cm91dGNvbWV2YXJpYWJsZV0pXi41KSkKdWNpX1NWTVt1Y2lfU1ZNPjFdPC0xClNWTV9DYWxpX1Bsb3QgPSBkYXRhLmZyYW1lKGV4cHRkX1NWTSR4LG9ic19TVk0keCwgdWNpX1NWTSR4LCBsY2lfU1ZNJHgpCgpjYWxTVk0gPC0gZ2dwbG90KFNWTV9DYWxpX1Bsb3QsIGFlcyh4PSBleHB0ZF9TVk0keCwgeT1vYnNfU1ZNJHgpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKyAKICBnZW9tX3Ntb290aChtZXRob2Q9bG0sIHNlPUZBTFNFLCBjb2wgPSAiYmxhY2siLCBsd2QgPSAxKSArCiAgZ2VvbV9hYmxpbmUoc2xvcGU9MSwgaW50ZXJjZXB0PTAsIGx0eT0yICkgKwogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkV4cGVjdGVkIiwgYnJlYWtzID0gYygwLjAsIDAuMiwwLjQsMC42LDAuOCwxLjApLGxpbWl0cyA9IGMoMCwxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIk9ic2VydmVkIiwgYnJlYWtzID0gYygwLjAsIDAuMiwwLjQsMC42LDAuOCwxLjApLGxpbWl0cyA9IGMoMCwxKSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49bGNpX1NWTSR4LCB5bWF4PXVjaV9TVk0keCksIHdpZHRoPTAuMDIpICsKICB0aGVtZV9idygpCmNhbFNWTQpgYGAKCmBgYHtyfQojZm9yIFJhbmRvbSBGb3Jlc3QgICAgCiNjcmVhdGUgMTAgcmlzayBncm91cHMKZGF0YXNldF92YWwgJT4lIG11dGF0ZShxdWludGlsZT1udGlsZShkYXRhc2V0X3ZhbCRwcm9ic1Rlc3RSZlZhbC5YMiwxMCkpIC0+IGRhdGFzZXRfdmFsXzEwX1JGCmRhdGFzZXRfdmFsXzEwX1JGW2FzLm51bWVyaWMoZGF0YXNldF92YWxfMTBfUkZbLFlvdXJvdXRjb21ldmFyaWFibGVdKT09IDEsWW91cm91dGNvbWV2YXJpYWJsZV9udW1dIDwtIDAKZGF0YXNldF92YWxfMTBfUkZbYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9SRlssWW91cm91dGNvbWV2YXJpYWJsZV0pPT0gMixZb3Vyb3V0Y29tZXZhcmlhYmxlX251bV0gPC0gMQojYXZlcmFnZSB0aGUgb2JzZXJ2ZWQgYW5kIGV4cGVjdGVkIHByb2JhYmlsaXRpZXMgb2YgcGF0aWVudHMgaW4gZWFjaCByaXNrIGdyb3VwIApvYnNfUkYgPSBhZ2dyZWdhdGUoYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9SRlssWW91cm91dGNvbWV2YXJpYWJsZV9udW1dKSwgbGlzdChkYXRhc2V0X3ZhbF8xMF9SRiRxdWludGlsZSksbWVhbikKZXhwdGRfUkYgPSBhZ2dyZWdhdGUoZGF0YXNldF92YWxfMTBfUkYkcHJvYnNUZXN0UmZWYWwuWDIsIGxpc3QoZGF0YXNldF92YWxfMTBfUkYkcXVpbnRpbGUpLG1lYW4pCm9ic25fUkYgPWFnZ3JlZ2F0ZShhcy5mb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlICwifiBxdWludGlsZSIpKSwgZGF0YXNldF92YWxfMTBfUkYsIGxlbmd0aCkKCgojQ0lzIGZvciBzY2F0dGVyIHBvaW50cwpsY2lfUkYgPSBvYnNfUkYtICgxLjk2KigoKG9ic19SRiooMS1vYnNfUkYpKS9vYnNuX1JGWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSleLjUpKQpsY2lfUkZbbGNpX1JGPDBdPC0wCgp1Y2lfUkYgPSBvYnNfUkYgKyAoMS45NiooKChvYnNfUkYqKDEtb2JzX1JGKSkvb2Jzbl9SRlssWW91cm91dGNvbWV2YXJpYWJsZV0pXi41KSkKdWNpX1JGW3VjaV9SRj4xXTwtMQpSRl9DYWxpX1Bsb3QgPSBkYXRhLmZyYW1lKGV4cHRkX1JGJHgsb2JzX1JGJHgsIHVjaV9SRiR4LCBsY2lfUkYkeCkKCmNhbFJGIDwtIGdncGxvdChSRl9DYWxpX1Bsb3QsIGFlcyh4PSBleHB0ZF9SRiR4LCB5PW9ic19SRiR4KSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsgCiAgZ2VvbV9zbW9vdGgobWV0aG9kPWxtLCBzZT1GQUxTRSwgY29sID0gImJsYWNrIiwgbHdkID0gMSkgKwogIGdlb21fYWJsaW5lKHNsb3BlPTEsIGludGVyY2VwdD0wLCBsdHk9MiApICsKICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJFeHBlY3RlZCIsIGJyZWFrcyA9IGMoMC4wLCAwLjIsMC40LDAuNiwwLjgsMS4wKSxsaW1pdHMgPSBjKDAsMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJPYnNlcnZlZCIsIGJyZWFrcyA9IGMoMC4wLCAwLjIsMC40LDAuNiwwLjgsMS4wKSxsaW1pdHMgPSBjKDAsMSkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPWxjaV9SRiR4LCB5bWF4PXVjaV9SRiR4KSwgd2lkdGg9MC4wMikgKwogIHRoZW1lX2J3KCkKY2FsUkYKYGBgCgoKCiNmb3IgR0JNICAgCiNjcmVhdGUgMTAgcmlzayBncm91cHMKZGF0YXNldF92YWwgJT4lIG11dGF0ZShxdWludGlsZT1udGlsZShkYXRhc2V0X3ZhbCRwcm9ic1Rlc3RHYm1HcmlkVmFsLlgyLDEwKSkgLT4gZGF0YXNldF92YWxfMTBfR0JNCmRhdGFzZXRfdmFsXzEwX0dCTVthcy5udW1lcmljKGRhdGFzZXRfdmFsXzEwX0dCTVssWW91cm91dGNvbWV2YXJpYWJsZV0pPT0gMSxZb3Vyb3V0Y29tZXZhcmlhYmxlX251bV0gPC0gMApkYXRhc2V0X3ZhbF8xMF9HQk1bYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9HQk1bLFlvdXJvdXRjb21ldmFyaWFibGVdKT09IDIsWW91cm91dGNvbWV2YXJpYWJsZV9udW1dIDwtIDEKI2F2ZXJhZ2UgdGhlIG9ic2VydmVkIGFuZCBleHBlY3RlZCBwcm9iYWJpbGl0aWVzIG9mIHBhdGllbnRzIGluIGVhY2ggcmlzayBncm91cCAKb2JzX0dCTSA9IGFnZ3JlZ2F0ZShhcy5udW1lcmljKGRhdGFzZXRfdmFsXzEwX0dCTVssWW91cm91dGNvbWV2YXJpYWJsZV9udW1dKSwgbGlzdChkYXRhc2V0X3ZhbF8xMF9HQk0kcXVpbnRpbGUpLG1lYW4pCmV4cHRkX0dCTSA9IGFnZ3JlZ2F0ZShkYXRhc2V0X3ZhbF8xMF9HQk0kcHJvYnNUZXN0R2JtR3JpZFZhbC5YMiwgbGlzdChkYXRhc2V0X3ZhbF8xMF9HQk0kcXVpbnRpbGUpLG1lYW4pCm9ic25fR0JNID1hZ2dyZWdhdGUoYXMuZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSAsIn4gcXVpbnRpbGUiKSksIGRhdGFzZXRfdmFsXzEwX0dCTSwgbGVuZ3RoKQoKCiNDSXMgZm9yIHNjYXR0ZXIgcG9pbnRzCmxjaV9HQk0gPSBvYnNfR0JNLSAoMS45NiooKChvYnNfR0JNKigxLW9ic19HQk0pKS9vYnNuX0dCTVssWW91cm91dGNvbWV2YXJpYWJsZV0pXi41KSkKbGNpX0dCTVtsY2lfR0JNPDBdPC0wCgp1Y2lfR0JNID0gb2JzX0dCTSArICgxLjk2KigoKG9ic19HQk0qKDEtb2JzX0dCTSkpL29ic25fR0JNWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSleLjUpKQp1Y2lfR0JNW3VjaV9HQk0+MV08LTEKR0JNX0NhbGlfUGxvdCA9IGRhdGEuZnJhbWUoZXhwdGRfR0JNJHgsb2JzX0dCTSR4LCB1Y2lfR0JNJHgsIGxjaV9HQk0keCkKCmNhbEdCTSA8LWdncGxvdChHQk1fQ2FsaV9QbG90LCBhZXMoeD0gZXhwdGRfR0JNJHgsIHk9b2JzX0dCTSR4KSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsgCiAgZ2VvbV9zbW9vdGgobWV0aG9kPWxtLCBzZT1GQUxTRSwgY29sID0gImJsYWNrIiwgbHdkID0gMSkgKwogIGdlb21fYWJsaW5lKHNsb3BlPTEsIGludGVyY2VwdD0wLCBsdHk9MiApICsKICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJFeHBlY3RlZCIsIGJyZWFrcyA9IGMoMC4wLCAwLjIsMC40LDAuNiwwLjgsMS4wKSxsaW1pdHMgPSBjKDAsMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJPYnNlcnZlZCIsIGJyZWFrcyA9IGMoMC4wLCAwLjIsMC40LDAuNiwwLjgsMS4wKSxsaW1pdHMgPSBjKDAsMSkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPWxjaV9HQk0keCwgeW1heD11Y2lfR0JNJHgpLCB3aWR0aD0wLjAyKSArCiAgdGhlbWVfYncoKQpjYWxHQk0KI2ZvciBLTk4gIAojY3JlYXRlIDEwIHJpc2sgZ3JvdXBzCmRhdGFzZXRfdmFsICU+JSBtdXRhdGUocXVpbnRpbGU9bnRpbGUoZGF0YXNldF92YWwkcHJvYnNUZXN0a25uR3JpZFZhbC5YMiwxMCkpIC0+IGRhdGFzZXRfdmFsXzEwX0tOTgpkYXRhc2V0X3ZhbF8xMF9LTk5bYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9LTk5bLFlvdXJvdXRjb21ldmFyaWFibGVdKT09IDEsWW91cm91dGNvbWV2YXJpYWJsZV9udW1dIDwtIDAKZGF0YXNldF92YWxfMTBfS05OW2FzLm51bWVyaWMoZGF0YXNldF92YWxfMTBfS05OWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSk9PSAyLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSA8LSAxCiNhdmVyYWdlIHRoZSBvYnNlcnZlZCBhbmQgZXhwZWN0ZWQgcHJvYmFiaWxpdGllcyBvZiBwYXRpZW50cyBpbiBlYWNoIHJpc2sgZ3JvdXAgCm9ic19LTk4gPSBhZ2dyZWdhdGUoYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9LTk5bLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSksIGxpc3QoZGF0YXNldF92YWxfMTBfS05OJHF1aW50aWxlKSxtZWFuKQpleHB0ZF9LTk4gPSBhZ2dyZWdhdGUoZGF0YXNldF92YWxfMTBfS05OJHByb2JzVGVzdGtubkdyaWRWYWwuWDIsIGxpc3QoZGF0YXNldF92YWxfMTBfS05OJHF1aW50aWxlKSxtZWFuKQpvYnNuX0tOTiA9YWdncmVnYXRlKGFzLmZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUgLCJ+IHF1aW50aWxlIikpLCBkYXRhc2V0X3ZhbF8xMF9LTk4sIGxlbmd0aCkKCgojQ0lzIGZvciBzY2F0dGVyIHBvaW50cwpsY2lfS05OID0gb2JzX0tOTi0gKDEuOTYqKCgob2JzX0tOTiooMS1vYnNfS05OKSkvb2Jzbl9LTk5bLFlvdXJvdXRjb21ldmFyaWFibGVdKV4uNSkpCmxjaV9LTk5bbGNpX0tOTjwwXTwtMAoKdWNpX0tOTiA9IG9ic19LTk4gKyAoMS45NiooKChvYnNfS05OKigxLW9ic19LTk4pKS9vYnNuX0tOTlssWW91cm91dGNvbWV2YXJpYWJsZV0pXi41KSkKdWNpX0tOTlt1Y2lfS05OPjFdPC0xCktOTl9DYWxpX1Bsb3QgPSBkYXRhLmZyYW1lKGV4cHRkX0tOTiR4LG9ic19LTk4keCwgdWNpX0tOTiR4LCBsY2lfS05OJHgpCgpjYWxLTk4gPC0gZ2dwbG90KEtOTl9DYWxpX1Bsb3QsIGFlcyh4PSBleHB0ZF9LTk4keCwgeT1vYnNfS05OJHgpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKyAKICBnZW9tX3Ntb290aChtZXRob2Q9bG0sIHNlPUZBTFNFLCBjb2wgPSAiYmxhY2siLCBsd2QgPSAxKSArCiAgZ2VvbV9hYmxpbmUoc2xvcGU9MSwgaW50ZXJjZXB0PTAsIGx0eT0yICkgKwogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkV4cGVjdGVkIiwgYnJlYWtzID0gYygwLjAsIDAuMiwwLjQsMC42LDAuOCwxLjApLGxpbWl0cyA9IGMoMCwxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIk9ic2VydmVkIiwgYnJlYWtzID0gYygwLjAsIDAuMiwwLjQsMC42LDAuOCwxLjApLGxpbWl0cyA9IGMoMCwxKSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49bGNpX0tOTiR4LCB5bWF4PXVjaV9LTk4keCksIHdpZHRoPTAuMDIpICsKICB0aGVtZV9idygpCmNhbEtOTgojZm9yIE5OICAKI2NyZWF0ZSAxMCByaXNrIGdyb3VwcwpkYXRhc2V0X3ZhbCAlPiUgbXV0YXRlKHF1aW50aWxlPW50aWxlKGRhdGFzZXRfdmFsJHByb2JzVGVzdG5uZXRHcmlkVmFsLlgyLDEwKSkgLT4gZGF0YXNldF92YWxfMTBfTk4KZGF0YXNldF92YWxfMTBfTk5bYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9OTlssWW91cm91dGNvbWV2YXJpYWJsZV0pPT0gMSxZb3Vyb3V0Y29tZXZhcmlhYmxlX251bV0gPC0gMApkYXRhc2V0X3ZhbF8xMF9OTlthcy5udW1lcmljKGRhdGFzZXRfdmFsXzEwX05OWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSk9PSAyLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSA8LSAxCiNhdmVyYWdlIHRoZSBvYnNlcnZlZCBhbmQgZXhwZWN0ZWQgcHJvYmFiaWxpdGllcyBvZiBwYXRpZW50cyBpbiBlYWNoIHJpc2sgZ3JvdXAgCm9ic19OTiA9IGFnZ3JlZ2F0ZShhcy5udW1lcmljKGRhdGFzZXRfdmFsXzEwX05OWyxZb3Vyb3V0Y29tZXZhcmlhYmxlX251bV0pLCBsaXN0KGRhdGFzZXRfdmFsXzEwX05OJHF1aW50aWxlKSxtZWFuKQpleHB0ZF9OTiA9IGFnZ3JlZ2F0ZShkYXRhc2V0X3ZhbF8xMF9OTiRwcm9ic1Rlc3RubmV0R3JpZFZhbC5YMiwgbGlzdChkYXRhc2V0X3ZhbF8xMF9OTiRxdWludGlsZSksbWVhbikKb2Jzbl9OTiA9YWdncmVnYXRlKGFzLmZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUgLCJ+IHF1aW50aWxlIikpLCBkYXRhc2V0X3ZhbF8xMF9OTiwgbGVuZ3RoKQoKCiNDSXMgZm9yIHNjYXR0ZXIgcG9pbnRzCmxjaV9OTiA9IG9ic19OTi0gKDEuOTYqKCgob2JzX05OKigxLW9ic19OTikpL29ic25fTk5bLFlvdXJvdXRjb21ldmFyaWFibGVdKV4uNSkpCmxjaV9OTltsY2lfTk48MF08LTAKCnVjaV9OTiA9IG9ic19OTiArICgxLjk2KigoKG9ic19OTiooMS1vYnNfTk4pKS9vYnNuX05OWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSleLjUpKQp1Y2lfTk5bdWNpX05OPjFdPC0xCk5OX0NhbGlfUGxvdCA9IGRhdGEuZnJhbWUoZXhwdGRfTk4keCxvYnNfTk4keCwgdWNpX05OJHgsIGxjaV9OTiR4KQoKY2FsTk4gPC0gZ2dwbG90KE5OX0NhbGlfUGxvdCwgYWVzKHg9IGV4cHRkX05OJHgsIHk9b2JzX05OJHgpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKyAKICBnZW9tX3Ntb290aChtZXRob2Q9bG0sIHNlPUZBTFNFLCBjb2wgPSAiYmxhY2siLCBsd2QgPSAxKSArCiAgZ2VvbV9hYmxpbmUoc2xvcGU9MSwgaW50ZXJjZXB0PTAsIGx0eT0yICkgKwogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkV4cGVjdGVkIiwgYnJlYWtzID0gYygwLjAsIDAuMiwwLjQsMC42LDAuOCwxLjApLGxpbWl0cyA9IGMoMCwxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIk9ic2VydmVkIiwgYnJlYWtzID0gYygwLjAsIDAuMiwwLjQsMC42LDAuOCwxLjApLGxpbWl0cyA9IGMoMCwxKSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49bGNpX05OJHgsIHltYXg9dWNpX05OJHgpLCB3aWR0aD0wLjAyKSArCiAgdGhlbWVfYncoKQpjYWxOTgoKI2ZvciBMR01BUlMKI2NyZWF0ZSAxMCByaXNrIGdyb3VwcwpkYXRhc2V0X3ZhbCAlPiUgbXV0YXRlKHF1aW50aWxlPW50aWxlKGRhdGFzZXRfdmFsJHByb2JzVGVzdG1hcnNWYWwuWDIsMTApKSAtPiBkYXRhc2V0X3ZhbF8xMF9NQVJTCmRhdGFzZXRfdmFsXzEwX01BUlNbYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9NQVJTWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSk9PSAxLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSA8LSAwCmRhdGFzZXRfdmFsXzEwX01BUlNbYXMubnVtZXJpYyhkYXRhc2V0X3ZhbF8xMF9NQVJTWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSk9PSAyLFlvdXJvdXRjb21ldmFyaWFibGVfbnVtXSA8LSAxCiNhdmVyYWdlIHRoZSBvYnNlcnZlZCBhbmQgZXhwZWN0ZWQgcHJvYmFiaWxpdGllcyBvZiBwYXRpZW50cyBpbiBlYWNoIHJpc2sgZ3JvdXAgCm9ic19NQVJTID0gYWdncmVnYXRlKGFzLm51bWVyaWMoZGF0YXNldF92YWxfMTBfTUFSU1ssWW91cm91dGNvbWV2YXJpYWJsZV9udW1dKSwgbGlzdChkYXRhc2V0X3ZhbF8xMF9NQVJTJHF1aW50aWxlKSxtZWFuKQpleHB0ZF9NQVJTID0gYWdncmVnYXRlKGRhdGFzZXRfdmFsXzEwX01BUlMkcHJvYnNUZXN0bWFyc1ZhbC5YMiwgbGlzdChkYXRhc2V0X3ZhbF8xMF9NQVJTJHF1aW50aWxlKSxtZWFuKQpvYnNuX01BUlMgPWFnZ3JlZ2F0ZShhcy5mb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlICwifiBxdWludGlsZSIpKSwgZGF0YXNldF92YWxfMTBfTUFSUywgbGVuZ3RoKQoKCiNDSXMgZm9yIHNjYXR0ZXIgcG9pbnRzCmxjaV9NQVJTID0gb2JzX01BUlMtICgxLjk2KigoKG9ic19NQVJTKigxLW9ic19NQVJTKSkvb2Jzbl9NQVJTWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSleLjUpKQpsY2lfTUFSU1tsY2lfTUFSUzwwXTwtMAoKdWNpX01BUlMgPSBvYnNfTUFSUyArICgxLjk2KigoKG9ic19NQVJTKigxLW9ic19NQVJTKSkvb2Jzbl9NQVJTWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSleLjUpKQp1Y2lfTUFSU1t1Y2lfTUFSUz4xXTwtMQpNQVJTX0NhbGlfUGxvdCA9IGRhdGEuZnJhbWUoZXhwdGRfTUFSUyR4LG9ic19NQVJTJHgsIHVjaV9NQVJTJHgsIGxjaV9NQVJTJHgpCgpjYWxNQVJTIDwtIGdncGxvdChNQVJTX0NhbGlfUGxvdCwgYWVzKHg9IGV4cHRkX01BUlMkeCwgeT1vYnNfTUFSUyR4KSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsgCiAgZ2VvbV9zbW9vdGgobWV0aG9kPWxtLCBzZT1GQUxTRSwgY29sID0gImJsYWNrIiwgbHdkID0gMSkgKwogIGdlb21fYWJsaW5lKHNsb3BlPTEsIGludGVyY2VwdD0wLCBsdHk9MiApICsKICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJFeHBlY3RlZCIsIGJyZWFrcyA9IGMoMC4wLCAwLjIsMC40LDAuNiwwLjgsMS4wKSxsaW1pdHMgPSBjKDAsMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJPYnNlcnZlZCIsIGJyZWFrcyA9IGMoMC4wLCAwLjIsMC40LDAuNiwwLjgsMS4wKSxsaW1pdHMgPSBjKDAsMSkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPWxjaV9NQVJTJHgsIHltYXg9dWNpX01BUlMkeCksIHdpZHRoPTAuMDIpICsKICB0aGVtZV9idygpCmNhbE1BUlMKCgpwbG90X2dyaWQoY2FsR0JNLGNhbEtOTixjYWxMRyxjYWxNQVJTLGNhbE5OLGNhbFJGLGNhbFNWTSwgbGFiZWxzID0gYygnQScsICdCJywnQycsJ0QnLCdFJywnRicsJ0cnKSwgbGFiZWxfc2l6ZSA9IDEyKQpnZ3NhdmUocGFzdGUwKCJjYWxpYnJhdGlvbl9zYW1wbGluZyIsIHNhbXBsaW5nLCAiZm9ybXVsYV8iLGFzLmNoYXJhY3Rlcihmb3JtdWxhLm1vZGVsKVszXSwiLnBkZiIpKQojY2FsY2x1YXRlIENhbGlicmF0aW9uIHNsb3BlIGZvciBlYWNoIG1vZGVsCgpkYXRhc2V0X3ZhbDIgPC0gZGF0YXNldF92YWwKZGF0YXNldF92YWwyWyxZb3Vyb3V0Y29tZXZhcmlhYmxlXSA8LSBhcy5udW1lcmljKGRhdGFzZXRfdmFsMlssWW91cm91dGNvbWV2YXJpYWJsZV0pLTEKCmNhbHNsb3BlR0JNIDwtIGdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiBwcm9ic1Rlc3RHYm1HcmlkVmFsLlgyIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKSRjb2VmZmljaWVudHMKY2Fsc2xvcGVTVk0gPC1nbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gcHJvYnNUZXN0U3ZtR3JpZFZhbC5YMiIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikkY29lZmZpY2llbnRzCmNhbHNsb3BlS05OIDwtZ2xtKGZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUsIiB+IHByb2JzVGVzdGtubkdyaWRWYWwuWDIiKSksIGZhbWlseT1nYXVzc2lhbiwgZGF0YT1kYXRhc2V0X3ZhbDIpJGNvZWZmaWNpZW50cwpjYWxzbG9wZU5OIDwtZ2xtKGZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUsIiB+IHByb2JzVGVzdG5uZXRHcmlkVmFsLlgyIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKSRjb2VmZmljaWVudHMKY2Fsc2xvcGVSRiA8LWdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiBwcm9ic1Rlc3RSZlZhbC5YMiIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikkY29lZmZpY2llbnRzCmNhbHNsb3BlTEcgPC1nbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gcHJvYnNUZXN0bGdWYWwuWDIiKSksIGZhbWlseT1nYXVzc2lhbiwgZGF0YT1kYXRhc2V0X3ZhbDIpJGNvZWZmaWNpZW50cwpjYWxzbG9wZU1BUlMgPC1nbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gcHJvYnNUZXN0bWFyc1ZhbC5YMiIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikkY29lZmZpY2llbnRzCgojY2FsY2x1YXRlIENhbGlicmF0aW9uIGluIHRoZSBsYXJnZSBmb3IgZWFjaCBtb2RlbCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiNwcmVkaWN0ZWQgcmlza3MgYXJlIHVuZGVyc3RhdGVkIGlmIF9iW19jb25zXSA+IDAgb3Igb3ZlcnN0YXRlZCBpZiBfYltfY29uc10gPCAwCmNhbGxhcmdlR0JNIDwtIHN1bW1hcnkoZ2xtKGZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUsIiB+ICBvZmZzZXQocHJvYnNUZXN0R2JtR3JpZFZhbC5YMikiKSksIGZhbWlseT1nYXVzc2lhbiwgZGF0YT1kYXRhc2V0X3ZhbDIpKSRjb2VmZmljaWVudHNbMV0KY2FsbGFyZ2VTVk0gPC0gc3VtbWFyeShnbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gIG9mZnNldChwcm9ic1Rlc3RTdm1HcmlkVmFsLlgyKSIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikpJGNvZWZmaWNpZW50c1sxXQpjYWxsYXJnZUtOTiA8LSBzdW1tYXJ5KGdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiAgb2Zmc2V0KHByb2JzVGVzdGtubkdyaWRWYWwuWDIpIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKSkkY29lZmZpY2llbnRzWzFdCmNhbGxhcmdlTk4gPC0gc3VtbWFyeShnbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gIG9mZnNldChwcm9ic1Rlc3RubmV0R3JpZFZhbC5YMikiKSksIGZhbWlseT1nYXVzc2lhbiwgZGF0YT1kYXRhc2V0X3ZhbDIpKSRjb2VmZmljaWVudHNbMV0KY2FsbGFyZ2VSRiA8LSBzdW1tYXJ5KGdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiAgb2Zmc2V0KHByb2JzVGVzdFJmVmFsLlgyKSIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikpJGNvZWZmaWNpZW50c1sxXQpjYWxsYXJnZUxHIDwtIHN1bW1hcnkoZ2xtKGZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUsIiB+ICBvZmZzZXQocHJvYnNUZXN0bGdWYWwuWDIpIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKSkkY29lZmZpY2llbnRzWzFdCmNhbGxhcmdlTUFSUyA8LSBzdW1tYXJ5KGdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiAgb2Zmc2V0KHByb2JzVGVzdG1hcnNWYWwuWDIpIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKSkkY29lZmZpY2llbnRzWzFdCgojY2FsY2x1YXRlIG92ZXJhbGwgbWlzQ2FsaWJyYXRpb24gZm9yIGVhY2ggbW9kZWwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiN0aGUgc2xvcGUgY29lZmZpY2llbnQgYmV0YSBvZiB0aGUgbGluZWFyIHByZWRpY3RvcnMgcmVmbGVjdHMgdGhlIGRldmlhdGlvbnMgZnJvbSB0aGUgaWRlYWwgc2xvcGUgb2YgMS4gCiNJZiBwIGlzIHNpZ25pZmljYW50IHRoZW4gdGhlcmUgaXMgZGV2aWF0aW9uIGZyb20gemVybwptYzEgPSBnbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gIHByb2JzVGVzdEdibUdyaWRWYWwuWDIrIG9mZnNldChwcm9ic1Rlc3RHYm1HcmlkVmFsLlgyKSIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikKbWMyID0gZ2xtKGZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUsIiB+ICBwcm9ic1Rlc3RTdm1HcmlkVmFsLlgyICsgb2Zmc2V0KHByb2JzVGVzdFN2bUdyaWRWYWwuWDIpIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKQptYzMgPSBnbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gIHByb2JzVGVzdGtubkdyaWRWYWwuWDIgKyBvZmZzZXQocHJvYnNUZXN0a25uR3JpZFZhbC5YMikiKSksIGZhbWlseT1nYXVzc2lhbiwgZGF0YT1kYXRhc2V0X3ZhbDIpCm1jNCA9IGdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiAgcHJvYnNUZXN0bm5ldEdyaWRWYWwuWDIgKyBvZmZzZXQocHJvYnNUZXN0bm5ldEdyaWRWYWwuWDIpIikpLCBmYW1pbHk9Z2F1c3NpYW4sIGRhdGE9ZGF0YXNldF92YWwyKQptYzUgPSBnbG0oZm9ybXVsYShwYXN0ZTAoWW91cm91dGNvbWV2YXJpYWJsZSwiIH4gIHByb2JzVGVzdFJmVmFsLlgyICsgb2Zmc2V0KHByb2JzVGVzdFJmVmFsLlgyKSIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikKbWM2ID0gZ2xtKGZvcm11bGEocGFzdGUwKFlvdXJvdXRjb21ldmFyaWFibGUsIiB+ICBwcm9ic1Rlc3RsZ1ZhbC5YMiArIG9mZnNldChwcm9ic1Rlc3RsZ1ZhbC5YMikiKSksIGZhbWlseT1nYXVzc2lhbiwgZGF0YT1kYXRhc2V0X3ZhbDIpCm1jNyA9IGdsbShmb3JtdWxhKHBhc3RlMChZb3Vyb3V0Y29tZXZhcmlhYmxlLCIgfiAgcHJvYnNUZXN0bWFyc1ZhbC5YMiArIG9mZnNldChwcm9ic1Rlc3RtYXJzVmFsLlgyKSIpKSwgZmFtaWx5PWdhdXNzaWFuLCBkYXRhPWRhdGFzZXRfdmFsMikKCmNhbHB2YWx1ZUdCTSA8LSBzdW1tYXJ5KG1jMSkkY29lZmZpY2llbnRzWzIsYyg0KV0KY2FscHZhbHVlU1ZNIDwtc3VtbWFyeShtYzIpJGNvZWZmaWNpZW50c1syLGMoNCldCmNhbHB2YWx1ZUtOTiA8LXN1bW1hcnkobWMzKSRjb2VmZmljaWVudHNbMixjKDQpXQpjYWxwdmFsdWVOTiA8LXN1bW1hcnkobWM0KSRjb2VmZmljaWVudHNbMixjKDQpXQpjYWxwdmFsdWVSRiA8LSBzdW1tYXJ5KG1jNSkkY29lZmZpY2llbnRzWzIsYyg0KV0KY2FscHZhbHVlTEcgPC0gc3VtbWFyeShtYzYpJGNvZWZmaWNpZW50c1syLGMoNCldCmNhbHB2YWx1ZU1BUlMgPC0gc3VtbWFyeShtYzcpJGNvZWZmaWNpZW50c1syLGMoNCldCgptb2RlbD1jKCdMUicsJ0dCTScsJ1NWTScsJ1JGJywnTm5ldCcsJ0tubicsJ0xHTUFSUycpCmludGVyY2VwdCA9IGMoY2Fsc2xvcGVMR1sxXSwgY2Fsc2xvcGVHQk1bMV0sIGNhbHNsb3BlU1ZNWzFdLCBjYWxzbG9wZVJGWzFdLCBjYWxzbG9wZU5OWzFdLCBjYWxzbG9wZUtOTlsxXSxjYWxzbG9wZU1BUlNbMV0pCnNsb3BlID0gYyhjYWxzbG9wZUxHWzJdLCBjYWxzbG9wZUdCTVsyXSwgY2Fsc2xvcGVTVk1bMl0sIGNhbHNsb3BlUkZbMl0sIGNhbHNsb3BlTk5bMl0sIGNhbHNsb3BlS05OWzJdLGNhbHNsb3BlTUFSU1syXSkKaW50aGVsYXJnZSA9IGMoY2FsbGFyZ2VMRywgY2FsbGFyZ2VHQk0sIGNhbGxhcmdlU1ZNLCBjYWxsYXJnZVJGLCBjYWxsYXJnZU5OLCBjYWxsYXJnZUtOTixjYWxsYXJnZU1BUlMpCnB2YWx1ZSA9IGMoY2FscHZhbHVlTEcsIGNhbHB2YWx1ZUdCTSwgY2FscHZhbHVlU1ZNLCBjYWxwdmFsdWVSRiwgY2FscHZhbHVlTk4sIGNhbHB2YWx1ZUtOTixjYWxwdmFsdWVNQVJTKQpWYWxSZXN1bHRzID0gZGF0YS5mcmFtZShtb2RlbCwgaW50ZXJjZXB0LCBzbG9wZSwgaW50aGVsYXJnZSwgcHZhbHVlKQoKbXlmdCA8LSByZWd1bGFydGFibGUoVmFsUmVzdWx0cykKbXlmdCA8LSB0aGVtZV92YW5pbGxhKG15ZnQpCm15ZnQgPC0gYXV0b2ZpdChteWZ0KQpkb2MgPC0gcmVhZF9kb2N4KCkKZG9jIDwtIGJvZHlfYWRkX2ZsZXh0YWJsZShkb2MsIHZhbHVlID0gbXlmdCkKcHJpbnQoZG9jLCB0YXJnZXQgPSBwYXN0ZTAoImNhbGlicmF0aW9ucGxvdF9zYW1wbGluZyIsIHNhbXBsaW5nLCAiZm9ybXVsYV8iLGFzLmNoYXJhY3Rlcihmb3JtdWxhLm1vZGVsKVszXSwiLmRvY3giKSkKCiNEZWNpc2lvbiBjdXJ2ZSBhbmFseXNpcwpkYXRhc2V0X3ZhbF8xMCRwcm9ic1Rlc3RsZ1ZhbC5YMSA9IDEtZGF0YXNldF92YWxfMTAkcHJvYnNUZXN0bGdWYWwuWDIgCgpkY2FMUiA9IGRjYShkYXRhID0gZGF0YXNldF92YWxfMTAsIG91dGNvbWUgPSAiaW5zdWxpblJlcXVpcmUgbnVtIiwgcHJlZGljdG9ycyA9IGMoInByb2JzVGVzdGxnVmFsLlgyIikpCmRjYVNWTSA9IGRjYShkYXRhID0gZGF0YXNldF92YWxfMTAsIG91dGNvbWUgPSAiaW5zdWxpblJlcXVpcmUgbnVtIiwgcHJlZGljdG9ycyA9IGMoInByb2JzVGVzdFN2bUdyaWRWYWwuWDIiKSkKZGNhUkYgPSBkY2EoZGF0YSA9IGRhdGFzZXRfdmFsXzEwLCBvdXRjb21lID0gImluc3VsaW5SZXF1aXJlIG51bSIsIHByZWRpY3RvcnMgPSBjKCJwcm9ic1Rlc3RSZlZhbC5YMiIpKQpkY2FHQk0gPSBkY2EoZGF0YSA9IGRhdGFzZXRfdmFsXzEwLCBvdXRjb21lID0gImluc3VsaW5SZXF1aXJlIG51bSIsIHByZWRpY3RvcnMgPSBjKCJwcm9ic1Rlc3RHYm1HcmlkVmFsLlgyIikpCmRjYUtOTiA9IGRjYShkYXRhID0gZGF0YXNldF92YWxfMTAsIG91dGNvbWUgPSAiaW5zdWxpblJlcXVpcmUgbnVtIiwgcHJlZGljdG9ycyA9IGMoInByb2JzVGVzdGtubkdyaWRWYWwuWDIiKSkKZGNhTk4gPSBkY2EoZGF0YSA9IGRhdGFzZXRfdmFsXzEwLCBvdXRjb21lID0gImluc3VsaW5SZXF1aXJlIG51bSIsIHByZWRpY3RvcnMgPSBjKCJwcm9ic1Rlc3RubmV0R3JpZFZhbC5YMiIpKQpkY2FNQVJTID0gZGNhKGRhdGEgPSBkYXRhc2V0X3ZhbF8xMCwgb3V0Y29tZSA9ICJpbnN1bGluUmVxdWlyZSBudW0iLCBwcmVkaWN0b3JzID0gYygicHJvYnNUZXN0bWFyc1ZhbC5YMiIpKQoKI2h0dHBzOi8vd3d3Lm1za2NjLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL25vZGUvNDUxMS9kb2N1bWVudHMvdjMtd29ya2VkLWV4YW1wbGUtb2YtZGVjaXNpb24tY3VydmUtYW5hbHlzaXMtdXNpbmctci5wZGYKCnRocmVzaG9sZCA8LSAgZGNhTFIkbmV0LmJlbmVmaXQkdGhyZXNob2xkKjEwMApwcm9idGVzdCA8LSBkY2FMUiRuZXQuYmVuZWZpdCRwcm9ic1Rlc3RsZ1ZhbC5YMgptb2RlbCA8LSByZXAoIkxSIixsZW5ndGgocHJvYnRlc3QpKQpkY2FkYXRhIDwtIGRhdGEuZnJhbWUobW9kZWwscHJvYnRlc3QsdGhyZXNob2xkKQp0aHJlc2hvbGQgPC0gZGNhU1ZNJG5ldC5iZW5lZml0JHRocmVzaG9sZCoxMDAKcHJvYnRlc3QgPC0gZGNhU1ZNJG5ldC5iZW5lZml0JHByb2JzVGVzdFN2bUdyaWRWYWwuWDIKbW9kZWwgPC0gcmVwKCJTVk0iLGxlbmd0aChwcm9idGVzdCkpCmRjYWRhdGEgPC0gcmJpbmQoZGNhZGF0YSwgZGF0YS5mcmFtZShtb2RlbCxwcm9idGVzdCx0aHJlc2hvbGQpKQp0aHJlc2hvbGQgPC0gZGNhUkYkbmV0LmJlbmVmaXQkdGhyZXNob2xkKjEwMApwcm9idGVzdCA8LSBkY2FSRiRuZXQuYmVuZWZpdCRwcm9ic1Rlc3RSZlZhbC5YMgptb2RlbCA8LSByZXAoIlJGIixsZW5ndGgocHJvYnRlc3QpKQpkY2FkYXRhIDwtIHJiaW5kKGRjYWRhdGEsIGRhdGEuZnJhbWUobW9kZWwscHJvYnRlc3QsdGhyZXNob2xkKSkKdGhyZXNob2xkIDwtIGRjYUdCTSRuZXQuYmVuZWZpdCR0aHJlc2hvbGQqMTAwCnByb2J0ZXN0IDwtIGRjYUdCTSRuZXQuYmVuZWZpdCRwcm9ic1Rlc3RHYm1HcmlkVmFsLlgyCm1vZGVsIDwtIHJlcCgiR0JNIixsZW5ndGgocHJvYnRlc3QpKQpkY2FkYXRhIDwtIHJiaW5kKGRjYWRhdGEsIGRhdGEuZnJhbWUobW9kZWwscHJvYnRlc3QsdGhyZXNob2xkKSkKdGhyZXNob2xkIDwtIGRjYUtOTiRuZXQuYmVuZWZpdCR0aHJlc2hvbGQqMTAwCnByb2J0ZXN0IDwtIGRjYUtOTiRuZXQuYmVuZWZpdCRwcm9ic1Rlc3Rrbm5HcmlkVmFsLlgyCm1vZGVsIDwtIHJlcCgiS05OIixsZW5ndGgocHJvYnRlc3QpKQpkY2FkYXRhIDwtIHJiaW5kKGRjYWRhdGEsIGRhdGEuZnJhbWUobW9kZWwscHJvYnRlc3QsdGhyZXNob2xkKSkKdGhyZXNob2xkIDwtIGRjYU5OJG5ldC5iZW5lZml0JHRocmVzaG9sZCoxMDAKcHJvYnRlc3QgPC0gZGNhTk4kbmV0LmJlbmVmaXQkcHJvYnNUZXN0bm5ldEdyaWRWYWwuWDIKbW9kZWwgPC0gcmVwKCJOTiIsbGVuZ3RoKHByb2J0ZXN0KSkKZGNhZGF0YSA8LSByYmluZChkY2FkYXRhLCBkYXRhLmZyYW1lKG1vZGVsLHByb2J0ZXN0LHRocmVzaG9sZCkpCnRocmVzaG9sZCA8LSBkY2FNQVJTJG5ldC5iZW5lZml0JHRocmVzaG9sZCoxMDAKcHJvYnRlc3QgPC0gZGNhTUFSUyRuZXQuYmVuZWZpdCRwcm9ic1Rlc3RtYXJzVmFsLlgyCm1vZGVsIDwtIHJlcCgiTUFSUyIsbGVuZ3RoKHByb2J0ZXN0KSkKZGNhZGF0YSA8LSByYmluZChkY2FkYXRhLCBkYXRhLmZyYW1lKG1vZGVsLHByb2J0ZXN0LHRocmVzaG9sZCkpCnRocmVzaG9sZCA8LSBkY2FNQVJTJG5ldC5iZW5lZml0JHRocmVzaG9sZCoxMDAKcHJvYnRlc3QgPC0gZGNhTUFSUyRuZXQuYmVuZWZpdCRhbGwKbW9kZWwgPC0gcmVwKCJhbGwiLGxlbmd0aChwcm9idGVzdCkpCmRjYWRhdGEgPC0gcmJpbmQoZGNhZGF0YSwgZGF0YS5mcmFtZShtb2RlbCxwcm9idGVzdCx0aHJlc2hvbGQpKQp0aHJlc2hvbGQgPC0gZGNhTUFSUyRuZXQuYmVuZWZpdCR0aHJlc2hvbGQqMTAwCnByb2J0ZXN0IDwtIGRjYU1BUlMkbmV0LmJlbmVmaXQkbm9uZQptb2RlbCA8LSByZXAoIm5vbmUiLGxlbmd0aChwcm9idGVzdCkpCmRjYWRhdGEgPC0gcmJpbmQoZGNhZGF0YSwgZGF0YS5mcmFtZShtb2RlbCxwcm9idGVzdCx0aHJlc2hvbGQpKQoKCmdncGxvdChkY2FkYXRhLCBhZXMoeCA9IHRocmVzaG9sZCwgeSA9IHByb2J0ZXN0LCBncm91cCA9IG1vZGVsLCBsaW5ldHlwZSA9IG1vZGVsLCBjb2xvdXIgPSBtb2RlbCkpICsKICBnZW9tX2xpbmUoKSAgKwogIGNvb3JkX2NhcnRlc2lhbih5bGltID1jKC0wLjI1LDAuMjApKSArCiAgdGhlbWUobGVnZW5kLmtleS53aWR0aCA9IHVuaXQoMS41LCJjbSIpKSArCiAgeGxhYigiUHJvYmFiaWxpdHkgdGhyZXNob2xkIikgKwogIHlsYWIoIk5ldCBiZW5lZml0IikgKwogIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCkpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDAuNywgMC44KSkKZ2dzYXZlKHBhc3RlMCgiZGVjaXNpb25fY3VydmVfYW5hbHlzaXMiLHNhbXBsaW5nLCAiZm9ybXVsYV8iLGFzLmNoYXJhY3Rlcihmb3JtdWxhLm1vZGVsKVszXSwiLnBkZiIpLCB1bml0cyA9ICJpbiIsIGhlaWdodCA9IDYuNSwgd2lkdGggPSA2LjUpCgojY29ycmVsYXRpb24gbWF0cml4IG9mIHByZWRpY3Rpb25zIC0gdmFsaWRhdGlvbiBkYXRhc2V0CnByZWRNYXRyaXhWYWwgPSBkYXRhLmZyYW1lKGRhdGFzZXRfdmFsJHByb2JzVGVzdEdibUdyaWRWYWwuWDIgLGRhdGFzZXRfdmFsJHByb2JzVGVzdFN2bUdyaWRWYWwuWDIsIGRhdGFzZXRfdmFsJHByb2JzVGVzdGtubkdyaWRWYWwuWDIgLCBkYXRhc2V0X3ZhbCRwcm9ic1Rlc3RubmV0R3JpZFZhbC5YMiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRfdmFsJHByb2JzVGVzdFJmVmFsLlgyLCBkYXRhc2V0X3ZhbCRwcm9ic1Rlc3RsZ1ZhbC5YMiwgZGF0YXNldF92YWwkcHJvYnNUZXN0bWFyc1ZhbC5YMikKbmFtZXMocHJlZE1hdHJpeFZhbClbMV0gPC0iR0JNIgpuYW1lcyhwcmVkTWF0cml4VmFsKVsyXSA8LSJTVk0iCm5hbWVzKHByZWRNYXRyaXhWYWwpWzNdIDwtIktOTiIKbmFtZXMocHJlZE1hdHJpeFZhbClbNF0gPC0iTk4iCm5hbWVzKHByZWRNYXRyaXhWYWwpWzVdIDwtIlJGIgpuYW1lcyhwcmVkTWF0cml4VmFsKVs2XSA8LSJMUiIKbmFtZXMocHJlZE1hdHJpeFZhbClbN10gPC0iTFJNQVJTIgoKTVZhbCA9IGNvcihwcmVkTWF0cml4VmFsKQpwZGYocGFzdGUwKCJjb3JycGxvdCIsIHNhbXBsaW5nLCAiZm9ybXVsYV8iLGFzLmNoYXJhY3Rlcihmb3JtdWxhLm1vZGVsKVszXSwiLnBkZiIpKQpjb3JycGxvdChNVmFsLCBtZXRob2Q9Im51bWJlciIsdGwuY2V4ID0gMSkKZGV2Lm9mZigpCgpsaWJyYXJ5KEdHYWxseSkKZ2dwYWlycyhwcmVkTWF0cml4VmFsLGxhYmVsbGVyID0gImxhYmVsX3BhcnNlZCIsIGF4aXNMYWJlbHMgPSAibm9uZSIpCmdnc2F2ZShwYXN0ZTAoImNvcnJwbG90X3NjYXR0ZXIiLCBzYW1wbGluZywgImZvcm11bGFfIixhcy5jaGFyYWN0ZXIoZm9ybXVsYS5tb2RlbClbM10sIi5wZGYiKSx1bml0cyA9ICJpbiIsaGVpZ2h0ID0gOSwgd2lkdGggPSA5KQojY3JlYXRlIGEgdmFyaWFibGUgaW1wb3J0YW5jZSBkYXRhZnJhbWUjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFN2bSBhbmQgS05OIGRvIG5vdCBoYXZlIGJ1aWx0LWluIHZhcmlhYmxlIGltcG9ydGFuY2Ugc2NvcmUKTW9kZWwgPSBjKCdMb2dpc3RpYyBSZWdyZXNzaW9uJywnU3RvY2hhc3RpYyBHcmFkaWVudCBCb29zdGluZycsICdOZXVyYWwgTmV0d29yaycsICdSYW5kb20gRm9yZXN0JywgJ0dMTSBNQVJTJykKIyBjYWxjdWxhdGUgdGhlIHZhcmlhYmxlIGltcG9ydGFuY2Ugc2NvcmVzCiMgdmFySW1wIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSB2YXJpYWJsZSBpbXBvcnRhbmNlCkxHSW1wIDwtIHZhckltcChtb2RlbExHX0NDX0dBREEsIHNjYWxlID0gRkFMU0UpCkxHSW1wCgpnbWJJbXAgPC0gdmFySW1wKG1vZGVsR2JtX0NDX0dBREFfTHIsIHNjYWxlID0gRkFMU0UpCmdtYkltcAoKbm5ldEltcCA8LSB2YXJJbXAobW9kZWxubmV0X0NDX0dBREFfTHIsIHNjYWxlID0gRkFMU0UpCm5uZXRJbXAKCnJmSW1wIDwtIHZhckltcChtb2RlbFJmX0NDX0dBREEsIHNjYWxlID0gRkFMU0UpCnJmSW1wCgpNYXJzSW1wIDwtIHZhckltcChtb2RlbE1BUlNfQ0NfR0FEQV9Mciwgc2NhbGUgPSBGQUxTRSkKTWFyc0ltcAoKCgppbXBkYXRhIDwtIGRhdGEuZnJhbWUoTEcgPSBMR0ltcCRpbXBvcnRhbmNlLEdCTSA9IGdtYkltcCRpbXBvcnRhbmNlLCBOTkVUID0gbm5ldEltcCRpbXBvcnRhbmNlLExHTUFSUyA9IE1hcnNJbXAkaW1wb3J0YW5jZSkKaW1wZGF0YSA8LSBjYmluZChyb3duYW1lcyhpbXBkYXRhKSxpbXBkYXRhKQpuYW1lcyhpbXBkYXRhKSA8LSBjKCJ2YXJpYWJsZXMiLCJMUiIsIkdCTSIsIk5ORVQiLCJMR01BUlMiKQppbXBkYXRhIDwtIGltcGRhdGEgJT4lIGdhdGhlcihtb2RlbHMsdmFsdWVzLCAtdmFyaWFibGVzKSAlPiUKICBkcGx5cjo6Z3JvdXBfYnkobW9kZWxzKSAlPiUgCiAgZHBseXI6Om11dGF0ZSh2YWx1ZXMgPXZhbHVlcy9zdW0odmFsdWVzKSAqIDEwMCkgJT4lIAogIGRwbHlyOjp1bmdyb3VwKCkKCmdncGxvdChpbXBkYXRhLGFlcyh4ID0gdmFyaWFibGVzLCB5ID0gdmFsdWVzKSkgKwogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5Iix3aWR0aD0wLjA2KSArCiAgY29vcmRfZmxpcCgpKyB5bGFiKCJTY2FsZWQgdmFyaWFibGUgaW1wb3J0YW5jZSBzY29yZSIpICsKICB4bGFiKCIiKSArIAogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsIDApKSArCiAgdGhlbWUoYXhpcy50ZXh0LnkgPSBlbGVtZW50X2JsYW5rKCksYXhpcy50aWNrcy55ID0gZWxlbWVudF9ibGFuaygpKSArIAogIGZhY2V0X2dyaWQobW9kZWxzfi4pCgpnZ3NhdmUocGFzdGUwKCJwYXJhbWV0ZXJzX2ltcG9ydGFuY2UiLCBzYW1wbGluZywgImZvcm11bGFfIixhcy5jaGFyYWN0ZXIoZm9ybXVsYS5tb2RlbClbM10sIi5wZGYiKSkKI2J1aWxkIHRoZSBERiB3aXRoIHRoZSBzY2FsZWQgdmFyaWFibGUgaW1wb3J0YW5jZSBzY29yZXMKI2RpdmlkZSBlYWNoIHZhcmlhYmxlIGltcG9ydGFuY2Ugc2NvcmVzIGJ5IG1heCB0byBzY2FsZQojIFlvdXJjb3ZhcmlhdGUxID0gYygxLjAwLDAuOTksMC40MywwLjk3KQojIFlvdXJjb3ZhcmlhdGUyID0gYygwLjczLCAwLjUzLCAwLjY1LCAxLjAwKQojIFlvdXJjb3ZhcmlhdGUzID0gYygwLjk5LDEuMDAsMS4wMCwgMC45MSkKIyB2YXJJbXBERiA9IGRhdGEuZnJhbWUoTW9kZWwsWW91cmNvdmFyaWF0ZTEsWW91cmNvdmFyaWF0ZTIsWW91cmNvdmFyaWF0ZTMpCiMgCiMgI2J1aWxkIHRoZSBwbG90cyBvZiB0aGUgdmFyaWFibGUgaW1wb3J0YW5jZSByYW5rcwojIHBsb3RWYXJJbXAxID0gZ2dwbG90KGRhdGEgPSB2YXJJbXBERiwgYWVzKHggPSBNb2RlbCwgeSA9IHZhckltcERGJFlvdXJjb3ZhcmlhdGUxKSkrZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiLHdpZHRoPTAuMDYpKyBjb29yZF9mbGlwKCkrIHlsYWIoIlNjYWxlZCB2YXJpYWJsZSBpbXBvcnRhbmNlIHNjb3JlIikrCiMgICB4bGFiKCIiKSArIGdndGl0bGUoIllvdXIgY292YXJpYXRlIDEiKSArIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsIDApKSArdGhlbWUoYXhpcy50ZXh0LnkgPSBlbGVtZW50X2JsYW5rKCksYXhpcy50aWNrcy55ID0gZWxlbWVudF9ibGFuaygpICkKIyAKIyBwbG90VmFySW1wMiA9IGdncGxvdChkYXRhID0gdmFySW1wREYsIGFlcyh4ID0gTW9kZWwsIHkgPSB2YXJJbXBERiRZb3VyY292YXJpYXRlMikpK2dlb21fYmFyKHN0YXQ9ImlkZW50aXR5Iix3aWR0aD0wLjA2KSsgY29vcmRfZmxpcCgpKyB5bGFiKCJTY2FsZWQgdmFyaWFibGUgaW1wb3J0YW5jZSBzY29yZSIpKwojICAgeGxhYigiIikgKyBnZ3RpdGxlKCJZb3VyIGNvdmFyaWF0ZSAyIikgKyBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSkgK3RoZW1lKGF4aXMudGV4dC55ID0gZWxlbWVudF9ibGFuaygpLGF4aXMudGlja3MueSA9IGVsZW1lbnRfYmxhbmsoKSApCiMgCiMgcGxvdFZhckltcDMgPSBnZ3Bsb3QoZGF0YSA9IHZhckltcERGLCBhZXMoeCA9IE1vZGVsLCB5ID0gdmFySW1wREYkWW91cmNvdmFyaWF0ZTMpKStnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsd2lkdGg9MC4wNikrIGNvb3JkX2ZsaXAoKSsgeWxhYigiU2NhbGVkIHZhcmlhYmxlIGltcG9ydGFuY2Ugc2NvcmUiKSsKIyAgIHhsYWIoIiIpICsgZ2d0aXRsZSgiWW91ciBjb3ZhcmlhdGUgMyIpICsgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwgMCkpICt0aGVtZShheGlzLnRleHQueSA9IGVsZW1lbnRfYmxhbmsoKSxheGlzLnRpY2tzLnkgPSBlbGVtZW50X2JsYW5rKCkgKQojIAojIHBsb3RWYXJJbXAzID0gZ2dwbG90KGRhdGEgPSB2YXJJbXBERiwgYWVzKHggPSBNb2RlbCwgeSA9IHZhckltcERGJFlvdXJjb3ZhcmlhdGUzKSkrZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiLHdpZHRoPTAuMDYpKyBjb29yZF9mbGlwKCkrIHlsYWIoIlNjYWxlZCB2YXJpYWJsZSBpbXBvcnRhbmNlIHNjb3JlIikrCiMgICB4bGFiKCIiKSArIGdndGl0bGUoIllvdXIgY292YXJpYXRlIDMiKSArIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsIDApKSArdGhlbWUoYXhpcy50ZXh0LnkgPSBlbGVtZW50X2JsYW5rKCksYXhpcy50aWNrcy55ID0gZWxlbWVudF9ibGFuaygpICkKIyAKIyAjcGxvdCB0aGUgY2hhcnRzIG9uIG9uZSByb3cKIyBwYXIobWZyb3c9YygxLDMpKQojIHBsb3QocGxvdFZhckltcDEpIAojIHBsb3QocGxvdFZhckltcDIpIAojIHBsb3QocGxvdFZhckltcDMpCiMgZ3JpZC5hcnJhbmdlKHBsb3RWYXJJbXAxLCBwbG90VmFySW1wMiwgcGxvdFZhckltcDMsbmNvbCA9IDMpCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgNSAtIHNhdmUgdGhlIG9iamVjdHMgZm9yIGZ1dHVyZSB1c2UKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzYXZlKGRhdGFfdHJhaW4sZGF0YXNldF92YWwsVmFsUmVzdWx0cyxjb250cm9sLG1vZGVsTEdfQ0NfR0FEQSwgbW9kZWxSZl9DQ19HQURBLCBtb2RlbFN2bV9DQ19HQURBX0xyLCBtb2RlbEdibV9DQ19HQURBX0xyLCAKICAgICBtb2RlbG5uZXRfQ0NfR0FEQV9Mcixtb2RlbGtubl9DQ19HQURBX0xyLGltcGRhdGEsIHJlc3VsdHNfZ3JpZF9DQ19HQURBLGdtYkltcCwgcmZJbXAsIG5uZXRJbXAsZGF0YXNldF92YWxfMTAsIAogICAgIGZpbGUgPSBwYXN0ZTAoInJlc3VsdHNfc2FtcGxpbmciLCBzYW1wbGluZywgImZvcm11bGFfIixhcy5jaGFyYWN0ZXIoZm9ybXVsYS5tb2RlbClbM10sIi5SZGF0YSIpKQoKCgoKCgoKCg==